while,for,do...while三种循环语句

一、while 循环

      while 语句的语法结构和 if 很相似。

1.1 if 和 while 的对比

        if (表达式)                              while(表达式)

               语句;                                           语句;

  while 循环语句的执行流程:

while,for,do...while三种循环语句_第1张图片

       练习1:在屏幕上打印1~10的数字。

#include 
int main()
{
    int i = 1;//i为循环变量,i=1是对i的初始化
    while(i<=10)//判断
    {
         printf("%d ",i);
         ++i;//调整,对i的调整
    }
return 0;
}

       练习2:输入一个正的整数,逆序打印这个整数的每一位。

              例: 输入:1234              输出:4321

       思路分析:要得到每一位数,就需要用到除法和取模运算1234%10=4;1234/10=123,利用这种思想来达到1234到4321的转换。

#include 
int main()
{
    int n = 0;
    scanf("%d",&n);
    while(n)
    {
       printf("%d",n%10);
       n = n/10;//赋值
    }
 return 0;
}

二、for 循环

      在 for 循环中它解决了 while 循环中初始化、调整、判断三个点距离很散的问题。 

      2.1 for 循环执行的流程

           for(表达式1“初始化”;表达式2“判断”;表达式3“调整”)

#include 
int main()
{
    int i = 0;//i为循环变量
    for(i=1;i<=10;++i)
    {
       printf("%d",i);
    }
return 0;
}

for 语句中 第一步:i=1   ---  初始化(只被执行一次)

                 第二步:i<=10   ---  判断

                 第三步: 执行printf  ---   打印

                 第四步:++i   ---   调整

        练习:输出1~100之间的3的倍数的和。

#include 
int main()
{
    int i = 0;
    int sum = 0;
    for(i=1;i<=100;i++)
    {
         if(i%3 == 0)
             sum = sum + i;
    }
    printf("%d\n",sum);
    return 0;
}

  三、do...while 循环 

         3.1 语法形式 

            do

                 语句; 

           while(表达式);//若表达式为真,则继续循环

        3.2 练习

        练习1:在屏幕上打印1~10,利用 do...while 循环。

#include 
int main()
{
    int i = 1;
    do
    {
        printf("%d",i);
        i++;
    }
    while(i<=10);
    return 0;
}

           练习2:输入一个正整数,计算这个数是几位数?

#include 
int main()
{
    int n = 0;
    scanf("%d",&n);
    int count = 0;//计数有多少位
    do
    {
        count++;
        n = n / 10;
    }
    while(n);
    printf("%d",count);
    return 0;
}

四、while 循环语句中 break  和 continue 语句  

         break:其作用是永久性的终止循环,只要 break 被执行,直接跳出循环,继续往后执行。

         continue:跳过本次循环 continue 后面的代码,在 for 和 while 中有所差异。

    4.1 使用 while 在屏幕上打印1~10.
#include 
int main()
{
    int i = 1;
    while(i<=10)
    {
         if(i == 5)
         break;
         printf("%d",i);
         i++;
    }
return 0;
}

      在上述程序中可得到1234的结果,并不能打印出5以后的数字,就是因为当i=5时,循环遇到break,结束循环。

#include 
int main()
{
    int i = 1;
    while(i<=10)
    i++;
    if(i == 5)
        continue;
    printf("%d",i);
return 0;
}

       在此段代码中,最后得到的结果是1 2 3 4 6 7 8 9 10 

      4.2 使用 for 在屏幕上打印1~10
#include 
int man()
{
    int i = 0;
    for(i=1;1<=10;i++)
    {
       if(i == 5)
           break;
       printf("%d",i);
    }
return 0;
}

        在程序中,打印出来的结果为1,2,3,4 

#include 
int man()
{
    int i = 0;
    for(i=1;1<=10;i++)
    {
       if(i == 5)
         continue;
       printf("%d",i);
    }
return 0;
}

       在这段程序中,将break替换成了continue得到的结果为1,2,3,4,6,7,8,9,10

4.3 使用do...while 在屏幕上打印1~10

   

#include 
int main()
{
    int i = 1;
    do
    {
        if(i == 5)
           continue;
        printf("%d",i);
        i = i + 1;
     }
     while(i<=10)
return 0;
}

        在这段程序里只能打印出来1,2,3,4,接下来就会进入死循环。

五、循环的嵌套 

       三种循环 while、for、do...while 往往会嵌套在一起才能更好的解决问题,即循环嵌套。

练:找出100~200之间的素数,打印在屏幕上。

    思路:判断i是否是素数,用2~i-1的数去挨个试除i,若其中有一个数字整除了i,i就不是素数;若所有的数都不能整除i,那么i就是素数。

#include 
int main()
{
    int i = 0;
    int count = 0;
    for(i=100;1<=200;i++)
    {
        int j = 0;
        int flag = 1;//假设i是素数
        for(j=2;j

六、goto 语句 

      goto 语句可以实现在同一个函数内跳转到设置好的标号处。goto 语句若使用不当,会导致在函数内部随意乱跳转,打乱程序的执行流程。goto 语句的优点就是多层循环嵌套时,goto 语句会让循环快速跳出。

for(...)
{
    for(...)
    {
         for(...)
         {
             if(disaster)
                 goto error;
         }
    }
}
error;

        goto 语句既可以往前指也可以往后指,没有对其规定。

你可能感兴趣的:(c语言,开发语言)