用while、do-while和for语句实现循环
案例:求1+2+3+4+…+100;的值
int i=1,num=0;
while (i<=100){
num=num+i;
i++;
}
printf("累计之和是:%d",num);
//用do-while实现
int i=1,sum=0;
do {
sum=sum+i;
i++;
}while (i<=100);
printf("累计的值是:%d",sum);
//用for语句实现
int i,sum=0;
for(i=1;i<=100;i++){
sum=sum+i;
}
printf("累计的值是:%d",sum);
案例:for
语句的三个表达式,i=1
可以省略,但是后面的";
" 不能省略;省略之后要在for
循环之前 初始化i的值,如int i=1;
表达式三也可以省略,如下:
int i,sum=0;
for(i=1;i<=100;){
sum=sum+i;
i++; //省略的时候,可以在循环体中使循环变量增值
}
表达式1
和3
,可以是一个简单的表达式,也可以是逗号表达式,如下:
for(i=0,j=100;i<=j;i++,j--)k=i+j;
逗号表达式内,自左向右顺序求解,如下:
for(i=i;i<=100;i++,i++)sum=sum+i;
相当于
for(i=i;i<=100;i+2)sum=sum+i;
表达式2
一般是关系表达式(i<=100)
或者逻辑表达式(a<b&&x<y)
但也可以是数值表达式或字符表达式,只要其值是非0
就执行循环体,如下:
for(i=1;(c=getchar()!='\n';i+=c));
for
循环中定义的变量只能在for
循环中使用
while
和do-while
的比较
do-while
是先执行循环体,最少执行一次while
是先执行判断,可能一次都不执行- 三种循环方式都能用
break;
结束循环。用continue;
结束本次循环;
案例
全系1000名学生,慈善募捐,累计捐到10万元就结束,计算人均捐款;
- 可以在文件头定义下常量# define SUM=100000; 下面的程序可以直接用哦
float amount,total,aver;
int i;
for(i=1;i<=1000;i++){
printf("please enter amount:");
fflush(stdout);
scanf("%f",&amount);
total=total+amount;
if (total>=100000)break;
}
aver=total/i;
printf("捐献总额是:%f。捐献人数是:%d。人均捐献是:%f",total,i,aver);
//要求输出100~200不能被3整除的整数。需要你用到continue
printf("The number divisible by 3 is:");
for(int i=100;i<=200;i++){
if(i%3==0){
printf("%d ",i);
}
}
输出以下4*5的矩阵
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
for(int i=1;i<=4;i++){
for(int j=1;j<=5;j++){
if (j==5){
printf("%d \n",j*i);break; //结束本次循环,外层循环依然执行
}else{
printf("%d ",j*i);
}
}<