zoukankan      html  css  js  c++  java
  • 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,则输出结果如下:

                                                                            *****

                                                                            *****

  • 相关阅读:
    爬虫基础1 怎么使用浏览器查看网络请求
    前端模块化总结(commonJs,AMD,CMD,ES6 Module)
    js强制类型转换规则
    vue-cli3中使用mxgraph的一些总结
    js概念笔记(this)
    js概念笔记(for循环,模块化)
    根据对象数组的某一属性排序
    从svg诞生的panda
    gulp笔记(从开发到发布)
    webpack4.x学习笔记
  • 原文地址:https://www.cnblogs.com/yddlvo/p/4440352.html
Copyright © 2011-2022 走看看