if 语句多分支程序设计

发布时间:2022-09-04编辑:zhushican阅读(307)

 if 语句多分支程序设计

1. if 语句多分支格式

if(表达式1)

语句1;

else if(表达式2)

语句2;

else if(表达式3)

语句3;

        …

else if(表达式m)

语句m;

else

语句n;

if语句执行过程为:先判断表达式1的值,若其值为非0,则执行语句序列1;若其值为0,则判断表达式2,若其值为非0,则执行语句序列2;若其值为0,则继续判断后面的表达式,直到最后,若没有表达式的值为非0,则执行最后的语句序列n。最后的else语句可以没有,也即当没有表达式满足条件时将不进行任何操作。其执行过程如图1所示。

 if 语句多分支程序设计

1 if-else-if执行过程

【例3-6根据键盘输入字符ASCII码来判别其类型


#include <stdio.h>

int main()

{

    char c;

    printf("请输入一个字符:");

    c=getchar();

    if(c<32)

        printf("控制字符\n");

    else if(c>='0'&&c<='9')

        printf("数字\n");

    else if(c>='A'&&c<='Z')

        printf("大写字母\n");

    else if(c>='a'&&c<='z')

        printf("小写字母\n");

    else

        printf("其他字符\n");

    return 0;

}


程序运行结果:

请输入一个字符: p

小写字母

在本例中,由ASCII码表可知ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。这是一个多分支选择问题,用if-else-if语句编程,判断输入字符ASCII码所在的范围,分别给出不同的输出。

   说明:

(1)  if后的“表达式”一般为关系表达式或逻辑表达式,也可以是任意数值类型,必须用“()”括起来。

  (2)  else子句是if语句的一部分,必须与if配对使用,不能单独使用。

  (3)  当if和else下面的语句不只一条语句时,要用复合语句形式,即将多条语句用{}括起来,否则它将只执行后面的第一条语句。特别注意{}中的每一条语句后都要加“;”但{}后不需要加”;”。

  (4)  其中格式一可以看做是格式二不考虑条件不成立时的一种特殊情况。

  (5)  格式三中最后的else语句可以没有,即判断各种情况,若没有一种条件成立时,可以不执行任何操作

  (6)  格式三种的各表达式其条件要互不相容。

2 .if 语句的嵌套与嵌套匹配原则

if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。其一般形式可表示如下:

1if(表达式1)

    if(表达式2

语句序列1

else

语句序列2

2if(表达式1)

if(表达式2

语句序列1

else

语句序列2

else

语句序列3

3if(表达式1)

语句序列1

else

if(表达式2

语句序列2

else

语句序列3

4if(表达式1)

if(表达式2

语句序列1

else

语句序列2

else

if(表达式3

语句序列3

else

语句序列4

if语句嵌套时,else子句与if的匹配原则:else子句总是在它上面、距它最近、且尚未匹配的if配对。例如:


if(a==b)

if(b==c)

printf(“a==b==c”);

else

printf(“a!=b”);


因为else子句总是与在它上面距它最近、尚未匹配的if配对,因此,次程序中的else子句会与if(b==c)配对而不是与if(a==b)配对,这样容易发生错误。为了实现正确的配对方法,一般加上{},可作如下修改:

if(a==b)

{

   if(b==c)

         printf(“a==b==c”);

}

else

         printf(“a!=b”);

3-7】比较两个数的大小关系。


#include <stdio.h>

int main(){

     int a,b;

     printf("please input a,b:    ");

     scanf("%d%d",&a,&b);

     if(a!=b)

     if(a>b)  printf("a>b\n");

     else     printf("a<b\n");

     else     printf("a=b\n");

     return 0;

}

为了增强程序的可读性,一般情况下较少使用if语句的嵌套结构。

if-else-if多分支语句改写程序:

#include <iostream.h>

     #include <stdio.h>

     int main(){

     int a,b;

     printf("please input a,b: ");

     scanf("%d%d",&a,&b);

     if(a==b) printf("a=b\n");

     else if(a>b)  printf("a>b\n");

     else  printf("a<b\n");

     return 0;

    }

程序运行结果:

please input a,b:34 67

a<b


评论