C语言中的程序结构

C语言中的程序结构有三种,分别是顺序结构、选择结构和循环结构。

一、按照语句的先后顺序执行的程序结构,称为顺序结构。

     下面以一个求三角形面积的例子进行说明,其代码如下:

例1.1

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4       int width,height,s;
 5       printf("请输入三角形的底宽:
");
 6       scanf("%d",&width);
 7       printf("请输入三角形的高:
");
 8       scanf("%d",&height);
 9       s=width*height/2;
10       printf("三角形的面积为:s=%d
",s);
11       return 0;
12  }
复制代码

       程序在执行时,需先输入三角形的底宽(6行),再输入高(8行),程序往下执行,计算三角形的面积(9行),最后将面积显示出来(10行)。这是按照语句的先后顺序执行的。

二、根据某种条件的成立与否而采用不同的程序段进行处理的程序结构,称为选择结构。

     通常选择结构有两个分支,条件为真,执行甲程序段,否则执行乙程序段。有时,两个分支还不能完全描述实际问题(例如将学生成绩根据分数高低分成A,B,C,D,E等多个等级),需要分成多个分支,这样的程序结构称为多分支选择结构。

1、if简单语句

其语法形式如下:

    if(表达式)         

    {语句1}

功能:计算表达式的值,若为“真”,则执行语句1,否则将跳过语句1,执行if语句的下一条语句。

例2.1

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4       int age;
 5       scanf("%d",&age);
 6       if(age>18)
 7       {
 8             printf("您已经是成年人了!");
 9       }
10       re&turn 0;
11  }
复制代码

      上述程序中,首先定义了整型变量age,在输入age的值之后,根据age的值的大小,来判断是否为成年人。运行代码时,假如输入的数值大于18岁,则输出”您已经是成年人了!“,否则直接退出程序。

2、if—else语句

其语法形式如下:

  if(表达式)        

  {语句1}

  else

  {语句2}

功能:计算表达式的值,若表达式的值为”真“执行语句1,并跳过语句2,继续执行if—else语句的下一条语句,若表达式为假,跳过语句1,执行语句2,然后继续执行if—else语句            的下一条语句。

例2.2

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4        int age;
 5        scanf("%d",&age);
 6        if(age>18)
 7        {  
 8               printf("您已经是成年人了!");
 9         }
10        else
11        {
12               printff("您还是未成年人了!");
13         }
14      re&turn 0;
15  }
复制代码

     上述程序与例2.1相比,多了一条语句。在运行代码时,假如输入的数值大于18岁,则输出”您已经是成年人了!“,否则输出”您还是未成年人!“。

3、嵌套的if语句

在if语句和if—else语句形式中,语句1或语句2可以是任意合法语句。若它们也是if语句,就构成嵌套的if语句。嵌套形式有多种,下面介绍几种。

     嵌套形式1                                     嵌套形式2                                     嵌套形式2

     if(表达式1)                                if(表达式1)                                  if(表达式1)

     {                                                {                                                 {语句1}

           if(表达式2)                                if(表达式2)                             else if(表达式2)

           {语句1}                                       {语句1}                                  {语句2}

           else                                        }                                                else 

           {语句2}                                 else                                              {语句3}

      }                                               {语句2}

      else

     {语句3}

例2.3:求下列分段函数

        当x>0时,y=x+1;当x=0时,y=x;当x<0时,y=x-1;

利用嵌套形式1:

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4       int x,y;
 5       scanf("%d",&x);
 6       if(x>=0)
 7       {
 8             if(x>0)
 9             {
10                    y=x+1;
11             }
12             else
13             { 
14                    y=x;
15             }
16       }
17       else
18       {
19              y=x-1;
20        }
21        printf("x=%d,y=%d
",x,y);
22        return 0;
23 }
复制代码

利用嵌套形式2:

