5.2 用while语句实现循环
while语句的一般形式:
while(循环条件表达式) 语句
while循环的特点:
先判断条件表达式,后执行循环语句。
求1+2+3+4+5+…+100的和。
#include <stdio.h>
int main()
{
int i,sum=0;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
程序分析
⑴循环体如果包含一个以上的语句,应该用花括号括起来,作为复合语句出现。如果不加花括号,则while语句的范围只到while后面第1个分号处。
⑵不要忽略给i和sum赋初值,否则它们的值是不可预测的,结果显然不正确。
⑶在循环体中应有使循环趋向于结束的语句。一般是"i++"。如果无此语句,循环永远不结束。
5.3 用do…while语句实现循环
do…while语句的一般形式:
do
语句
while(表达式);
do…while循环的特点:
先无条件执行循环体,然后判断循环条件是否成立。
用do…while语句求1+2+3+…+100的和。
#include <stdio.h>
int main()
{
int i=1,sum=0;
do
{
sum=sum+i;
i++;
}while(i<=100);//语句末尾有分号!
printf("sum=%d\n",sum);
return 0;
5.4 用for语句实现循环
最常用的for语句形式是:
for(循环变量赋初值;循环条件;循环变量增值)
语句
说明:
⑴for循环可以改写成while循环的形式。
⑵"表达式1"可以省略,但分号不能省略。
i=1; //对循环变量i赋初值
for(;i<=100;i++) //for语句中没有表达式1
sum=sum+i;
⑶表达式2可以省略,不设置和检查循环的条件,循环将无终止的进行。
⑷表达式3可以省略,但应另外设法保证循环能正常结束。
for(i=1;i<=100;) //没有表达式3
{
sum=sum+i;
i++; //这时可以在循环体中使循环变量增值
}
⑸只有表达式2。
int i=1; //给循环变量赋初值
for(;i<=100;) //只有表达式2
{
sum=sum+i;
i++; //在循环体中使循环变量增值
}
⑹3个表达式都可以省略。无终止地执行循环体语句,显然这是没有实用价值的。
for(;;) printf("%d\n",i);
//相当于
while(1) printf("%d\n",i);
⑺==表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。表达式3也可以是与循环控制无关的任意表达式。==但不管怎么写for语句,都必须使循环能正常执行。
for(sum=0;i<=100;i++) sum=sum+i;
⑻表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,==中间用逗号间隔。==在逗号表达式内按自左自至右顺序求解,整个逗号表达式的值为最右边的表达式的值。
for(i=1;i<=100;i++,i++) sum=sum+i;
//相当于
for(i=1;i<=100;i=i+2) sum=sum+i;
⑼
5.7 改变循环执行的状态
用break语句提前终止循环,break语句只能用于循环语句和switch语句之中,而不能单独使用。
用continue语句提前结束本次循环,而接着执行下次循环。
要求输出100~200的不能被3整除的数。
#include <stdio.h>
int main()
{
int n;
for(n=100;n<=200;n++)
{
if(n%3==0)
continue;
printf("%d\n",n);
}
printf("\n");
return 0;
}
break语句和continue语句的区别
continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
如果是双重循环,在内循环体内有一个break语句,是提前终止内循环,而不是提前终止整个循环。