【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;
}
相关推荐
Mr.Java.几秒前
Spring AI MCP Server分布式翻车现场:Streamable协议的甜蜜与危险,以及无状态救赎
java·后端·spring·ai·负载均衡
夕除几秒前
spring boot 11
java·spring boot·后端
sali-tec几秒前
C# 基于OpenCv的视觉工作流-章76-轮廓-段距
图像处理·人工智能·opencv·算法·计算机视觉
水木流年追梦2 分钟前
大模型入门-RL基础
开发语言·python·算法·leetcode·正则表达式
TechPioneer_lp2 分钟前
就业指导|中九非科班毕业,华为 OD 做 Java 后端想转 C++,能找到深度学习挂钩的岗工作吗?
java·c++·华为od·华为·就业指导·校招指导
枕星而眠4 分钟前
C++ String类精讲:从基础用法到进阶底层原理
开发语言·c++·后端·学习方法
江屿风5 分钟前
【C++笔记】模板初阶流食般投喂
开发语言·c++·笔记
Shadow(⊙o⊙)6 分钟前
qt信号和槽链接的接入与断开
开发语言·前端·c++·qt·学习
Dicky-_-zhang8 分钟前
分布式ID生成方案详解与实战
java·jvm
m0_474606789 分钟前
JAVA - 使用Apache POI 自定义报表字段手写导出(支持-合并单元格)
java·开发语言·apache