一、while语句
一般形式:
while(表达式)语句
执行流程:
1、计算表达式
2、如果表达式的值为非零,执行语句
3、返回第一步,重新计算表达式
4、如果表达式的值为零,则结束循环
5、循环三要素:初值 条件 增量
利用while循环编写程序,求1+2+3+…+100的值
#include<stdio.h>
int main(void){
int i=1,s=0;
while(i<=100){
s+=i;
i++;
}
printf("1+2+...+100=%d\n",s);
}
求学生的平均成绩,以输入负数成绩为结束
算法分析:
1、定义变量score、sum=0、n=0.
2、输入第一个学生的score
3、若score>=0,执行第4步,否则执行第7步
4、s=s+score
5、n++
6、录入下一个score,并返回第3步
7、如果n>0,输出s/n否则输出没有学生成绩
#include<stdio.h>
int main(void){
int n=0;
float sum = 0,score;
printf("请输入学生成绩,-1结束输入:");
scanf("%f",&score);
while(score >= 0){
sum += score;
n++;
printf("请继续输入:\n");
scanf("%f",&score);
}
if(n>0){
printf("学生的平均成绩为:%f",sum/n);
}
printf("没有成绩输入\n");
}
1、while其后表达式为大多关系表达式或者逻辑表达式。
2、循环体包括一个以上的语句时用花括号括起来构成复合语句。
3、注意循环条件的选择,防止形成死循环。
4、允许while语句的循环体又是while语句,从而形成双循环。
二、do-whlie语句
一般形式:
do{
语句
}while(表达式);(注意:分号不能丢)
执行流程:
1、执行语句
2、计算表达式
3、表达式的值为非零,返回第1步
4、表达式的值为零,结束循环
使用do-while要注意:
1、表达式中使用的循环控制变量必须赋初值
2、表达式必须用()括起来
3、循环体语句为多条语句时,必须用{}把它们括起来
4、循环体语句中必须有使循环趋向结束的语句
计算Fibonacci数列,直到某项大于1000为止,并输出该项的值。
#include<stdio.h>
int main(){
int f1,f2,f;
f1 = 0;f2 = 1;
do{
f = f1 + f2;
f1 = f2;
f2 = f;
}while(f2 <= 1000);
printf("F=%d\n",f);
}
三、while与do-while语句
四、for循环
for循环的一般形式如下:
for(表达式1;表达式2;表达式3)循环体
for循环的执行过程:
1、首先计算表达式1
2、然后计算表达式2,进行条件判断。若条件为真,则执行循环体;
否则,退出循环。
3、当条件为真时,循环体执行一次后,转回执行表达式3.然后执行表达式2,继续进行条件判断……
例如:for(k=0;k<10;k++)printf("*"); 输出结果为 **************
4、for语句中的表达式可以部分或全部省略,但两个”;”不可省略。
for( ;i<=10;i++ ); for( ; ; )printf( “*” );
5、for后的一对圆括号中的表达式可以是任意有效的C语言表达式。
for(sum = 0,i = 1 ; i <= 100 ; sum = sum + i , i++);
利用for语句编写程序,计算1+2+3+…+100的值。
#include <stdio.h>
main()
{int s,n;
s = 0;
for(n = 1;n <= 100 ; n++)s+=n;
printf("s = %d\n",s);
}
五、break continue语句
六、循环的嵌套
循环的嵌套:一个循环体内包含另一个完整的循环结构
按损坏嵌套的层数分别称为二重循环,三重循环…
C语言中while,do-while,for循环可以相互嵌套
输出9*9乘法表
#include <stdio.h>
void main()
{ int i,j;
printf("\n");
for(i = 1;i <= 9;i++)
{ for(j = 1;j <= i;j++)
printf( "%d*%d=%-3d",i,j,i*j);
printf("\n");
}
}
输出组成的等腰三角形(特点:第i行有2i-1个星号 若有四行 有4-i个空格)
#include <stdio.h>
void main()
{ int i,j,k;
for(i = 1;i <= 4;i++)
{
for(j = 1;j <= 4-i;j++)
putchar( ' ' );
for(k = 1;k <= 2*i-1;k++)
putchar( '*');
putchar( '\n' );
}
}
判断一个数是否为素数(除了1和它自身外,不能被其他自然数整除的数,又称质数)
#include <stdio.h>
#include <math.h>
int main(){
int number,i,n;
printf("请输入一个正整数:");
scanf("%d",&number);
n = (int)sqrt(number);
while(number>0){
if(number==1){
printf("1不是素数!");break;
}
for(i=2;i<=n;i++){
if(number%i==0)break;
}
if(i>n){
printf("%d是素数",number);break;
}
else{
printf("%d不是素数",number);break;
}
}
}