实现分支结构的语句的知识点架构及例题

一个分支结构的程序关键在于条件的描述和实现分支结构的语句。

1.if 语句

C语言的if语句有三种形式,分别适应不同的分支结构。

1.1简单的 if 语句

一般形式:if(表达式){语句}

执行流程:计算表达式的值,若值为0(即“真”),则执行指定语句,否则直接执行if语句的下一条语句(在C语言中,“0”为假,“非0”为真)。

在简单的if语句中,当if子句在语法上是一个语句时,两边的花括号“{}”可以不写,但如果包含多个语句,必须要用花括号“{}”括起来组成复合语句。

如: if(a>0) {b++ ;}   也可以写成:if(a>0) b++ ;

例1:输入整数x,根据下面的分段函数计算y的值。

y=\left\{\begin{matrix} x+1(x>0) & & & \\ x (x=0)& & & & \\ x-1 (x<0)& & & & \end{matrix}\right.

编程思路:x为任意整数,有3种取值的可能,只有通过判断才能确定具体的取值情况,以便给y赋值。本次解答只采用3个简单的if语句来完成的取值判断。

#include<stdio.h>
int main()
{
  int x,y;
  printf("输入整数x:");
  scanf("%d",&X);
  if(x>0)
    y=x+1;
  if(x==0)
    y=x;
  if(x<0)
    y+x-1;
  printf("%d=y",y);
      return o;
}

输入 60 ,得到的结果为:

1.2 双分支 if 语句(if-else 形式)

简单的if语句只在条件为“真”时执行指定操作。而双分支if语句,在条件为“真”或为“假”时都有要执行的操作。

1)一般形式

if(表达式)

{ 语句 1}

else

{ 语句 2} 

2)执行流程

计算表达式的值,若表达式的值为非0(即“真”),则选择执行语句1,否则执行语句2。

举一个例子:判断整数i的奇偶性:

if(i%2==0)

printf("i是偶数");

else

printf("i是奇数");

注意事项:

(1)if-else语句中的else子句可以省略,不带else子句时就是简单的if语句。

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

(3)如果if子句或else子句只有一条语句,“{}”可以省略,如上面的例子,但是包含多个语句时,必须要用“{}”括起来组成复合语句。

(4)C语言没有行的概念,因此if-else语句可以写在一行,也可以分多行书写。

(5)使用if语句时,不要随意加分号,否则会造成语法错误。(if或else后面没有分号)

(6)书写代码时,为了提高程序的可读性,if应与else对齐,而子句均向右推进(这样还起到整体书写的代码整齐的作用)。

例2:火车站托运行李,从甲地到乙地,按规定每张客票托运行李不超过50kg,按每千克1.35元计算运费,如超过50kg,超过的部分按每千克2.65元计算运费。编写程序计算托运费。

程序代码如下:

#include<stdio.h>
int main()
{
  float a,b;
  printf("请输入行李的重量");
  scanf("%f",&b);                        //这里是浮点型,所以用%f而不是整型%d.
  if(b<=50)
     a=b*1.35;
  else
     a=50*1.35+(b-50)*2.65;
  printf("您的行李托运费为:%.2f\n",a);    //"%.2f":限定小数位数,希望小数点后面只保留两位。
                  return 0;
                            }

    1.3条件表达式

双分支结构除了用if-else语句实现外,还可以使用条件表达式实现。

条件表达式的一般形式为:

表达式1?表达式2:表达式3

其中,表达式1、表达式2、表达式3可以是任何符合C语言规定的表达式,如:a>b?a:b(又叫三目操作符)。

条件表达式的运算过程为:先计算表达式1,如果表达式1的结果为真,则计算表达式2的值,并将其作为条件表达式的值;如果表达式1的结果为假,则计算表达式3的值,并将其作为条件表达式的值。

条件表达式通常应用于赋值语句之中。条件运算符的优先级高于赋值运算符,但低于关系运算符和算数运算符。例如:语句“if(a>b)max=a;else max=b;”可用条件表达式描述为"max=(a>b)?a:b;",如果a>b,max取a的值,否则max取b的值。

