C程序流程设计之选择结构

描述

程序流程图又称程序框图,是用统一规定的标准符号描述程序运行具体步骤的图形表示。程序框图的设计是在处理流程图的基础上,通过对输入输出数据和处理过程的详细分析,将计算机的主要运行步骤和内容标识出来。程序框图是进行程序设计的最基本依据,因此它的质量直接关系到程序设计的质量。

一、语句概述

C语句:以“;”作分隔符,编译后产生机器指令。

C语句分类:

表达式语句:表达式加分号构成。
空语句:;
复合语句:用 {…}括起来的一组语句
一般形式:{     [数据说明部分;]
                    执行语句部分;
            } 
说明:
      “}”后不加分号
      语法上和单一语句相同
      复合语句可嵌套

二、程序的三种结构

结构化程序设计

基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)

结构化程序:由三种基本结构反复嵌套构成的程序叫~

优点:结构清晰,易读,提高程序设计质量和效率

三种基本结构

顺序结构

程序框图

选择结构

程序框图

循环结构

程序框图

注:A,B,A1….An可以是一个简单语句,也可以是一个基本结构

三、if选择设计

if语句(条件选择语句)

if语句的三种形式

形式一:

格式:if (expression)   statement

执行过程:

if (x>y)
        printf(“%d”,x);

程序框图

形式二:

格式:

if (expression)  statement
                     else   statement2

执行过程:

if (x>y)   max=x;
       else         max=y;

程序框图

形式三:

格式:

if ( expr1 )            statement1
else if (expr2 )      statement2
else if (expr3 )      statement3
…...
[ else              statementn  ]

执行过程:

例:if (salary>1000)            index=0.4; 
        else if (salary>800)       index=0.3;
        else if (salary>600)       index=0.2;
        else if (salary>400)       index=0.1;
        else                                index=0;

程序框图

说明:

if后面的表达式类型任意

语句可以是复合语句

if(x)  <->if(x!=0)
if(!x) <->if(x==0)
例如:if(a==b&&x==y)    printf(“a=b,x=y”);
      if(3)    printf(“OK”);
      if(‘a’)   printf(“%d”,’a’);

例 考虑下面程序的输出结果:

#include 
     main()
    {   int x,y;
         scanf(“%d,%d”,&x,&y);
         if(x>y)
             x=y;   y=x;
         else
             x++; y++;
         printf(“%d,%d\\n”,x,y);
}

运行结果:

Compile Error!

if语句嵌套

if (expr1)
        if (expr2)   
              statement1
        else   
            statement2
if (expr1)
        if (expr2)   
             statement1
else
       statement3
if (expr1)
       statement1
else
        if(expr3)    
              statement3
        else   
             statement4
if (expr1)
        if (expr2)   statement1
        else           statement2
else
        if(expr3)    statement3
        else            statement4

例 输入两数并判断其大小关系

#include 
main()
{   int x,y;
    printf("Enter integer x,y:");
    scanf("%d,%d",&x,&y);
    if(x!=y)
       if(x>y)  printf("X>Y\\n");
       else     printf("X);
    else
       printf("X==Y\\n");
}

运行结果:

Enter  integer  x,y:12,23
            XEnter  integer  x,y:12,6
            X>Y
           Enter  integer  x,y:12,12
            X==Y

if ~ else 配对原则:缺省{ }时,else总是和它上面离它最近的未配对的if配对

if(……)
    if(……)
        if(……)
        else…...
    else…...
else…...

例如:

if (a==b)
    if(b==c)
    printf(“a==b==c”);
else
     printf(“a!=b”);

修改后

if (a==b)
{      if(b==c)
       printf(“a==b==c”);
}
else
    printf(“a!=b”);

实现if~ else 正确配对方法:加{ }

四、switch语句

一般形式:

switch( 表达式)
{      case     E1:
                    语句组 1;
                    break;
        case     E2:
                   语句组 2;
                    break;
         …….
        case    En:
                  语句组 n;
                   break;
        [default:
                   语句组 ;
                    break;]
}

执行过程:

程序框图

说明:

E1,E2,…En是常量表达式,且值必须互不相同
语句标号作用,必须用break跳出
case后可包含多个可执行语句,且不必加{ }
switch可嵌套
多个case可共用一组执行语句

例如:

switch(score)
    {       case    5:    printf(“Very good!”);
             case    4:    printf(“Good!”);
             case    3:    printf(“Pass!”);
             case    2:    printf(“Fail!”);
             default  :    printf(“data error!”);
      }

运行结果:score为5时,输出:

Very good! Good! Pass! Fail! data error!
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分