C语言程序设计(第四章循环结构)
一、while语句实现循环
(1)while语句的一般形式:
while(表达式) 语句 ,其中语句就是循环体,只要循环条件为真(也就是表达式的条件成立),就执行循环体语句。
例题1:求从1累加到100
#include<stdio.h>
int main()
{
int a=1,sum=0;
while(a<=100){
sum+=a;
a++;
}
printf("sum=%d",sum);
return 0;
}
运行结果:
sum=5050
二、do……while语句实现循环
(1)do……while的一般形式:
do
语句
while(表达式)
例题2:求从1累乘到10
#include<stdio.h>
int main(){
int a=1,sum=1;
do{
sum*=a;
a++;
}while(a<=10);
printf("sum=%d",sum);
return 0;
}
运行结果:
sum=3628800
三、使用while和do……while的区别
(1)while语句会先判断后执行,do……while先执行后判断
(2)当不满足循环条件时,while语句则不会进行循环,而do……while语句会至少执行一次
当我们放到代码中来看:
使用while语句
#include<stdio.h>
int main(){
int a,sum=0;
printf("请输入a的值:");
scanf("%d",&a);
while(a<=10){
sum+=a;
a++;
}
printf("sum=%d",sum);
return 0;
}
运行结果1为:
请输入a的值: 1
sum=55
运行结果2为:
请输入a的值: 11
sum=0
使用do……while语句
#include<stdio.h>
int main(){
int a,sum=0;
printf("请输入a的值:");
scanf("%d",&a);
do{
sum+=a;
a++;
}while(a<=10);
printf("sum=%d",sum);
return 0;
}
运行结果1:
请输入a的值: 1
sum=55
运行结果2:
请输入a的值: 11
sum=11
四、使用for语句实现循环
(1)for循环语句的一般表达式:
for(表达式1;表达式2;表达式3)
语句
**表达式1:**设置初始条件,只执行一次。可以为零个、一个或多个变量设置初始值(如:i=1)
**表达式2:**是循环条件的表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。
**表达式3:**作为循环条件的调整,例如使循环变量增值,它是执行完循环体后才进行的。
常用的for循环语句形式为:
for(循环变量赋初值;循环条件;循环变量初值)
语句
for(i=0;i<=10;i++)
sum+=i;
五、改变循环执行的状态
(1)使用break语句提前终止循环
用break语句可以使流程跳出switch结构,继续执行switch语句下面的一个语句。实际上,break语句还可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。
例题3:在全系1000名学生中举行慈善募捐,当总数达到10万元时就结束,统计此时募捐的人数以及平每人捐款数目。
#include<stdio.h>
int main(){
float total,aver,amount;
int i;
for(i=1,total=0;i<=1000;i++){
printf("请输入捐款的金额:");
scanf("%f",&amount);
total+=amount;
if(total>100000){
break;
}
}
aver=total/i;
printf("捐款人数为%d,每人平均捐款%10.2f\n",i,aver);
return 0;
}
执行结果:
请输入捐款的金额:10000
请输入捐款的金额:80000
请输入捐款的金额:10000
请输入捐款的金额:1
捐款人数为4,每人平均捐款 25000.25
(2)使用continue语句提前结束本次循环
有时并不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行下次循环。就可以使用continue语句。
例题4:要求输出100~200的不能被3整除的数。
#include<stdio.h>
int main(){
int n;
for(n=100;n<=200;n++){
if(n%3==0)
continue;
printf("%d\t",n);
}
printf("\n");
return 0;
}
例题5:输出4×5的矩阵
#include<stdio.h>
int main(){
int i,j,n=0;
for(i=1;i<=4;i++){
for(j=1;j<=5;j++,n++){
if(n%5==0){
printf("\n");
}
printf("%d\t",i*j);
}
}
printf("\n");
return 0;
}
执行结果:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20