LESSON_2级_09_多层循环1(课件)

2025-07-10
| 33页
| 42人阅读
| 0人下载
普通

内容正文:

CCF-GESP C++二级 CCF-GESP C++二级 编程能力等级认证 1 多层循环1 多层循环1 第九课 本次课学习的内容为多层循环 2 多层循环的嵌套 01 01 首先我们来学习多层循环的嵌套 3 循环的嵌套 循环体里包含循环语句的结构叫做循环的嵌套     for(int i=1; i<=3; i++){         for(int j=1; j<=2; j++){             cout<<i<<" "<<j<<endl;          }         } 外层循环 内层循环 双层for循环的嵌套 知识讲解 在我们要解决的问题比较复杂的情况下,使用简单的循环可能无法解决实际的问题,这个时候可能就会用到多层循环的嵌套。循环的语句可以嵌套,循环体里包含循环语句的结构叫做循环的嵌套。例如:现在展示的代码,就是一个外层for循环中又包含了另外一个for循环,我们一般称其为双层for循环的嵌套。我们将嵌套在循环体内的循环称为内层循环,外面的循环则称为外层循环。现在展示的这个双层for循环,它的执行流程是怎样的呢? 4 双层for循环嵌套的执行流程 for(int i=1; i<=3; i++){     for(int j=1; j<=2; j++){        cout<<i<<" "<<j<<endl;      }     } 开始 int i=1 i<=3? 是 int j=1 j<=2? 输出 i 和 j 的值 j++ i++ 否 是 输出 1 1 1 2 2 1 2 2 3 1 3 2 循环次数:3×2=6 结束 否 知识讲解 下面来分析双层for循环的执行流程: 程序一开始,先执行外层循环,循环变量i的初始值为1,之后判断循环条件i<=3是否成立,成立则执行该循环的循环体,此时进入内层循环,循环变量j的初始值为1,之后判断循环条件j<=2是否成立,成立则输出i和j的值,分别是1和1。再继续执行j++,j的值变为2。继续判断j<=2是否成立,成立则继续输出i和j,之后令j++,j的值变为3。此时j<=2不成立,内层循环结束,回到外层循环,令i++,i的值变为2,继续判断i<=3是否成立,成立则执行循环体,又进入内层循环....重复上面的步骤,直到i<=3不成立,此时整个程序结束。 思考一下:这个双层for循环,一共循环了多少次呢?很检查,可以查看输出了多少次,一共输出了6次。如果计算出6次呢,我们可以使用外层循环次数×内层循环次数,也就是3×2,计算的结果为6。 5 双层循环嵌套的几种形式 for while do while for for( ){ for( ){ } } while( ){ for( ){ } } do{ for( ){ } }while( ) while for( ){ while( ){ } } while( ){ while( ){ } } do{ while( ){ } }while( ) do while for( ){ do{ }while( ) } while( ){ do{ }while( ) } do{ do{ }while( ) }while( ) 知识讲解 目前我们学习了三种循环的语句:for语句、while语句和do...while语句,这三种循环语句不但可以嵌套循环语句自身,而且还可以相互嵌套。它们可以可以互相嵌套自由组合。例如:for循环中可以嵌套for循环,while循环和do while循环。while循环中也能嵌套for循环,while循环,do while循环。do while循环中也可以嵌套for循环,while循环或者do while循环。当我们解决问题用到嵌套结构时,可以结合实际情况进行选择。 6 判断题 下列程序中,语句1执行了5次,语句2执行了6次。 正确 错误 int i=5,j=0; for(; i>=0; i--){     cout<<'*';     for(; j<=6; j++){         cout<<'#';     } } 语句1 语句2 课堂练习 解析:外层for循环i的初始值为5,循环条件为i>=0,循环步伐为i--,因此外层循环的循环次数为6次。语句1执行了6次。内层for循环j的初始值为0,循环条件为j<=6,循环步伐为j++。因此外层循环的循环次数为7次,语句2执行了7次。因此题目中的说法是错误的。 7 选择题 以下程序段中循环体的总次数是( )。 20 25 24 30 A for(int i=1; i<=5; i++){     for(int j=1; j<=4; j++){            cout<<i+j;     } } 课堂练习 解析:外层循环,循环的次数为5次,内层循环,循环的次数为4次,循环体的总的执行次数:外层循环次数×内层循环次数,共为20次。因此本题应该选择A选项。 8 多层循环嵌套输出图形 02 02 刚才我们学习了循环的嵌套,现在我们来了解一下多层循环嵌套主要的一个应用:输出图形。 9 输出n行m列矩形 ***** ***** ***** 3行5列矩阵 //外层循环 for(int i=1; i<=3; i++){ //内层循环     for(int j=1; j<=5; j++){         cout<<"*";     }     cout<<endl; } 控制列 控制行 知识讲解 我们经常会使用循环嵌套输出一些多行多列的图形,比较常见的就是输出一个多行多列的矩形: 这里我们先来看如何使用循环嵌套输出n行m列的矩形。例如:使用双层for循环输出如下3行5列,由*组成的矩形。我们首先可以先利用一个for循环输出一行的5个星号,就是循环5次,每次输出一个星号。之后添加一个换行,与其他行进行分隔。矩形由三行组成,因此可以将该for循环和输出换行的代码重复执行3次,也就是将他们在放入另外一个for循环中,将该循环的循环次数设置为3次。这样就可以利用双层for循环输出n行m列的矩形了。 我们来分析一下这个双层for循环,其中循环体中的for循环为内层for循环,循环次数为5次,代表5列,外部的循环是外层for循环,循环次数为3次,代表3行。我们会发现,外层循环控制的是矩形的行,内层循环控制的是矩形的列。这就是输出n行m列矩阵的代码模版。现在我们是以输出n行m列由*组成的矩形为例,之后还可能遇到一些输出数字矩形,字母矩形的问题等等,当遇到此类问题的时候将输出的内容替换成数字或者字母就可以了。 10 输出n行直角三角形 * ** *** **** ***** //外层循环 for(int i=1; i<=5; i++){ //内层循环     for(int j=1; j<=i; j++){         cout<<"*";     }     cout<<endl; } 5行 直角三角形 控制行 控制列 i 和 j 相关联!!! 知识讲解 除了输出矩形之外,我们还会经常遇到输出三角形的问题。 输出三角形和输出矩形的问题类似,都是多行多列的图形。这里以输出5行直角三角形为例,因此我们依旧可以使用双层for循环解决这个问题,外层循环控制行,内层循环控制列。这个三角形为5行,因此外层循环应该循环5次。因此外层循环的条件是i<=5。我们需要思考的是内层循环应该怎么写。想要解决这个问题需要找到行列之间的关系。行列之间的关系就是j的值小于等于i。 例如:第一行有1个星号,j的计数范围就是1~1也就是1,第二行有两个,j的计数范围就是1~2;第三行有三个,j的计数范围就是1~3;第四行是4个,j的计数范围就是1~4;第5行是5个,j的计数范围就是1~5。j的值从1开始,结束的值刚好跟对应的i值相等。因此j的范围应该是1~i。因此内层循环,循环的条件应该为j<=i。这就是输出n行直角三角形的代码模版。除了输出符号组成的三角形之外,题目还可能会要求输出数字三角形,字母三角形等。遇到这类要求的时候,也是将输出的内容进行替换就可以了。 11 输出n行等腰直角三角形 等腰三角形 * *** ***** ******* ********* 5行 for(int i=1; i<=5; i++){     for(int j=1; j<=5-i; j++)         cout<<' ';     for(int k=1; k<=2*i-1; k++)         cout<<"*";     cout<<endl; } 控制行 控制列 输出空格 输出星号 知识讲解 除了输出直角三角形之外,我们还可以使用双层for循环输出等腰三角形: 这里以输出5行等腰三角形为例,依然是外层循环控制行,内层循环控制列。这个三角形为5行,因此外层循环应该循环5次。因此外层循环的条件是i<=5。我们需要思考的是内层循环应该怎么写。 等腰三角形的每一行分两部分输出,一部分输出空格,另外一部分输出星号,因此内层需要写2个for循环,第一个for循环先输出空格,第二个for循环紧接着输出星号。输出空格。先分析第一个for循环,输出空格,循环的次数就是输出空格的个数。第一行输出4个,第二行输出3个,第三行输出2个,第四行输出1个,最后一行不输出空格。所以每行输出空格的个数就是5-i。因此第一个for循环的循环次数就是5-i。第二个for循环控制星号,第一行1个星号,第二行3个,第三行5个,第四行7个,第五行9个,所以每行输出的星号的个数就是2*i-1。因此第二个for循环的循环次数就是2*i-1。我们需要将等腰三角形呈行列形式呈现,因此需要在内层for循环执行完成之后,输出endl进行换行。 这就是输出n行等腰三角形的代码模版。可以将输出内容替换成数字或者字母,形成数字三角形或者字母三角形。 12 选择题 (2023年9月)如下图所示,输出 N 行 N 列的矩阵,对角线为1, 横线处应填入( )。 int N=0; cout<<"请输入行列数量:"; cin>>N; for(int i=1; i<N+1; i++){     for(int j=1; j<N+1; j++)         if(_______)//在此处填写代码             cout<<1<<" ";         else              cout<<0<<" ";     cout<<endl; } i=j i!=j i>=j i==j D 请输入行列数量:9 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 真题解析 解析:目前该题目中要求数字1全部在主对角线上。主对角线上的数字,行号和列号相同。因此if语句的判断条件就是行号和列号是否相等,如果相等,输出1,否则输出0。外层循环控制行,循环变量i代表行号,内层循环控制列,循环变量j代表列号,循环条件即为:i==j。因此本题正确的选项为D。 13 题目解析 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 主对角线 1 2 3 4 5 1 2 3 4 5 主对角线上的元素位置:i==j 行(i) 列(j) 主对角线:连接左上角和右下角的一条线。 5行5列矩阵: int N=0; cout<<"请输入行列数量:"; cin>>N; for(int i=1; i<N+1; i++){     for(int j=1; j<N+1; j++)         if(____________)//在此处填写代码             cout<<1<<" ";         else              cout<<0<<" ";     cout<<endl; } i==j 真题解析 这道题目涉及到了N行N列矩阵主对角线的问题,我们来详细讲解一下有关于n行n列矩阵主对角线的问题: 连接N行N列矩阵左上角到右下角的一条线叫作主对角线,观察主对角线上的每个数字的位置:1行1列,2行2列,3行3列....,这些的元素的位置都有一个特点,就是行号与列号相同。因此主对角线上的元素都满足行号等于列号。本题当中,i代表行号,j代表列号,因此在主对角线上的元素位置满足i==j这个条件。题目要求:在主对角线上输出的数字为1,因此当判断i==j条件成立时,输出1,否则输出0。所以横线处的代码应该填写为i==j,所以本题的正确答案为D。 14 选择题 (2023年9月)下面图形每一行从字母A开始,以ABC方式重复。行数为输入的整数。请在C++代码段横线处填入合适代码( )。 'A' + j/3 (char)('A'+j/3) 'A'+j%3 (char)('A'+j%3) int N=0; cout<<"请输入行列数量:"; cin>>N; for(int i=1; i<N+1; i++){     for(int j=0; j<i; j++)         cout<<_________; //此处填写代码     cout<<endl; } 请输入字母行数:7 A AB ABC ABCA ABCAB ABCABC ABCABCA D 真题解析 本题的正确选项为D,详见下一页题目解析。 15 题目解析 for(int i=1; i<N+1; i++){     for(int j=0; j<i; j++)         cout<<____________________; //此处填写代码     cout<<endl; } A A B A B C A B C A A B C A B A B C A B C A B C A B C A 0 1 2 3 4 5 6 循环变量j 输出字母 0 'A' 1 'B' 2 'C' 3 'A' 4 'B' 5 'C' 6 'A' 7 ... 'A'+0 'A'+1 'A'+2 'A'+0 'A'+1 'A'+2 'A'+0 ... 'A'+j%3 整数 (char)('A'+j%3) 字符 7行 j%3 真题解析 题目分析: 首先观察这个双层for循环,想要输出的是一个字母组成的直角三角形,外层循环遍历行,从第1行~N行,内层循环遍历列,注意循环变量j的值是从0开始的,也就是列号是从0开始。 举例:以一个7行的直角三角形为例,列号从0开始。我们会发现每列输出的内容都是相同的。第0列输出内容均为A,第1列输出的内容都是B,第2列输出的内容都是C,第三列输出的内容又全都是A,依次类推... 不断重复输出ABC。如何实现循环输出呢?A可以直接输出,B可以令A+1,C则令A+2...不断重复这个过程,每次A加的数字可以使用j%3来表示。因此我们可以使用A+j%3表示当前要输出的字母。但是字母和整数做运算,得到的结果还是整数。所以我们需要使用char()将计算出来的整数转为字符。 16 总结规律 当字母到C之后,重新从A开始:A B C A B C A B C 当字母到L之后,重新从A开始:A B C D E F G H I J K L A B C... 当字母到Z之后,重新从A开始:A B C D E F G H I ... Y Z A B C … cout<<'A'+j%3<<" "; cout<< 'A'+j%12<<" "; cout<< 'A'+j%26<<" "; 真题解析 总结规律 17 选择题 (2023年9月)输入行数,约定1≤lineCount≤9,输出以下图形。应在C++代码横线处填入( )。 (lineCount - i - 1) * 2 (lineCount - i) * 2 lineCount - i – 1 lineCount - i int lineCount=0; cout<<"请输入行数量:"; cin>>lineCount; for(int i=0; i<lineCount; i++){     for(int j=0; j<_________; j++)         cout<<' ';     for(int j=1; j<i+1; j++)         cout<<j<<" ";     for(int j=i+1; j>0; j--)         cout<<j<<" ";     cout<<endl; } 请输入行数量:9 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2 1 1 2 3 4 5 6 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 A 真题解析 本题的正确选项为A,详见下一页题目解析。 18 题目解析 int lineCount=0; cout<<"请输入行数量:"; cin>>lineCount; for(int i=0; i<lineCount; i++){     for(int j=0; j<_________; j++)         cout<<' ';     for(int j=1; j<i+1; j++)         cout<<j<<" ";     for(int j=i+1; j>0; j--)         cout<<j<<" ";     cout<<endl; } 输出左侧的空格 输出数字和数字之间的空格 lineCount=5 i=0 i=1 i=2 i=3 i=4 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 j<8 j<6 j<4 j<2 j<0 第一个内层循环的条件: 循环次数=空格数 真题解析 题目解析: 首先观察这个程序,多层循环嵌套,输出一个数字三角形。外层for循环一定是控制行,内层for循环控制每列输出。我们通过观察可以发现,这三个内层for循环输出的内容不同,第一个for循环输出的内容为空格,这就是数字三角形左侧的空格。它的循环次数就是左侧输出的空格数。第二个和第三个三角形输出的都是变量j的值和一个空格,也就是输出数字和数字之间的空格。题目挖空的位置是第一个for循环的循环条件。这个循环控制的就是输出空格的个数。因此我们来分析,每行输出多少个空格。输出左侧空格的循环条件是什么? 例如:当lineCount=5时,我们应该输出如下数字三角形,注意外层循环和循环变量都是从0开始的。这里我从最后一行开始分析,这行数字顶头,所需要输出空格,所以输出左侧空格循环肯定是不执行的,这个循环的循环变量j=0,所以可以将循环条件写成j<0。继续分析上面一行,i=3,此时左侧需要输出两个空格。因此循环的条件应该是j<2,循环2次,每次输出一个空格。继续分析当i=2的时候应该输出4个空格,循环条件应该是j<4。当i=1的时候,需要输出6个空格,循环条件是j<6。当i=0的时候,左侧应该输出8个空格,循环条件为j<8。 19 题目解析 i 第一个内层循环的条件 0 j<8 1 j<6 2 j<4 3 j<2 4 j<0 A.(lineCount-i-1)*2 B.(lineCount- i)*2 C.lineCount-i–1 D.lineCount-i 8 6 4 2 0 10 8 6 4 2 4 3 2 1 0 5 4 3 2 1 lineCount=5 分析四个选项,带入具体数值: for(int j=0; j<_______; j++)         cout<<' '; 真题解析 题目分析: 我们现在就可以罗列出四个选项,已知当前举例子的lineCount=5,我们可以计算当i取不同值的时候,哪个选项满足第一个内层循环的条件。我们会发现选项A是完全满足的。 20 选择题 (2023年9月)下面C++代码执行后的输出是( )。 16 B. 28 C. 35 D. 36 A int cnt=0; for(int i=1; i<9; i++)     for(int j=1; j<i; j+=2)         cnt+=1; cout<<cnt; 真题解析 本题的正确选项为A,详见下一页题目解析。 21 题目解析 int cnt=0; for(int i=1; i<9; i++)     for(int j=1; j<i; j+=2)         cnt+=1; cout<<cnt; i j 1 2 1 3 1 4 1、3 5 1、3 6 1、3、5 7 1、3、5 8 1、3、5、7 循环总次数:16 统计循环总次数 真题解析 题目解析: 我们来分析一下这个程序的执行流程。当外层循环i=1时,内层循环的循环条件为j<1,此时循环条件不成立,不执行内层循环。当外层循环i=2时,内层循环的值可以取1,此时cnt的值为1。当外层循环i=3时,内层循环j的取值为1,执行到这cnt的值为2。逐一分析,直到程序执行结束,cnt的值为16。 22 (2023年9月)小杨的X矩阵 【问题描述】 小杨想要构造一个N×N的 X 字矩阵(N为奇数),这个矩阵的两条对角线都是半角加号 + ,其余都是半角减号 - 。例如,一个5×5 的 X 字矩阵如下: +---+ -+-+- --+-- -+-+- +---+ 请你帮小杨根据给定的N打印出对应的“X 字矩阵”。 【输入描述】 一行一个整数N(5≤N≤49,保证N为奇数)。 【输出描述】 输出对应的“X 字矩阵”。 请严格按格式要求输出,不要擅自添加空格、标点、空行等任何符号。你应该恰好输出N行,每行除了换行符外恰好包含N个字符,这些字符要么是 + ,要么是 - 。 真题解析 讲师分析题目,注意强调N为奇数。 23 思路分析 【输入样例1】 5 【输出样例1】 +---+ -+-+- --+-- -+-+- +---+ 【输入样例2】 7 【输出样例2】 +-----+ -+---+- --+-+-- ---+--- --+-+-- -+---+- +-----+ 副对角线 主对角线 副对角线 主对角线 真题解析 分析样例数据。 24 思路分析 输入矩阵的行列数n。 int n; cin >> n; 循环输出n*n矩阵。     for (int i=1; i<=n; i++) {         for (int j=1; j<=n; j++) {         }         cout << endl;     } 主对角线和副对角线上输出'+' 其余输出'-' +---+ -+-+- --+-- -+-+- +---+ 副对角线 主对角线 真题解析 题目分析: 1、输入矩阵的行列输保存在变量n中 2、循环输出n×n矩阵,这个矩阵也是一个多行多列的图形,可以使用双层for循环完成,由于行列数相同,因此无论是内层循环还是外层循环都是循环n次。在循环中需要输出两种符号,+和-。 题目已知在n×n矩阵的主对角线和副对角线上是+,其余位置是-。因此在双层for循环中需要判断,对角线和副对角线输出+,否则输出-。注意内层for循环输出一行内容之后,要输出一个换行。 25 n × n矩阵对角线 + - - - + - + - + - - - + - - - + - + - + - - - + 副对角线 主对角线 1 2 3 4 5 1 2 3 4 5 主对角线上的元素位置:i==j 副对角线上的元素位置:i+j==n+1 行(i) 列(j) 5行5列矩阵: 主对角线:连接左上角和右下角的一条线。 副对角线:连接右上角和左下角的一条线。 真题解析 题目分析: 这道题目涉及到了N行N列矩阵对角线的问题,我们来详细讲解一下有关于n行n列矩阵对角线的问题: n行n列的矩阵有两条对角线,对角线上的元素位置是有规律的。 连接N行N列矩阵左上角到右下角的一条线叫作主对角线,观察主对角线上的每个数字的位置:1行1列,2行2列,3行3列....,这些的元素的位置都有一个特点,就是行号与列号相同。因此主对角线上的元素都满足行号等于列号。 另外连接N行N列矩阵右下角到左下角的一条线叫作副对角线,副对角线上的数字的位置也存在一个规律,就是行号+列号等于n+1。可以来验证一下:1行5列的数字位于副对角线上,行号+列号的结果等于5+1。2行4列的数字也在副对角线上,行号+列号的结果也等于5+1。可以验证得出:副对角线上的元素位置,满足行号+列号等于n+1。 在使用双层for输出n行n列矩阵时,经常会考查到对角线的知识点,所以要记住n×n矩阵两条对角线上的元素位置特点。 根据主对角线和副对角线上的元素位置特点,我们可以进行如下判断。 26 主对角线和副对角线上输出'+' 其余输出'-' 思路分析 循环输出n*n矩阵。     for (int i = 1; i <= n; i++) {         for (int j = 1; j <= n; j++) {         }         cout << endl;     }             if (i == j || i + j == n + 1)  cout << "+";             else  cout << "-"; + - - - + - + - + - - - + - - - + - + - + - - - + 副对角线 主对角线 主对角线上的元素位置:i==j 副对角线上的元素位置:i+j==n+1 真题解析 题目分析: 如果满足行号等于列号 或者 行号+列号的和等于n+1,只要满足两个条件其中之一,就输出+,否则输出-。 27 【完整代码】 #include <iostream> using namespace std; int main() {     int n;     cin >> n;     for (int i = 1; i <= n; i++) {         for (int j = 1; j <= n; j++) {             if (i == j || i + j == n + 1) cout << "+";             else cout << "-";         }         cout << endl;     }     return 0; } 真题解析 完整代码 28 (2023年3月)画三角形 【问题描述】 输入一个正整数 n,请使用大写字母拼成一个这样的三角形图案(参考输入输出样例): 三角形图案的第 1 行有 1 个字母,第 2 行有 2 个字母,以此类推; 在三角形图案中,由上至下、由左至右依次由大写字母 A-Z 填充,每次使用大写字母 Z 填充后,将从头使用大写字母 A 填充。 【输入描述】 输入一行,包含一个正整数 n。约定 2≤n≤40。 【输出描述】 输出符合要求的三角形图案。注意每行三角形图案的右侧不要有多余的空格。 【输入样例1】 3 【输出样例1】 A BC DEF 【输入样例2】 7 【输出样例2】 A BC DEF GHIJ KLMNO PQRSTU VWXYZAB 真题解析 讲师读题 29 思路分析 输入一个正整数n。 int n; cin >> n; 循环输出字母三角形。     for (int i=1; ________; i++) {         for (int j=1; ________; j++) {         }         cout << endl;     } 行 列 输出字母 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B 1 2 3 4 5 ... n 1 2 3 4 5 ... n i<=n j<=i 真题解析 题目分析: 1、输入一个正整数代表三角形的行数n 2、循环输出字母三角形,字母三角形也是多行多列的图形,我们依然可以使用双层for循环来进行输出,输出的时候外层循环控制行,内层循环控制列,每次循环都输出一个字母。三角形的行数是确定的是n行,因此外层循环的循环次数就是n次,循环条件为i<=n。内层循环控制列数,这个直角三角形,每行中,列号从1开始,最后一个列号与行号相等。因此内层循环的循环条件为j<=i。 接下来我们来分析如何输出字母。 30 分析如何循环输出大写字母 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B 1 2 3 4 5 ... n 1 2 3 4 5 ... n 行( i ) 列( j ) 当字母到Z之后,重新从A开始 for (int i = 1; i <= n; i++) {      for (int j = 1; j <= i; j++){           }      cout << endl; } 输出字母 char c = 'A'; cout << c; c++; if(c>'Z') c='A'; 从A开始 真题解析 题目分析: 首先明确,我们要输出的是大写字母,从A开始,因此我们可以现在程序中创建一个char类型的变量保存每次输出的字母。最开始要输出的是字母A,我们就可以将该变量的初始值设置为A。在内层循环中输出该变量,之后令该变量++,就可以将该变量的值变为下一次要输出的字母。例如:输出字母A后,令c++,此时c的值将会变为B,下一次输出的就是B。不断重复这个过程,直到输出的内容为Z,当字母大于Z时,应该重新从A开始。所以在程序中,如果c++之后的值大于Z,那么我们需要将该变量的值重置为A。再依次输出A-Z。 31 【完整代码】 #include <iostream> using namespace std; int main() {     int n;     cin >> n;     char c = 'A';     for (int i = 1; i <= n; i++) {         for (int j = 1; j <= i; j++){             cout<<c;             c++;             if(c>'Z') c='A';         }         cout << endl;     }     return 0; } 真题解析 完整代码 32 感谢你的学习 33 $$

资源预览图

LESSON_2级_09_多层循环1(课件)
1
LESSON_2级_09_多层循环1(课件)
2
LESSON_2级_09_多层循环1(课件)
3
LESSON_2级_09_多层循环1(课件)
4
LESSON_2级_09_多层循环1(课件)
5
LESSON_2级_09_多层循环1(课件)
6
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。