复制代码
 1 #include<stdio.h>
 2  int main()
 3 {
 4        int x,y;
 5        scanf("%d",&x);
 6        y=x;
 7        if(x>=0)
 8        {
 9              if(x>0)
10              {
11                     y=x+1;
12              }
13        }
14        else
15        {
16              y=x-1;
17        }
18        printf("x=%d,y=%d
",x,y);
19        return 0;
20  }
复制代码

利用嵌套形式3:

复制代码
 1 int main()
 2 {
 3       int x,y;      
 4       scanf("%d",&x);
 5       if(x>0)
 6       {
 7             y=x+1;
 8       }
 9       else if(x=0)
10       {
11             y=x;
12       }
13       else 
14       {
15             y=x-1;
16       }
17       printf("x=%d,y=%d
",x,y);
18       return 0;
19 }
复制代码

4、switch语句

其形式如下:

switch()

{  

    case 常量表达式1:语句1

    case 常量表达式2:语句2

    ……

    case 常量表达式n:语句n

    default: 语句n+1

}

主意:switch语句常与break连用,break的功能为终止它所在的switch语句。     

 例2.4根据学生成绩的高低划分等级,代码如下:

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4      int x;
 5      printf("请输入学生成绩:
");
 6      scanf("%d",&x);
 7      switch(x/10)
 8      {
 9            case 10: 
10            case 9:
11                  printf("A");
12                  break;
13            case 8:
14                  printf("B");
15                  break;
16            case 7:
17                  printf("C");
18                  break;
19            case 6:
20                  printf("D");
21                  break;
22            case 5:
23            case 4:
24            case 3:
25            case 2:
26            case 1:
27            case 0:
28                  printf("E");
29                  break;
30            default:
31                  printf("无效数据!");
32      }
33      return 0;
34 }
复制代码

   上述程序中,先定义一个整型变量x,在输入x的值后,根据x所在的范围,确定成绩的等级。运行代码时,假如输入85,则输出"B",这表示该学生成绩等级为B。若该switch语句中,没有break语句,则程序会继续执行下面语句,输出B、C、D、E。

三、控制一个代码块多次执行,知道某个条件被满足的程序结构,称为循环结构。

C语言中,while语句、do—while语句和for语句是直接控制循环过程的循环语句。

1、while语句

其语法形式如下:

   while(表达式)

   {循环体语句}

功能:首先计算表达式的值,若为”真“,则执行循环体语句,执行完毕后,再计算表达式的值,若仍为”真“,则重复执行循环体语句。直到表达式的值为”假“时,结束while语句的执行,继续执行while语句后面的语句。

下面以求1+2+3+……+100的和为例,说明while循环语句的用法。

例3.1

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4       int s,i;
 5       s=0;
 6       i=1;
 7       while(i<=100)
 8       {
 9             s=s+i;
10             i++;
11       }
12       return 0;
13 }
复制代码

2、do—while语句

其语法形式如下:

  do

  {循环体语句}

  while(表达式);

功能:首先执行循环体语句,然后检测循环控制条件表达式的值,若为”真“,则重复执行循环体语句,否则退出循环。

下面以求1+2+3+……+100的和为例,说明do—while循环语句的用法。

例3.2

复制代码
 1 #include<stdio.h>
 2 int main()
 3  {
 4        int s,i;
 5        s=0,i=1;
 6        do
 7        {
 8             s=s+i;
 9             i++;
10        }while(i<=100);
11        return 0;
12  }                            
复制代码

3、for语句

其语法形式如下:

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

  {循环体语句}

功能:首先计算表达式1的值,然后检测表达式2的值,若其为“真”,则执行循环体语句,执行完毕后,在计算表达式3。然后,再测试表达式2的值是否为“真”,若为“真”,继续执行循环体语句,若为“假”,则终止循环。

下面以求1+2+3+……+100的和为例,说明for循环语句的用法。

例3.3

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4       int i,s;
 5       s=0;
 6       for(i=1;i<=100;i++)
 7       {
 8             i++;
 9       }
10       return 0;
11 }
复制代码

    从例3.1、3.2和3.3可以看出三种循环语句可以相互转化。但是它们也有各自的侧重点,应当根据不同的需求,选取适宜的语句。

  • while语句和for语句属于“当型”循环,即“先判断,后执行;而do—while语句属于“直到”循环,即“先执行,后判断”。
  • 实际运用中,for语句多用于循环次数明确的问题,而无法确定循环次数的问题采用while语句或do—while语句比较自然。
  • for语句的三个表达式有多种变化,例如省略部分表达式或全部表达式,甚至把循环体也写进表达式3中,循环体为空语句,以满足循环语句的语法要求。

4、循环嵌套

循环结构的循环体语句可以是任何合法的C语句。若一个循环结构的循环体中包含了另一个循环语句,则构成了循环嵌套,称为多重循环。

下面以用*输出一个矩形为例,说明循环嵌套的用法。

例3.4

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4       int i,j;
 5       int width,height;
 6       printf("输入矩形的长和宽:
");
 7       scanf("%d%d",&width,&height);
 8       for(i=1;i<=width;i++)          //i控制矩形的长
 9       {
10             for(j=1;j<=height;j++)  //j控制矩形的宽
11             {
12                  printf("*");
13             }
14             printf("
");                 //一行*输出后换行
15       }
16       return 0;
17 }
复制代码

    上述程序中,首先申请四个变量,分别为i,j,width和height。i和j均作为循环控制变量,分别控制矩形的宽和高,当输入width和height的值时,矩形的宽和高就确定了,最后利用for语句将矩形输出来。

假如width=5,height=2,则输出结果如下:

                                                                        *****

                                                                        *****

原文地址:https://www.cnblogs.com/yddlvo/p/4440352.html