【选择结构程序设计-谭浩强适配】(适合专升本、考研)

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。

完整资料如下:纯干货、纯干货、纯干货!!!

关注专栏:<后续持续更新>


目录

选择结构语句

1.if分支语句

if语句的嵌套

2.switch分支语句


选择结构语句

分类:if分支语句(双分支)、switch分支语句(多分支)

1.if分支语句

分类:单分支if、双分支if、多分支if(类似switch)

⚠️注意:本质上来说if的双分支与多分支属于一种分支,所以理论上常说if只能提供两个分支选择,即认为if无法进行多分支。

格式:

1.单分支if:
  if(表达式)
    语句1...
  
2.双分支if:
  if(表达式)
    语句1...
  else
    语句2...
    
3.多分支if:
  if(表达式1)
    语句1...
  else if(表达式2)
    语句2...
    ...
  else if(表达式n)
    语句n
  else
    语句n+1
  • 所有if语句的表达式可以是一个关系表达式(常见)、数值表达式、逻辑表达式、常量、变量(即结果为逻辑值的表达式)。其内部的内嵌语句语句1、语句2和语句n可以是一个简单的语句也可以是一个复合语句,还可以另一个if语句(嵌套),甚至还可以是其他c语句(9种c语句)

  • 整个if语句可以写在多行(推荐)也可以写在一行。

    if(a>0)
      y=1;
    else
      y=2;
    //等同于if(a>0)y=1;else y=2;(语句不要忘记加分号)
  • 如果if、else后面的语句只是一个简单的语句,那么花括号可以参略。如果是一个复合语句则不能省略。

    int b;
    if(3<0)
      {
        printf("分数");
        b=100;
      }  
        printf("b=%d\n",b);//因为if语句不成立,所以b=100不会执行,则b自然由系统根据数据类型随机赋值
    ​
    int b;
    if(3<0)
        printf("分数");
        b=100;
    ​
        printf("b=%d\n",b);//虽然if语句不成立,但b=100不属于if语句的内容,即赋值成立,自然输出b=100
  • if语句无论写在几行,都是一个整体,属于同一个语句,即不要误认为if语句是一个语句、else语句是一个语句,不要误以为看见if的内嵌语句有了分号就以为if语句结束了,还要观察其后面的else。

  • if语句表达式的结果为逻辑值(1【真】、0【假】)。即若表达式为数值(非零为真,0为假)。若是变量或常量(判断数据:数值(非零为真,0为假)、字符串(非空为真、空为假))

  • 单分支判断为真就执行。双分支必须执行一个。多分支只要判断到为真,执行完其后的语句就会跳出if。

    if(3){
        printf("a");//输出a就跳出if语句
    }else  if(3){
        printf("b");//哪怕后面也为真,也不会被执行
    }

  • 关系表达式a>b>c没有语法错误,只是不能表达正确的数学表达式。正确为a>b&&a>c&&b>c。

  • 双分支if语句可以使用条件表达式替换。

if语句的嵌套

定义:在一个if语句中又包含一个或多个if语句称为if语句的嵌套

  • else语句不能单独使用,必须与if语句配合使用,每一个else都会与其上面最近的if配对。每一个if都会与其后面的else配对,若后面没有else,则认为if分支语句结束

  • 为避免二义性混淆,最好用花括号把内嵌部分括起来。

2.switch分支语句

说明:switch属于多分支语句,类似if语句的多分支语句

格式:

switch(表达式)
  {
    case  常量1:语句1;break;
    case  常量2:语句2;break;
    ...
    case  常量n:语句n;break;
    default:语句n+1;break;
  }
  • switch后面的表达式只能是整型、字符型、枚举型的常量、变量或表达式,case后面只能是整型、字符型、枚举型的常量或常量表达式。(即switch后面可以是变量或常量,但是case后面只能是常量,且只限于整型、字符型、枚举型)

  • case与default都起标号作用,用来标记一个位置,他们的顺序可以颠倒不影响结果(前提有break)。default是在所有匹配项都不成立的情况下执行,也可以省略,但是若没有匹配到对应的值,则不执行任何语句。

  • 不同的case后面的常量值不允许相同,否则会出现语法报错。

    char a=97;
    switch(a){
        case 97:putchar('A');break;
        case 'a':putchar('B');break;//报错!!!哪怕转换为97的字符形式,也不允许相同
        case 97:putchar('C');break;//常量值相同,报错!
        case 1>0:break
        case 1:break;//这里也会报错,因为上面1>0为1
    }

  • break的作用:跳出switch(如果没有break,那么switch在找到匹配的标号入口后,会把后面所有的标号后面的语句不加判断的连续执行这点与if多分支区别:if多分支在判断到为真时会自动跳出if语句)

    char a=1;
    switch(a){
        case 0:putchar('A');
        case 1:putchar('B');//以下内容全部输出
        case 3:putchar('C');
    }
    //输出:BC

  • switch的花括号可以省略,但是只限于case语句只有一个。

  • switch默认执行顺序是从上往下依次执行,没有匹配到再执行default。若default移到前面,则依次执行遇到default则会先绕开,没有匹配到再执行default,若把default移到前面,则需要在最后加上break,否则会输出default下面的语句。

    char a=11;
    switch(a){
        default :putchar('O');//输出:OABC
        case 0:putchar('A');
        case 1:putchar('B');
        case 3:putchar('C');   
    }

  • 多个case可以共用一组语句

    case 1:
    case 2:
    case 3:printf(">60");break;

  • switch语句也允许嵌套。

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值