一、while语句

一般形式:
while(表达式)语句
执行流程:
1、计算表达式
2、如果表达式的值为非零,执行语句
3、返回第一步,重新计算表达式
4、如果表达式的值为零,则结束循环
5、循环三要素:初值 条件 增量
QQ截图20210824214611.png
利用while循环编写程序,求1+2+3+…+100的值

  1. #include<stdio.h>
  2. int main(void){
  3. int i=1,s=0;
  4. while(i<=100){
  5. s+=i;
  6. i++;
  7. }
  8. printf("1+2+...+100=%d\n",s);
  9. }

求学生的平均成绩,以输入负数成绩为结束
算法分析:
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语句

QQ截图20210824222409.png
QQ截图20210824222501.png

四、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语句

QQ截图20210824224406.png
QQ截图20210824224422.png

六、循环的嵌套

循环的嵌套:一个循环体内包含另一个完整的循环结构
按损坏嵌套的层数分别称为二重循环,三重循环…
C语言中while,do-while,for循环可以相互嵌套
QQ截图20210824224839.png
QQ截图20210824224853.png
QQ截图20210824225000.png
输出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;
            }
        }
}