C语言中分支结构及循环结构的简单介绍

C语言程序中的结构可分为以下三种:

        1.顺序结构:程序从上往下依次执行就叫顺序结构

          2.分支结构:程序有选择的执行某段代码或者不执行某段代码

          3.循环结构:程序重复的执行某段代码 

顺序结构是最简单也是最基本的程序结构,它是由若干段代码组成,并按照从上到下的顺序依次执行的,而我今天主要简单介绍一下分支结构及循环结构。

一、分支结构

分支结构有两大类语句:一种是if语句,一种是switch语句

1、分支结构之 if 篇

     a.  if 语句的第一种形式

          语法定义:     if(表达式){

                                     语句块;

                                  }

           语义:如果表达式的结果为真,则执行语句块,否则不执行语句块。

    b. if 语句的第二种形式

         语法定义:     if(表达式){

                                 语句块1;

                                }else{ 

                               语句块2;

                               }

        语义:如果表达式的结果为真,则执行语句块1,否则执行语句块2。语句1或者语句块2,至少会有一个被执行。

   c. if 语句的第三种形式

        if 语句的嵌套,简单来说就是if语句里再嵌套if语句,并没有严格意义上的语法定义,遵守上面两种形式就ok。

   d. if 语句的第四种形式

       语法定义:      if(表达式1){

                                 语句块1;

                                }else if(表达式2){ 

                               语句块2;

                               ... ...

                               }else if(表达式n){

                                语句块n;

                               }else{

                                语句块n+1;

                               }

            语义:先判断表达式1,如果成立则执行语句块1,后面的都不执行了,否则继续判断表达式2,如果成立,则执行语句块2,后面的都不执行了,如果不成立则继续判断语句块n,如果成立则执行语句块n,否则继续往下判断,直到else上面的条件都不满足,就执行语句块n+1。我们的这种语法格式是一个整体,上面判断过的内容如果不成立,那么下面判断时就已经做了过滤。

以下以if的第四种形式为例,进行一段编程:

        输入一个属于0-100的成绩,按100-90,89-80,79-70,69-60,59-0,分别分成A、B、C、D、E等。

#include 

   int main(int argc, const char * argv[]) {

            printf("请输入您的成绩\n");
            
            int score;
            
            scanf("%d",&score);
            
            if(score<=100 && score>=90){
                
                printf("您的成绩为A等\n");
            
            }else if(score>=80){
                
                printf("您的成绩为B等\n");
            
            }else if (score>=70){
            
                printf("您的成绩为C等\n");
                
            }else if (score>=60){
                
                printf("您的成绩为D等\n");
            
            }else{
            
                printf("您的成绩为E等\n");
            }
            
            printf("程序结束\n");
            return 0;
   }
    

 if语句小tips:

     1.if语句后面千万不要加分号,如果你非要手贱加一个分号,那么就加在大括号后面

     2.if语句的大括号,其实是可以省略的!当你省略大括号的时候,那么if语句只能管到离它最近的一句语句,但是这句语句不能是声明变量的语句

     3.if语句里面可以写任意条语句(必须要有大括号)

     4.0的数就是真,0就是假,避免让你的表达式是永真或永假

     5.if语句里面定义的变量只能在它语句块里面访问

     6.if语句小括号里面的表达式可以写任意表达式



2、分支结构之 switch篇

      语法定义:           switch(表达式){
                                             case 常量表达式1:
                                            语句块1
                                             break;

                                            case 常量表达式2:
                                            语句块2
                                            break;

                                           case 常量表达式3:
                                           语句块3
                                           break;
                                           ……

                                           default:
                                           语句块n
                                           break;
                                     }

语义:先得出表达式的结果,根据结果跳转到相应的case语句块里面去执行

   表达式结果 == 常量表达式 就叫相应的case语句块

                  如果case 后面的常量表达式没有一个跟表达式结果对应的,那么就跳转到 default里面执行语句块n。

switch语句的穿透问题:当case块里面不加break的时候,会发生穿透

穿透意思:就是从这个case块里面执行完语句后,会继续跳到下一个case块里面继续执行。所以,我们必须加break,防止穿透。break可以跳出当前的switch语句

实例: 要求用户输入一个月份,判断这个月份属于哪个季节
            12月1月 2月:冬季
            3月4月5月:春季
            6月7月8月:夏季
            9月10月11月:秋季

#include 

