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

for循环例题专题


一、语法

for 循环用于"已知大概循环次数"的重复任务。

基本语法:

cpp 复制代码
for (初始语句; 条件表达式; 变化语句) {
    循环体;
}

示例:输出 1 到 5

cpp 复制代码
for (int i = 1; i <= 5; i++) {
    cout << i << " ";
}

执行过程:

  1. 先执行 int i = 1(只执行一次);
  2. 判断 i <= 5,成立就进入循环体;
  3. 循环体执行后,执行 i++;
  4. 再次判断条件,直到条件不成立。

初学者注意点

  1. 循环变量初始化、条件、步进要互相匹配。
  2. 小心边界:< n 和 <= n 含义不同。
  3. 图形题常见规律是"第 i 行输出多少个字符"。

二、例题详解

例题1:数字直角三角形

题目描述

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

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

输入格式

输入一个正整数 n。

输出格式

按题意输出数字直角三角形。

数据范围

1 <= n <= 13。

输入输出样例

输入:

text 复制代码
5

输出:

text 复制代码
0102030405
06070809
101112
1314
15

思路讲解

这题每一行输出的数字个数在减少:

  • 第 1 行输出 n 个;
  • 第 2 行输出 n-1 个;
  • ...

所以可以把"行号"作为 for 循环变量,设为 i。

再用第二层循环控制每行输出数量。

同时用 idx 记录当前要输出的数字,并在每次输出后 idx++。

参考代码

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+2+3+...+n 的值。

输入格式

输入一个正整数 n。

输出格式

输出一个整数,表示 1 到 n 的和。

输入输出样例

输入:

text 复制代码
100

输出:

text 复制代码
5050

思路讲解

这题是 for 的标准入门题。

定义累加变量 s=0,然后让循环变量 i 从 1 走到 n,每次把 i 加到 s 里:

  • 第 1 轮:s += 1
  • 第 2 轮:s += 2
  • ...
  • 第 n 轮:s += n

循环结束后输出 s 即可。

参考代码

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

int main() {
  int n;
  cin >> n;
  int s = 0;
  for (int i = 1; i <= n; i++) {
    s += i;
  }
  cout << s;
  return 0;
}

相关推荐
郭小李6 分钟前
mybatis 动态 sql
java·sql·mybatis
Tisfy6 分钟前
LeetCode 0453.最小操作次数使数组元素相等:两次遍历(反向思维)
算法·leetcode·题解·遍历·反向思维
瑞码空间12 分钟前
JSP与Servlet核心开发与CRUD实战笔记
java·笔记·servlet·jsp
知守观18 分钟前
技术考古:iBATIS 2.3.4 时代的持久层,是如何用 Map 玩转 307 个存储过程的?
java·后端·mybatis
君万19 分钟前
【LeetCode每日一题】回溯:46. 全排列 78. 子集 39. 组合总和
算法·leetcode·go
Keep_Trying_Go1 小时前
Consistent-Point半监督人群计数算法详解
人工智能·深度学习·算法·计算机视觉·人群计数
captain3761 小时前
MyBatis Plus(1)
java·服务器·mybatis
在所不辞兄1 小时前
【零基础学智能仿真-69】综合项目——材料参数驱动的仿真研究
人工智能·深度学习·神经网络·算法·机器学习·1024程序员节
香蕉大香蕉(06敬畏市场)2 小时前
MySQL 单点详解(08)
java·数据库·mysql·面试·八股
thefool1122662 小时前
HTTPS协议
java