例3:任意提供2个整数,找出其中的大数。

用条件表达式解答如下:

#include<stdio.h>
int main()
{
  int a,b,max;
  printf("请输入两个数据:")
  scanf("%d%d",&a,&b);
  max=(a>b)?a:b;
printf("二者中的大数为:%d\n",max);
    return 0;
     }

用if-else语句解答如下:

#include<stdio.h>
int main()
{
  int a,b,max;
  printf("请输入两个数据:");
  scanf("%d%d",&a,&b);
  if(a>b)
     max=a;
  else
     max=b;
  printf("二者中的大数为:%d\n",max);
     return 0;
        }

1.4多分支if语句(if-else-if形式)

在实际应用中,存在大量的多分支问题。多分支if语句就是用来实现多分支结构的语句。

1)一般形式

if(表达式1)

     语句1

else if(表达式2)

     语句2

     ....

else if(表达式n)

    语句n

else

       语句n+1

2)执行流程

依次计算并判断表达式i(i为1~n),当表达式i的值为非0时,选择执行其后的语句;当表达式i的值都为0时,则执行语句n+1。

在多分支if语句中,表达式1的优先级最高,表达式2次之,无论执行完哪个分支语句,接下来都要转到多分支if语句的后续语句继续执行。

例4:对学生的考试成绩进行等级评价,90分以上为优秀,80~90分为良好,60~80分为及格,60分以下为不及格。请输入一个学生的成绩,判断其属于哪个等级。

程序代码如下:

#include<stdio.h>
int main()
{
  int score;
  printf("请输入分数:")
  scanf("%d",score);
  if(score>=90)
      printf("%d----------优秀\n",score);
  if(score>=80)
      printf("%d----------良好\n",score);
  if(score>=60)
      printf("%d----------及格\n",score);
  else
      printf("%d----------不及格\n,score):
               return 0;
           }

2.switch语句

switch语句是又一个描述多分支结构的语句。switch语句是一种特殊形式的if...else结构,用于判断条件有多个结果的情况。它是把多重的else if 改成更易用,可读性更好的形式。

1)一般形式:

switch(测试表达式)

{ case 常量表达式1:语句1;

  case 常量表达式2:语句2;

  ..........

  case 常量表达式n;语句n;

  default:语句n+1;

}

2)执行流程

1)先计算测试表达式的值。

(2)用测试表达式的值顺次同case后常量表达式的值进行比较。

(3)若找到值相等的常量表达式,则执行该常量表达式冒号后的语句(这是入口)。注意,该语句执行后,程序会依次执行其后的所有冒号后面所有的语句。

(4)若找不到匹配的常量表达式的值,则执行default后面的语句。

(5)问题:switch语句中的case子句和default子句有顺序要求吗?default只能放在最后吗?

          解答:  其实,在switch语句中case语句和default语句是没有顺序要求的,只要你的顺序满足实际需求就可以。  不过,我们通常是把default子句放在最后处理。

3)switch语句说明

1)switch后面测试表达式的值的类型只能是整型数据或字符型数据。

(2)常量表达式通常是整型常量或字符型常量。

(3)case与常量表达式之间必须用空格隔开。

(4)每个case后的常量应不相同。

(5)switch语句体必须用“{}”括起来。

(6)当case后包含多个语句时,可以不用花括号括起来,系统会自动识别并顺序执行所有语句。

(7)为了得到预期的输出结果,解决办法是在switch语句中使用break语句。

(switch也是分支效果的,只有在switch1语句中使用break才能跳出switch语句,如果某一个case语句的后边没有break语句,代码会继续往下执行,有可能执行其他case语句中的代码,直到遇到break语句,或者switch语句结束。所以在switch语句中的break语句是非常重要的,能实现真正的分支效果。)