int main(int argc, const char * argv[]) {
    
        printf("请输入月份\n");
        int month;
        scanf("%d",&month);
        
        switch (month) {
                
            case 1:
            case 2:
            case 12:
                printf("冬季\n");
                break;
                
            case 3:
            case 4:
            case 5:
                printf("春季\n");
                break;
                
            case 6:
            case 7:
            case 8:
                printf("夏季\n");
                break;
                
            case 9:
            case 10:
            case 11:
                printf("秋季\n");
                break;
                
            default:
                printf("输入错误\n");
                break;
        }


switch语句小tips:

1.switch语句后面的小括号只能写整数类型的表达式,否则会报错

2.case后面只能接常量表达式且不能有重复的值

3.switch小括号后面不要加分号,手贱要加分号加在大括号后面

4.case后面不能立即声明变量,除非在声明前面加一条或者N条语句,非要在 case后面立即声明变量,那么就在case块里面加一个大括号

5.如果不加大括号声明的变量,其他case块也可以访问

6.default可以写在任意位置,不影响结果

注: 任何可以用if语句实现的功能,绝对也可以用switch语句来实现,同样用switch语句可以做得东西,if也完全可以。

        如果要判断范围的话用if比较方便,用switch比较麻烦,不能直接用;

        如果是判断具体的某个值,并且值不是很多的时候用switch方便和简洁。




二、循环结构

 循环结构主要语句:while循环、do-while循环、for循环

1、循环结构之 while 篇
  
    a. while  语句

语法定义: while(表达式){

                        循环体;
                     }
语义:1.先判断表达式是否成立,如果成立,则跳转第2点内容,否则跳转第3点内容
    2.执行循环体,执行完毕跳转到第1点内容
            3.跳出循环,循环结束

遍历1-10的数字,代码如下:

#include 

int main(int argc, const char * argv[]) {
    
   //循环变量,用来控制循环的次数的
    int i = 0;
    
   while (i < 10) {//i<后面的数字就能控制循环的次数,并且后面的数字是循环额次数

       printf("%d ",i+1);

       i++;   //控制循环结束的语句
   }    
   return 0;
}
while循环语句小tips:

1.防止死循环。避免条件永真或永假。如果永真就是死循环,如果永假就不循环,写起来毫无意义

2.while循环后面千万不要加分号,手贱要加分号,就加在大括号后面

3.记得结束循环的语句不要忘了写,如以上的 i++;

4.循环跟if语句一样的地方就是:大括号可以省略。只能控制离它最近的一条语句,并且这条语句不能是声明变量的语句


2、循环结构之do- while 篇

do-while的语法:do{

                                    循环体;

                              }while(表达式);

注意:while的小括号后面一定要加分号

语义:    1.执行循环体,跳转到第2点

2.判断表达式的结果是否为真,如果为真,跳转到第1点,否则跳转到第3点

3.跳出循环,循环结束。

跟while循环的最大的区别就是:do-while是先执行循环体,再判断,while是先判断再执行

while里面的循环体很可能1次都不会被执行,do-while里面的循环体至少被执行1次。

实例就不演示出来了,do-while 一般在循环体至少需要被执行一次的时候使用。


3、循环结构之for 篇

 在上面介绍while循环的时候,提过一定要写结束循环的语句(i++;),否则就会发生死循环。那么for循环可以起到让我们无论如何都不会忘却写i++;

首先语法是:    for(表达式1;表达式2;表达式3){

                                                循环体;

                                }

语义:1.先执行表达式1,跳转到第2点

2.判断表达式2的结果是否为真,如果为真,跳转到第3点,否则跳转到第5点

3.执行循环体,执行完毕,跳转到第4点

4.执行表达式3,执行完毕跳转到第2点

5.跳出循环,循环结束

遍历1-10的数字,代码如下:

#include 

int main(int argc, const char * argv[]) {
    
        for (int i=1; i<=10; i++) {
        
        printf("%d  ",i);
        
        }
    
   return 0;
}

for循环的其他格式:

 表达式1,表达式2,表达式3都可以省略

注意:表达式2没写的话代表是死循环

就算你不写表达式1,表达式2,或者表达式3,但是那两个分号无论如何都不省略

表达式1,表达式3,可以写任意条语句,用 ,(逗号)隔开


for循环的嵌套( 可用来打印各种图形,一般用来控制平面)

意思即为:一个for循环里面还嵌套了一个for循环

含义:外层循环控制行数,内层循环控制列数!


实例:打印等腰三角形,

           * 

        * * * 

      * * * * * 

   * * * * * * * 

* * * * * * * * * 


代码如下:

#include 

int main(int argc, const char * argv[]) {
            
      for (int i=1; i<=5; i++) {   //控制行数
                
          for (int j=1; j<=5-i; j++) { //控制每行等腰三角形前面的空格数量,空格数量=总行数-当前行数.如第一行只有一个*,前面有4个空格,所以空格数=5-1=4
                    
              printf("  ");    //打印每行的空格
      }
          for (int j=1; j<=i*2-1; j++) { //控制每行等腰三角形的*数量,*=行数*2-1.如第一行*=1*2-1=1
                     
              printf("* ");  //打印每行的星星

          }

              printf("\n");  //打印每行的换行
                
     }
     return 0;
}


总而言之,不管图形如何复杂,外层循环控制行数都是可以确定的。


以上这些,分支结构及循环结构就介绍完毕。




 


你可能感兴趣的:(C语言,iOS,资料汇总)