C语言循环控制语句_百度百科

C语言循环控制语句

基于C语言的编程语句
收藏
0有用+1
0
C语言循环控制语句是一个基于C语言的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构。
中文名
C语言循环控制语句
类    别
while循环语句,do-while语句等
目    地
实现循环结构
归    类
编程语句
基    础
C语言

基本信息

播报
编辑
在C语言程序中,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构;顺序结构,从头到尾一句接着一句的执行下来,直到执行完最后一句;选择结构,到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行; 循环结构,循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次。C语言循环控制语句是一个基于C语言的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构。

循环语句

播报
编辑
一般形式如下:
while(表达式)
语句;
while语句
其中执行过程如下:
(1)计算while后面括号里表达式的值,若其结果非0,则转入(2),否则转(3)
(2)执行循环体,转(1)
(3)退出循环,执行循环体下面的语句。
由于是先执行判断后执行循环体,所以循环体可能一次都不执行。
循环体可以为空语句“;”。

do-while语句

播报
编辑
一般形式如下:
do
语句;
while(表达式);
do...while语句
(1)执行循环体,转(2)
(2)计算while后面括号里表达式的值,若其结果非0,则转入(1),否则转(3)
(3)退出循环,执行循环体下面的语句。
注意:do……while语句最后的分号(;)不可少,否则提示出错。循环体至少执行一次。 [1]

for语句

播报
编辑
for语句是循环控制结构中使用最广泛的一种循环控制语句,特别适合已知循环次数的情况。
一般形式如下:
for ( [表达式 1]; [表达式 2 ]; [表达式3] )
语句
其中:
for语句
表达式1:一般为赋值表达式,给控制变量赋初值;
表达式2:关系表达式或逻辑表达式,循环控制条件;
表达式3:一般为赋值表达式,给控制变量增量或减量;
语句:循环体,当有多条语句时,必须使用复合语句。
其执行过程如下:首先计算表达式1,然后计算表达式 2。若表达式2为真,则执行循环体;否则,退出 for循环,执行for循环后的语句。如果执行了循环体,则循环体每执行一次,都计算表达式3,然后重新计算表达式2,依此循环,直至表达式 2的值为假,退出循环。
for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。for语句有以下几种格式:
(1)for(; ;) 语句;
(2)for(;表达式2;表达式3 ) 语句;
(3)for(表达式1;表达式2;) 语句;
(4)for(i=1,j = n; i < j; i ++,j - - ) 语句;

三种语句比较

播报
编辑
同一个问题,往往既可以用 while语句解决,也可以用 do-while或者for语句来解决,但在实际应用中,应根据具体情况来选用不同的循环语句。选用的一般原则是:
(1) 如果循环次数在执行循环体之前就已确定,一般用 for语句。如果循环次数是由循环体的执行情况确定的,一般用 while语句或者do- while语句。
(2) 当循环体至少执行一次时,用 do-while语句,反之,如果循环体可能一次也不执行,则选用while语句。
C++/C循环语句中,for语句使用频率最高,while语句其次,do语句很少用。
三种循环语句for、while、do-while可以互相嵌套自由组合。但要注意的是,各循环必须完整,相互之间绝不允许交叉。

其他循环语句

播报
编辑
多重循环结构
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨越循环层的次数。
一个循环体内又包含另一个完整的循环结构
三种循环可互相嵌套,层数不限
外层循环可包含两个以上内循环,但不能相互交叉

c循环举例

播报
编辑
这里使用c语言中的for循环。添加了九九乘法表查询、每天存钱问题、猴子吃桃问题、百钱买百鸡。
#include <stdio.h>
void main()
{
float x,y,z,a,b,c,d,i,n,sum;int m;char yn;
system ("graftable 936");
yn='y';
while(yn=='y' )
{
clrscr ();
printf(" 欢迎使用 \n");
printf("请按提示操作,谢谢!\n");
printf("九九乘法表查询请按1\n");
printf("每天存钱问题请按2\n");
printf("猴子吃桃问题请按3\n");
printf("一分数序列课本请按4\n");
printf("百钱买百鸡请按5\n");
m=getch();
switch(m)
{case '1':
{
for (a=1;a<=9;a++)
{for (b=1;b<=a;b++)
printf("%.0f*%.0f=%2.0f\t",a,b,a*b);
printf("\n");
}
break;}
case '2':
{
a=1,sum=0;
for(i=1;i<31;i++)
{sum=sum+a;
printf("第%2.0f天收益%20.0f分钱\t",i,sum);
a=2*a;
}
break;}
case '3':
{
b=1;
for(i=1;i<10;i++)
b=2*(b+1);
printf("猴子吃桃问题:");
printf("第一天摘桃子的个数为%.0f个\n",b);
break;}
case '4':
{ a=2,b=1, sum=0;
for(i=1;i<=20;i++)
{ n=(1.0*a)/b; c=a; a=a+b; b=c; sum=sum+n; }
printf("2/1,3/2,5/3...最后结果%f\n",sum);
break;}
case '5':
{
for(a=1;a<=20;a++)
for(b=1;b<=33;b++)
for(c=3;c<=99;c=c+3)
if((5*a+3*b+c/3==100)&&(a+b+c==100))
printf("公鸡=%.0f,母鸡=%.0f,小鸡=%.0f\n",a,b,c);
break;}
}
fflush(stdin);
printf("请选择继续y或者离开n\n");
yn=getch();
}
}