c语言循环用法,c语言3种循环语句
在递归调用中,其实每次递归都是在重复做同样的事情。比如求阶乘就是n乘以(n-1)!然后返回结果。虽然是重复的,但是每次做的时候都略有不同(n的值不一样)。这种每次都略有不同的重复工作叫做迭代。
使用我们的计算机的一个主要目的就是让它做重复性的工作,因为重复一项工作几千次而不出错是计算机最擅长的,而人类最不擅长的。虽然递归对于迭代来说已经足够了,但是C语言提供了循环语句,使得编写迭代程序更加容易。
它是循环程序中非常重要的结构。其特征在于,当给定条件成立时,重复执行某个程序段,直到条件不成立。给定的条件称为循环条件,重复执行的程序段称为循环体。c语言提供了多种循环语句,可以形成多种不同形式的循环结构:
1.use while语句;
2.使用do-while语句;
3.使用for语句;
4.使用goto语句和if语句形成循环;
While循环语句
while语句的一般形式是:
While(表达式){语句;}
表达式就是循环条件,用来控制循环体是否执行。它是一般的关系表达式或逻辑表达式,也可以是C语言中的其他合法表达式。
语句是一个循环体,是重复执行的一部分。这部分语句称为嵌入式语句,可以是基本语句、控制语句或复合语句。
它的作用是:先判断表达式,如果为真,执行循环体,再判断表达式,重复上述过程,直到表达式为假,退出循环。执行过程可以如下图所示。
以下示例使用while语句实现了从1到100的值的计算。
# include stdio . h int main(void){ inti,sum=0;I=1;while(I=100){ sum=sum I;我;} printf(%d\n ,sum);系统(“暂停”);return0}
运行结果:
使用while循环时需要注意的事项:
1.在循环中,语句的顺序必须符合逻辑,否则会影响运算结果。
2.while循环首先判断表达式,然后执行循环体。循环可能不会执行一次。
3.如果循环体包含多个语句,应该用{}括起来。
4.循环体应该包含结束循环的语句,如下例所示。
# include stdio . h int main(void){ inta=0,n;Printf(请输入一个数字:\ n );scanf(%d ,while(n - ) printf(%d ,a* 2);系统(“暂停”);return0}
运行结果:
在这个例子中,程序将被执行n次,每次执行n的值将减1。循环输出表达式a *2的值。表达式等价于(a * 2;答.
5、下列情况下,退出while循环
条件表达式无效(零)
循环遇到中断,转到
6.无限循环的形式是:
While(1){圆形体;}
7.为了保证循环的正常运行,应特别注意:
注意循环控制条件的描述。例如,下面是一个计算从键盘输入的字符数的示例:
# include stdio . h int main(void){ intn=0;Printf(请输入一个字符串:\ n );while(getchar()!= \ n ){ n;} printf(字符串长度为:%d\n ,n);系统(“暂停”);return0}
运行结果:
这个示例程序中的循环条件是getchar()!=\n ,这意味着,只要从键盘输入的字符不是回车,就继续循环。循环n完成对输入字符数的计数。因此,程序可以计算输入行中的字符数。
注意控制条件的初始状态(初始值)。
注意循环对控制条件的影响。
Do-while循环语句
do-while语句的一般形式是:
语句do while(表达式);
do-while语句的作用是:先执行循环中的语句,然后判断表达式是否为真,如果是,继续循环;如果为假,则循环终止。因此,do-while循环必须至少执行一次loop语句。执行过程可以如下图所示。
While和do-while可以实现循环控制,while结构程序通常可以转换成do-while结构。
它们之间的区别是:
Do- while语句先执行循环体再判断条件,循环体至少执行一次;
While语句先判断条件再执行循环体,可能一次都不会执行;
Do-while循环体必须有一个能使表达式值趋于0的运算(比如I),否则会出现无限循环。
下面的示例演示如何使用do-while语句计算从1到100的值。
# include stdio . h int main(void){ inti,sum=0;I=1;do { sum=sum I;我;} while(I=100);printf(%d\n ,sum);系统(“暂停”);return0}
运行结果:
do-while无限循环的风格:
Do{圆形体;} while(1);
For循环
在C语言中,for语句是最灵活的,它可以完全替代while语句。它的一般形式是:
For(表达式1;表情2;3){语句;}
其实现过程如下:
1.先解表达式1。
2.求解表达式2,如果其值为true(非0),则执行for语句中指定的嵌入式语句,然后执行下面的步骤3);如果该值为假(0),则循环结束,并且过程进行到步骤5)。
3.求解表达式3。
4.回到上面的步骤2)并继续。
5.在循环结束时,执行for语句下面的语句。
执行过程可以如下图所示。
for语句最简单的应用形式是:
For(循环变量给定初始值;循环条件;循环变量增量){语句;}
循环变量的初始值总是一个赋值语句,用来给循环控制变量赋值初始值;循环条件是确定何时退出循环的关系表达式;循环变量增量,定义循环控制变量在每次循环后如何变化。使用分号(;)分开。例如:
for(I=1;i=100I)总和=总和I;
首先给I一个初始值1,判断I是否小于等于100。如果是,则执行该语句,然后该值增加1。重新判断,直到条件为假,即i 100,结束循环。相当于:
I=1;while(I=100){ sum=sum I;我;}
对于For循环中语句的一般形式,它是以下while循环形式:
表情1;While(表达式2){语句表达式3;}
使用for语句时,您应该注意:
1.for循环中的表达式1(循环变量初始值)、表达式2(循环条件)、表达式3(循环变量增量)都是可选项,即可以默认,但分号(;)不能默认。
2)“表达式1(循环变量的初始值)”被省略,这意味着没有初始值被赋予循环控制变量。
3.如果“表达式2(循环条件)”被省略,它将成为一个无限循环,而不进行其他处理。例如:
for(I=1;I){ sum=sum I;}
相当于:
I=1;while(1){ sum=sum I;我;}
4)如果省略“表达式3(循环变量增量)”,循环控制变量将不被操作,然后可以在语句体中添加修改循环控制变量的语句。例如:
for(I=1;i=100){ sum=sum I;我;}
5)“表达式1(循环变量的初始值)”和“表达式3(循环变量的增量)”被省略。例如:
for(;i=100){ sum=sum I;我;}
相当于:
while(I=100){ sum=sum I;我;}
6)3个表达式都可以省略。例如:
for(;){语句}
相当于:
while{语句}
7)表达式1可以是设置循环变量初始值的赋值表达式,也可以是其他表达式。例如:
for(sum=0;i=100I){ sum=sum I;}
8)表达式1和3可以是简单表达式,也可以是逗号表达式。
for (sum=0,I=1;i=100I){ sum=sum I;}
或者:
for (i=0,j=100i=100I,j-){ k=I j;}
9)表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式。只要它的值不为零,循环体就会被执行。例如:
for(I=0;(c=getchar())!= \ nI=c);
另一个例子是:
for(;(c=getchar())!= \ n){ printf(%c ,c);}
Goto-if循环:
Goto语句是一个无条件转移语句,类似于BASIC中的goto语句。goto语句的格式是:
Goto语句标签;
标签是一个有效的标识符,它和一个“:”一起出现在函数中的某个地方。goto语句执行后,程序会跳转到标签,执行后续语句。
此外,标签必须与goto语句在同一个函数中,但不能在循环层中。通常goto语句与if条件语句一起使用。当满足某个条件时,程序跳转到标签运行。
通常不使用Goto语句,主要是因为它会使程序层次不清晰,难以阅读,但在存在多层嵌套的情况下,使用goto语句更合理。
下面的代码实现了使用goto语句和if语句组成循环求1 ^ 2 ^ 3的和.100.
# include stdio . h int main(void){ inti,sum=0;I=1;循环:if(I=100){ sum=sum I;我;gotoloop} printf(%d\n ,sum);系统(“暂停”);return0}
总结一下,C语言中有四种循环:goto语句形成的循环、while循环、do-while循环和for循环。
四个周期的比较:
1.所有四个循环都可以用来处理同一个问题。一般可以互相替代。但是一般不建议使用goto循环,不仅因为它很蹩脚,而且我们强烈建议不要使用goto语句,尽量使用其他语句代替。
2.while和do-while循环,循环体应该包含使循环结束的语句。
3.for语句是最强大和最常用的。
4.用while和do-while循环时,循环变量的初始化要在while和do-while语句之前完成,for语句可以实现表达式1中循环变量的初始化。
For循环是最常用的循环,功能强大,可以替代其他循环。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。