第四章循环结构
循环结构主要有for语句,while语句和do-while语句。
三种语句的特点
语句 | 特点 |
---|---|
for | 确定次数 |
while | 不确定次数 |
do-while | 不确定次数且先执行循环体 |
while语句
while语句和for语句大致相同,但需要包含能最终改变循环条件真假性的操作。
do-while语句
先执行循环体后判断循环条件。所以无论循环条件的值如何,至少会执行一次循环体。
break语句和continue语句
1)、break语句强制循环结束,应该和if语句配合使用,即执行条件满足时,才执行break跳出循环。
2)、 continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环。
3)、区别:break语句用于中止循环,也用于switch语句,continue语句只用于循环。
嵌套循环
求1到n的阶乘和,可用定义函数或嵌套循环。
以下的方法是嵌套循环
/*利用嵌套循环求m到n之间的全部素数*/
/*具体见p89*/
#include <stdio.h>
#include <math.h>
int main(){
int i,k,n,m,flag=1,count=0,sum=0;
double limit;
printf("enter m n:");
scanf("%d%d",&m,&n);
if(n<m||m<1){
printf("error!");
}else{
for(k=m;k<=n;k++){
if(k==1){
flag=0;
}else if(k==2){
flag=1;
}else{
flag=1;
limit=sqrt(k)+1;
for(i=2;i<=limit;i++){
if(k%i==0){
flag=0;
break;
}
}
}
if(flag==1){
printf("%4d",k);
sum=sum+k;
count++;
if(count%10==0){
printf("\n");
}
}
}
printf("\n");
printf("total=%d",sum);
}
return 0;
}
练习一下
打印菱形
#include <stdio.h>
int main(){
int n,j,k,i,h,l,p,q;
printf("enter n:");
scanf("%d",&n);
h=(n+1)/2;
q=h-1;
if(n%2==0){
printf("error!");
}else{
for(k=1;k<=n;k++){
if(k<=(n+1)/2){
for(j=q;j>=k;j--){
printf("%4c",' ');
}
for(i=1;i<=k;i++){
printf("%4c",'*');
}
for(l=3;l<=i;l++){
printf("%4c",'*');
}
printf("\n");
}else{
while(h>0){
h=h-1;
for(p=h;p<=q;p++){
printf("%4c",' ');
}
for(j=1;j<=h;j++){
printf("%4c",'*');
}
for(l=1;l<h;l++){
printf("%4c",'*');
}
printf("\n");
}
}
}
}
return 0;}
运行结果