天下青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(for循环语句 ...

打印 上一主题 下一主题

主题 1400|帖子 1400|积分 4215

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
假设现在要求编程实现输出10行'*',每行20个'*',可以使用前面的for循环来实现,通过计算总共输出200个'*',定义循环变量i,初始值为1,终值为200,循环体内首先输出一个'*',并对循环变量i进行判断,当i对20取余为0时,输出一个换行,循环更新变量进行自增运算,详细代码如下所示:
  1. for(int i=1;i<=200;i++){
  2.   cout<<'*';
  3.   if(i%20==0){
  4.     cout<<endl;
  5.   }
  6. }
复制代码
那么在代码实现时能不能将10行当成一部分,每行对应的20个'*'当作列,用一个for来表现行,另一个for来表现列呢?这就必要用到for循环语句的嵌套。接下来先容该内容。
for循环语句嵌套:
当一个循环语句的循环体又包含循环语句时,这种结构称为多重循环,也称为循环的嵌套。外层的循环叫做外循环,内层的循环叫做内循环。各层循环的循环控制变量不能雷同。嵌套循环中的变量(如i和j)只在各自的循环中有效,互不干扰。for循环嵌套的基本语法为:
  1. for(循环变量1初始表达式;循环变量1终值条件;循环变量1更新表达式){
  2.   //循环体11
  3.   for(循环变量2初始表达式;循环变量2终值条件;循环变量2更新表达式){
  4.     //循环体2
  5.   }
  6.   //循环体12
  7. }
复制代码
向这种for语句的循环体中有引入循环结构的方式称为循环嵌套,处于外层的循环叫作外循环,处于内层的循环称为内循环,外循环实验一次,内层循环实验一遍,详细实验过程:
1)首先外层循环初始化:实验外层循环的循环变量1初始表达式,为循环变量1赋初始值;
2)其次外层循环条件判断:判断外层循环的循环变量1终值条件,如果条件为真(即循环变量1满足继续循环的条件),则进入外层循环体;如果条件为假,则外层循环竣事,整个嵌套循环实验完毕;
3)进入外层循环体:
①实验循环体11的代码,
②紧接着实验内层循环初始化:在外层循环体内,首先实验内层循环的循环变量2初始表达式,为循环变量2赋初始值;
③内层循环条件判断:接着判断内层循环的循环变量2终值条件,如果条件为真(即循环变量2满足继续循环的条件),则进入内层循环体;如果条件为假,则内层循环竣事,回到外层循环的下一步;
④进入内层循环体:实验循环体2的代码;
⑤内层循环变量更新:实验内层循环的循环变量2更新表达式,更新循环变量2的值;
⑥重复内层循环条件判断:重新判断内层循环的终止条件。如果条件为真,则继续实验循环体2;如果条件为假,则内层循环竣事;
⑦实验外层循环剩余部分:内层循环竣事后,实验循环体12的代码。
4)外层循环变量更新:实验外层循环的循环变量1更新表达式,更新循环变量1的值;重复外层循环条件判断:重新判断外层循环的终值条件,如果条件为真,则继续实验外层循环体;如果条件为假,则外层循环竣事,整个嵌套循环实验完毕。
总结来说,嵌套循环的实验过程就是外层循环和内层循环交替进行的过程,直到两个循环的终值条件都不再满足为止。
比方将打印10行20列'*'代码使用for嵌套语句来实现:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4.     for(int i=1;i<=10;i++){
  5.             for(int j=1;j<=20;j++){
  6.                     cout<<'*';
  7.                 }
  8.         cout<<endl;
  9.         }
  10.     return 0;
  11. }
复制代码
对于该程序,外循环变量i循环1次,内层循环中的控制变量j要从1循环到20次,外循环变量总共循环10次,以是总的循环次数为10*20=200。即外层循环控制变量i用来表现行变量,意味着总共打印10行,每行末了都有一个换行;在换行之前,必要打印20列'*',内循环变量j来控制列;将内层循环和输出换行语句共同构成了外层循环的循环体。可见,循环嵌套就是一个循环出现在另一个循环里,对于外循环的每次迭代,内循环都要完成它的所有迭代。根据循环嵌套的层数差别,可以有双重循环、三重循环……,如果循环体不但仅有一条语句时,要用{}括起来,组成复合语句。
实战训练1—字符图形
题目形貌:
输入一个整数 n(1≤n≤30),绘制一个由n 行n列的由*号构成的三角形图案,字符图形参照输入输出样例。
输入格式:
一行一个整数n。
输出格式:
由n行构成,每行有n列'*',即由n行n列构成的字符三角形。
输入输出样例:
输入样例1
输出样例1
3
*
**
***
输入样例2
输出样例2
5
*
**
***
****
*****
题目分析:
根据题意,字符图形由行和列构成,以是可以接纳for循环语句嵌套,行可以由外层循环来表现,列由内层循环来表现,对于外层循环,字符图形总共由n行构成,以是外层循环变量起始值为1,终值为n,循环更新变量为自增运算,对于内层循环,每行的'*'的个数就是地点的行数,第一行有1个'*',第二行有2个'*'……末了一行有n个'*',以是列数受到行数的限制,即内层循环起始值为1,终值为外层循环变量,更新也为自增运算,内层循环体输出'*',内层循环和每行竣事输出换行符共同构成了外层循环的循环体,详细程序代码如下所示:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4.     int n;//定义字符行数变量n
  5.     cin>>n;//输入n的值
  6.     for(int i=1;i<=n;i++){//外层循环,用i来表示行,从1到n
  7.         for(int j=1;j<=i;j++){//内层循环,用j来表示列,从1到i
  8.             cout<<'*';
  9.         }
  10.         cout<<endl;//输出换行符
  11.     }
  12.     return 0;
  13. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表