问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 for的多重循环是怎么一回事啊 能给小弟详细讲解以下吗?

发布网友 发布时间:2022-04-23 08:09

我来回答

2个回答

热心网友 时间:2023-10-08 17:51

for(表达式1;表达式2;表达3)

语句:

表达式1 通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。

表达式2 通常是循环条件,一般为关系表达式或逻辑表达式。

表达式3 通常可用来修改循环变量的值,一般是赋值语句。

这三个表达式都可以是逗号表达式, 即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。

一般形式中的“语句”即为循环体语句。for语句的语义是:

1.首先计算表达式1的值。

2.再计算表达式2的值,若值为真(非0)则执行循环体一次, 否则跳出循环。

3.然后再计算表达式3的值,转回第2步重复执行。在整个for循环过程中,表达式1只计算一次,表达式2和表达式,3则可能计算多次。循环体可能多次执行,也可能一次都不执行。for 语句的执行过程如图所示。

void main(){
int n,s=0;
for(n=1;n<=100;n++)
s=s+n;
printf("s=%d\n",s);
}

用for语句计算s=1+2+3+...+99+100

int n,s=0;
for(n=1;n<=100;n++)
s=s+n;
printf("s=%d\n",s);

本例for语句中的表达式3为n++,实际上也是一种赋值语句,相当于n=n+1,以改变循环变量的值。

void main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
for(;n>0;a++,n--)
printf("%d ",a*2);
}

用for语句修改例题。从0开始,输出n个连续的偶数。

int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
for(;n>0;a++,n--)
printf("%d ",a*2);

本例的for语句中,表达式1已省去,循环变量的初值在for语句之前由scanf语句取得,表达式3是一个逗号表达式,由a++,n-- 两个表达式组成。每循环一次a自增1,n自减1。a的变化使输出的偶数递增,n的变化控制循次数。

在使用for语句中要注意以下几点

1.for语句中的各表达式都可省略,但分号间隔符不能少。如:for(;表达式;表达式)省去了表达式1。for(表达式;;表达式)省去了表达式2。

for(表达式;表达式;)省去了表达式3。for(;;)省去了全部表达式。

2.在循环变量已赋初值时,可省去表达式1,如例3.27即属于这种情形。如省去表达式2或表达式3则将造成无限循环, 这时应在循环体内设法结束循环。例题即属于此情况。

void main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
for(;n>0;)
{ a++;n--;
printf("%d ",a*2);
}
} int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
for(;n>0;)
{ a++;n--;
printf("%d ",a*2);
}

本例中省略了表达式1和表达式3,由循环体内的n--语句进行循环变量n的递减,以控制循环次数。

void main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
for(;;){
a++;n--;
printf("%d ",a*2);
if(n==0)break;
}
}
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
for(;;){
a++;n--;
printf("%d ",a*2);
if(n==0)break;
}

本例中for语句的表达式全部省去。由循环体中的语句实现循环变量的递减和循环条件的判断。当n值为0时,由break语句中止循环,转去执行for以后的程序。在此情况下,for语句已等效于while( 1)语句。如在循环体中没有相应的控制手段,则造成死循环。

3.循环体可以是空语句。

#include"stdio.h"
void main(){
int n=0;
printf("input a string:\n");
for(;getchar()!='\n';n++);
printf("%d",n);
}

本例中,省去了for语句的表达式1,表达式3也不是用来修改循环变量,而是用作输入字符的计数。这样, 就把本应在循环体中完成的计数放在表达式中完成了。因此循环体是空语句。应注意的是,空语句后的分号不可少,如缺少此分号,则把后面的printf 语句当成循环体来执行。反过来说,如循环体不为空语句时, 决不能在表达式的括号后加分号, 这样又会认为循环体是空语句而不能反复执行。这些都是编程中常见的错误,要十分注意。

4.for语句也可与while,do-while语句相互嵌套,构成多重循环。以下形成都合法的嵌套。

(1)for(){…
while()
{…}

}
(2)do{

for()
{…}

}while();
(3)while(){

for()
{…}

}
(4)for(){

for(){

}
}
void main(){
int i,j,k;
for(i=1;i<=3;i++)
{
for(j=1;j<=3-i+5;j++)
printf(" ");
for(k=1;k<=2*i-1+5;k++)
{
if(k<=5) printf(" ");
else printf("*");
}
printf("\n");
}
}

热心网友 时间:2023-10-08 17:52

嵌套嘛,从最外面的循环开始第一次循环,遇到下级FOR循环的时候,循环这级循环一次,如果该循环内不再有循环FOR,那么就要把这级循环的次数全不循环完毕后跳到外循环中进行第二次循环,再执行内部FOR循环,依次循环完毕为止
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
奥迪Q5L发动机漏机油,发动机漏机油,发动机漏机油!!! 株两优4024基本信息 企业品种是指什么 计划品种构成是什么意思? 什么是产品品种构成 大话二什么类型的什么变身卡加敏最高是多少(神兽卡)??我问的是参战以后... 大话2中什么变身卡加强雷法?除了黄金卡以外? 遇到一个很奇怪的女孩子,求大家帮我分析分析 一个月没见女朋友,问了什么也不说,只说快疯了,什么意思 慢热女朋友对我说我也是很烦恼问她什么也不说电话也不接信息也不回女 ... C语言 for循环执行步骤 c语言中 几个循环语句怎么用 C语言用for如何实现多次循环的输入输出 在C语言中for循环怎样使用? c语言中两个for循环怎么同时运行 C语言中for的双循环怎么用 C语言for的多重循环 急!c语言多个for语句的用法。 c语言for循环嵌套语句中有连续多个for语句怎么运行的? 我的键盘上没有Pause键,该咋办 cs1.5中PAUSE是哪个键? PauseBreak键有什么用? 电脑键盘pause键在哪里 有什么用 键盘上的pause break 键有何用?具体详解 键盘上的Pause键有什么用? 仙剑奇侠传2秘籍 仙剑奇侠传2 为什么没有播 讲了些什么啊??? 电脑键盘上的pause键有什么用,我不小心按了一下,会有什么问题吗? 仙剑奇侠传有第2部吗? 我怎么没听说过。 键盘上的PAUSE键有何用? C语言for循环的使用和讲解有哪些? 有免费在线客服软件吗? c语言中for语句是怎么用的? C语言中for循环怎么理解? C语言for循环的使用和讲解,希望详细点,初学者 有免费的网页在线客服软件吗? C语言的for循环嵌套是什么运行规则 个人如何发表论文? 个人微信怎么发表文章? 个人如何快速发表论文? 个人怎么发表论文? 国家规定个人发表文章、出版图书应缴纳个人所得税的调节方法是:稿酬不高于800元的不纳税;稿酬高于8? 个人网站如何发表文章? 个人在网上发表文章取得的所得,是否属于稿酬所得? 个人发表的论文怎么查询? 如何在百度发表自己的文章? 国家规定个人发表文章、出版图书所得稿费的纳税计算方法是: 怎么阻止拼多多不能在微信通迅录中加我为好友? 国家规定个人发表文章,出版 opporeno4se怎么阻止拼多多