C笔记(八)——循环控制

一、while语句

    while语句用来实现“当型”循环结构。一般形式为:

    while(表达式)

      {

        语句

        }

    若条件为真,继续循环;条件为假(0),循环结束。while(1)是死循环的写法。通常不知道其循环次数

二、do...while语句

    先执行循环体,再判断循环条件是否成立。其一般形式为

    do

       { 循环体语句;}

    while(条件/表达式);

    对于do...while语句来讲,循环的复合语句至少能执行一次。(因其先执行,再判断)

    对while语句来说,复合语句可能一次也不能执行。

三、for语句循环

    c语言中最灵活的语句,不仅可用于循环次数确定的情况,还可用于循环次数不确定只给出循环结束条件的情况。它完全可以代替while语句。其一般形式为:

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

    {

      语句; 

    }

    表达式1可以是设置循环变量初值赋值表达式,也可以是与循环变量无关的其他表达式

    表达式2为循环条件

    表达式3循环变量增值

    注:表达式1可省略,但其后面的分号不能省。

    eg:for(i = 0; i < 10; i ++)

                sum = sum + 1;

    等同于

        for(; i < 10; i ++)

                sum = sum + 1;

四、continue语句

    continue语句表示结束本次循环,循环遇到continue语句,不再执行continue下面的代码,而是直接返回到循环开始处进行下一次是否执行循环的判断。

五、break语句

    循环遇到break语句会终止整个循环过程,并退出。

下面是利用循环写的一个关于上三角,下三角的程序:

#include <stdio.h>
int main()
{
    int i, j;
    int sum = 0;
    while(1)
    {
       printf("Please input sum:");
       scanf("%d",&sum);

       if(sum < 2)
           break;
       if(sum % 2 == 0)  //当sum为偶数时执行下面的程序
       {
        for(i = 1; i < sum; i++)  //输出的星星行数,sum-1行
        {
            if(i <= sum / 2 )    //上三角部分
              {
                    for(j = 0; j < (sum / 2 -i); j++)  //控制空格数量。printf(“ ”)这句在j < (sum / 2 -i);限制条件下运行。
                    {
                        printf(" ");
                    }
                    for(j = 0; j < (2 * i - 1 ); j++)

                        printf("*");
                        printf("\n");
               }
           else  //下三角部分
            {
                for(j = 0; j < (i - sum / 2); j++)    //控制空格数量。
                  {
                    printf(" ");
                  }
                for(j = 0; j < ((sum - i) * 2 - 1); j++)   //控制星星的数量
                    printf("*");
                printf("\n");
            }
        }
       }
       else    //sum为奇数时
       {
           for(i = 1; i <= sum; i++)
           {
               if(i <= sum / 2 + 1 )  //shang san jiao
                 {
                       for(j = 0; j < ((sum / 2 + 1) -i); j++)
                       {
                           printf(" ");
                       }
                       for(j = 0; j < (2 * i - 1 ); j++)

                           printf("*");
                           printf("\n");
                  }
              else    //xia san jiao
               {
                   for(j = 0; j < (i - sum / 2 - 1); j++)
                     {
                       printf(" ");
                     }
                   for(j = 0; j < ((sum + 1 - i) * 2 - 1); j++)
                       printf("*");
                   printf("\n");
               }
           }
       }
    }
    return 0;
}

运行结果如下:


猜你喜欢

转载自blog.csdn.net/qq_37764129/article/details/79844324