接下来就用例4的例子具体分析一下吧。

         用switch语句处理多分支问题时,首先要确定switch后的测试表达式。由于测试表达式的值只能是整型数据。再考虑到成绩的分布特点,测试表达式确定为score/10。

     90<=score<=100时,score/10的取值分别为10、9;

     80<=score<90时,score/10的取值分别为 8;

     60<=score<80时,score/10的取值分别为7、6;

      score<60时,score/10的取值均小于6.

根据测试表达式的各种取值情况,确定case后常量表达式的值。

程序代码如下:

#include<stdio.h>
int main()
{
  int score,mark;
  printf(" 请输入成绩:/n");
  scanf("%d",&score);
  mark=score/10;
  switch(mark)
  {
     case 10:                                                    
     case 9:printf("%d..........优秀\n",score);break;
     case 8:printf("%d..........良好\n",score);break; 
     case 7:
     case 6:printf("%d..........及格\n",score);break;
     defauit:
            printf("%d..........不及格\n",score);break;
             }
           return 0;
       }


          //本例中,标号10和9,7与6执行的操作是相同,在switch语句中,当相连接的case语句标号不同而 
        //执行的操作相同时,前面的case标号后的语句可省略,直接执行下面的语句。
        

输入95,得到的结果为:

值得注意的是:虽然switch语句需要break语句配合才能实现程序的分支结构功能,但是程序中也经常需要借助switch语句自身的执行特点解决问题。

3.总结:

 了解了以上的知识,让我们来简单的总结一下吧:

   (1)分支结构。分支结构分为双分支结构和多分支结构。一般情况下,双分支用简单的if语句或if-else语句实现,两个以上的多分支情况用if-else-if语句或switch语句实现。但是,有时候用多个简单的if语句实现多分支结构也是个不错的选择。

    (2)描述条件。分支结构中的描述条件的表达式可以是C语言的任意一种表达式,但是通常会用关系表达式逻辑表达式表示。关系表达式表示单一条件,逻辑表达式表示几个单一条件符合的复杂条件。

    (3)if语句。复合形式:{语句1;语句2: ···},其在语法上被看成一个语句。其在循环结构中的复合语句中经常会用到。

    (4)switch语句。switch语句有时候会不带break语句,利用switch语句自身的执行特点解决问题

    (5)语句嵌套。if 语句和switch 语句都可以嵌套,但是,嵌套会降低程序的可读性

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是分支结构中的重要知识点和运用小技巧: 1. if语句的使用:if语句是最基本的分支结构,通过它可以实现简单的条件判断。if语句的基本语法为:if(条件表达式){语句语句块},其中,条件表达式的结果为真时,执行后面的语句语句块。 2. 多重if语句的使用:多重if语句可以实现多个条件的判断,其基本语法为:if(条件表达式1){语句语句块1}else if(条件表达式2){语句语句块2}...else{语句语句块n},其中,条件表达式1为真时执行语句语句块1,条件表达式2为真时执行语句语句块2,以此类推,如果所有条件都不为真,则执行else后面的语句块。 3. 嵌套if语句的使用:嵌套if语句可以实现更为复杂的条件判断,其基本语法为:if(条件表达式1){if(条件表达式2){语句语句块1}else{语句语句块2}}else{语句语句块3},其中,条件表达式1为真时执行内层if语句,条件表达式2为真时执行语句语句块1,否则执行语句语句块2;如果条件表达式1为假,则执行语句语句块3。 4. switch语句的使用:switch语句可以实现多个选项的判断,其基本语法为:switch(表达式){case 常量1: 语句语句块1; break; case 常量2: 语句语句块2; break; ... default: 语句语句块n; break;},其中,表达式的值与各个常量进行比较,如果匹配,则执行相应的语句语句块,如果没有匹配,则执行default后面的语句块。 5. 运用小技巧:在编写分支结构的代码时,可以使用布尔运算符、逻辑运算符和比较运算符等来简化代码。同时,在使用if语句和switch语句时,可以使用break语句来跳出循环,从而提高代码的效率和可读性。 希望以上信息能够对您有所帮助。如果您有更多问题,可以随时向我提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值