【C++】for循环嵌套例题专题

for循环嵌套例题专题


一、语法

当"重复里面还有重复"时,就要用循环嵌套。

基本结构:

cpp 复制代码
for (int i = 0; i < 行数; i++) {
    for (int j = 0; j < 列数; j++) {
        // 每个位置要做的事
    }
    cout << endl; // 一行结束后换行
}

理解方式:

  • 外层 i:控制行数,第几行;
  • 内层 j:控制列数,输出当前这一行里面都有些什么。

二、例题详解

例题1:数字直角三角形

题目描述

给出 n,输出一个直角边长度为 n 的数字直角三角形。

所有数字都要按 2 位输出,不足 2 位前导补 0

输入格式

一个正整数 n

输出格式

按题意输出图形。

输入输出样例

输入:

text 复制代码
5

输出:

text 复制代码
0102030405
06070809
101112
1314
15

思路讲解

  1. 首先我们分析一共有多少行,外层循环控制行数,共 n 行,所以我们需要一个变量来控制行数,这里我们使用变量 i
  2. 然后我们分析每一行要输出多少个数字,第 i 行要输出 n-i 个数字,所以内层循环写成 j < n - i
  3. 最后我们使用变量 idx 来维护当前数字,保证每输出一次就加 1。

参考代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int n;
int main() {
  cin >> n;
  int idx = 1;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n - i; j++) {
      if (idx < 10) {
        cout << '0' << idx;
      } else {
        cout << idx;
      }
      idx++;
    }
    cout << endl;
  }
  return 0;
}

例题2:最长连号

题目描述

给定长度为 n 的整数序列,求其中最长的"连续递增 1"子段长度。

例如连续段满足后一个数等于前一个数加 1

输入格式

第一行输入一个整数 n

第二行输入 n 个整数,表示序列。

输出格式

输出一个整数,表示最长连号的长度。

输入输出样例

输入:

text 复制代码
10
1 5 6 2 3 4 5 6 8 9

输出:

text 复制代码
5

思路讲解

  1. cur 记录"当前连续段长度",ans 记录"历史最大长度";
  2. 每次读入新数字 x,判断是否满足 x == 上一个数 + 1
  3. 满足则 cur++,否则重置 cur=1
  4. 每轮都更新一次 ans

参考代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
  int n;
  cin >> n;

  int ans = 1;
  int cur = 1;
  int x, x2;

  cin >> x2;
  for (int i = 1; i < n; i++) {
    cin >> x;
    if (x == x2 + 1) {
      cur++;
      if (cur > ans) {
        ans = cur;
      }
    } else {
      cur = 1;
    }
    x2 = x;
  }

  cout << ans << endl;

  return 0;
}
相关推荐
云絮.3 小时前
数据库操作
数据库·mysql·算法·oracle
许彰午3 小时前
30_Java Stream流操作全解
java·windows·python
小林ixn3 小时前
LeetCode 206. 反转链表(迭代 + 递归详解)
算法·leetcode·链表
qq_2518364573 小时前
基于java Web网络订餐系统设计与实现 源码文档
java·开发语言·前端
凡人叶枫4 小时前
Effective C++ 条款17:以独立语句将 newed 对象置入智能指针
java·linux·开发语言·c++·算法
飞天狗1114 小时前
零基础JavaWeb入门——第2课:让网页“活”起来 —— JSP是什么?
java·开发语言·前端·后端·web
梦@_@境4 小时前
面向 Spring Boot 的可观测业务流程编排引擎
java·spring boot·后端
云烟成雨TD4 小时前
Spring AI Alibaba 1.x 系列【77】执行取消
java·人工智能·spring
醇氧5 小时前
【Linux】Java 服务生产级部署指南:实现常驻后台、开机自启与系统服务化管理
java·开发语言
凡人叶枫5 小时前
Effective C++ 条款16:成对使用 new 和 delete 时要采取相同形式
开发语言·c++·effective c++