选择结构

1.if…else 选择结构

在高中数学中,我们学过这样的程序结构:

这个流程图的程序运行过程是:当表达式为真,则沿着左侧的箭头向下执行,否则沿着右侧的箭头向下执行。例如:

#include<stdio.h>        
int main( )
{
    int  a;
    printf(“请输入你的性别,1为男,2为女:\n”);
    scanf(“%d”,&a);
    if(a = 1)
    {
        printf(“你是男生\n”);
    }
    if(a = 2)
    {
        printf(“你是女生\n”);
    }
    else
    {
        printf(“你确定没有输入错?\n”);
    }
    return 0;
}

上述程序运行时,先提示用户输入数字,然后按照要求输出男或女。这是一个选择结构的典例。选择结构的一般形式如下:

if(表达式1)
    语句1;
if(表达式2)
    语句2;
if(表达式3)
    语句3;
…
if(表达式n)
    语句n;
else
    语句n+1;

需要注意的是,表达式1~表达式n都是逻辑表达式,即能判断正误的表达式。当表达式的值为1(TRUE)则执行此if下的语句,否则继续执行下一个if的判断。当语句1~语句n为多条语句时,则要用花括号将其括在一起变成语句体。

2.switch 多分支选择结构

switch-case-default结构可以实现多分支选择。例如要编写一个程序,根据学生的成绩等级来输出成绩区间::

int  main()
{
    char  grade;
    printf(“输入你的成绩等级:\n”);
    scanf(“%c”,&grade);
    switch(grade)
    {
        case ‘A’ : printf(“80~100\n”);    break;
        case ‘B‘ : printf(“60~80\n”);     break;
        case ‘C’ : printf(“40~60\n”);     break;
        case “D” : printf(0~40\n);     break;
        default : printf(“输入错误”);
    }
    return  0;
}

当程序遇到switch关键字时,会将括号中的变量与switch语句体中的每个case匹配,执行对应的语句。每个case语句后都有一个break,它的作用是跳出这个case转到switch语句体结束。如果没有break的话,会在匹配到的case依次向下执行。

3.选择结构的嵌套

if和switch两种选择结构可以互相嵌套,形成嵌套结构。例如:

#include<stdio.h>
int main( )
{
    int  x, y;
    scanf(“%d”, &x);
    if(x < 0)
        y = -1
    else
        if(x == 0)
             y = 0;
        else
             y = 1;
    printf(“x = %d , y = %d\n” , x , y);
    return  0;
}

如上程序的流程如下图:

这个程序体现了if语句的嵌套结构。当我们在设计程序算法,遇到分支的情况时,需要合理设计选择结构的嵌套。这将会在日后的编程中渐渐体会到。

4.改变选择结构的状态 break

在switch选择结构中,如果在每一个分支后面没有特定的说明,默认会在此分支执行结束之后跳转到下一个分支。例如在第三部分、一、2的switch例程中,如果输入A,且每一个case语句结束的位置都没有break的话,输出结果是:

       80~100
       60~80
       40~60
       0~40
       输入错误

进行算法设计时,要根据具体需要来使用break来改变程序运行状态,来使算法适合要解决的问题。

这本书是xt写的上次修改: 2019-04-18 15:36:02

results matching ""

    No results matching ""