4.C语言流程控制——循环语句

==============

流程控制——循环语句

==============

.循环结构

        1.while循环
        2.do-while循环
        3.for循环
        4.break和continue控制循环

一、什么是循环?

能够实现重复执行某一个动作(程序)。

二、循环的三要素?

1.从哪里开始(起点、循环初值)
2.到哪里结束(终点、循环条件)
3.步长(步进)(促使循环条件结束的语句)

三、while循环(当型循环)

格式:

表达式1;

while(表达式2){
    语句组;
    表达式3;
}

表达式1:起点,从哪里开始,循环初值
表达式2:终点,循环条件,到哪里结束
表达式3:步长(步进)

逻辑:先执行表达式1,进入循环,再计算表达式2的值,值为1:则执行循环体的内容(先执行语句组,再执行表达式3),再次计算表达式2的值,如果为1,则继续执行循环体,直到表达式2的值为0,则退出循环体,结束循环。

练习:
1》输出1~100的整数
2》输出m~n的整数
int m, n ,t;
先在键盘上输入m和n的值

if(m>n)
 { t=n;
    n=m;
   m=t;
}
while(m<=n)
{
      printf(“%d”,M);
     m++;
}

3》求5!(n的阶乘:从1乘到n))

fac*=i;

四、do while循环(直到型循环)

格式:

表达式1;

do{
    语句组;
    表达式3;
}while(表达式2);

逻辑:先执行表达式1,进入循环,执行循环体,再计算表达式2的值,值为1:则继续执行循环体,直到表达式2的值为0,则退出循环体,结束循环。

1》求1+2+3+……+100的和

int i=1,sum=0
do
{     sum+=i;
        i++
}while(i<=100);
prinrf(“%d”,sum);

2》输出1-100中(7的倍数和带7的数除外)的数。

             int i=1;
do{
    if(i%7==0||i%10==7&&i/10==7)
{  printf(“%d”,i)

}
}while(i<=100);

while与do while的区别和联系

1.当表达式2的值(循环条件)第一次为1(真)时,没有任何区别。

2.当表达式2的值第一次为0时,do while语句至少要执行一次,while语句一次都不执行。

3.while是当型循环:先判断条件,后执行语句;do while是直到型循环:先执行语句,后判断条件。

【注】do while后必须加分号。

死循环:条件永远为1

while(1){
}

五、for循环(多功能循环)

格式:

for(表达式1;表达式2;表达式3){
    语句组;
}


表达式1;
for(;表达式2;表达式3){}



表达式1;
for(;表达式2;){
   语句组;
   表达式3;
}


for(;;)      死循环格式 

1》输出m至n的自然数中的(偶数和)与(奇数和)并统计偶数与奇数的个数分别是多少?
2》时钟(sleep(1));
3》解决猴子吃桃的问题(有一只猴子,还有一堆桃子,第一天的时候,吃了一堆桃子中的一半,没忍住,又多吃了一个;
第二天的时候,又吃了剩下桃子中的一半,没忍住,又多吃了一个,以后每天如此,直到第10天的时候,只剩下了一个桃子,问第一天的时候有多少个桃子)

六、break和continue控制循环

break:
1.用于switch语句中,终止switch语句,跳出switch语句
2.用于循环语句中,终止一层循环,跳出循环体

continue:用于循环语句中,终止一次循环,提前进入下一次循环

8》判断一个数是素数还是合数
//素数(质数):只能被1和它本身整除的数
七、循环嵌套
练习:
1》
111****
111****
111****

2》
打印m行n列的*
3》
111*
111**
111***
111****
4》
111****
111***
111**
111*
5》
111 *
111 **
111 ***
111****
6》
111 *
111 ***
111 *****
111*******
7》九九乘法表
8》一元钱的兑换方案(兑换成角)
9》用循环输出11112223333444
10》用循环输出12413412341234
11》输出1-100中的素数(质数)

         int i,j;
    for(i=0;i<=100;i++)
    {        if(i==0||i==1)
        {        printf("非素非合\n");
        }
        else
        {        for(j=2;j<=i;j++)
           {       if(i%j==0)
               break;
           }
        
            if(i==j)
                printf("%d是素数\n",i);
        }
    }

12》
111**** **** *
111 *** *** ***
111 ** ** *****
111 * * *******

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容