嵌入式学习笔记-C语言基础-选择结构(if-else和switch)

目录

1、if语句

2、switch语句

3、举例


1、if语句

        形式一:一个条件,一个结果或没有结果

//格式:
if(表达式)
{

    语句体;

}

        格式说明:表达式运算的结果要么为真(非0),要么为假(0)

        执行过程:

        1.先执行表达式,看它的结果是真还是假

        2.如果表达式的值为真,就执行语句体,然后结束if语句

        3.如果表达式的值为假,不执行语句体,然后结束if语句

//例:如果小明的成绩达到80分,小明妈妈就带他去看电影
#include<stdio.h>

int main()
{

    int score;
    printf("请输入小明的成绩:");
    scanf("%d",&score);
    if(score>=80)
    {
        printf("小明去看电影啦!\n");
    }
    return 0;
}

        形式二:一个条件,两个结果中的一个结果

//格式
if(表达式)
{

    表达式1;

}
else
{

    表达式2;

}

        格式说明:表达式运算的结果要么为真(非0),要么为假(0)

        执行过程:

        1.先执行表达式,看它的结果是真还是假

        2.如果表达式的值为真,就执行语句体1,然后结束i语句

        3.如果表达式的值为假,就执行语句体2,然后结束if语句

//例:小明考试成绩如果达到60分,小明就可以去看电影,否则小明就要被打屁股

#include<stdio.h>

int main()
{

    int score;
    printf("请输入小明的考试成绩:");
    scanf("%d",&score);
    if(score >= 60)
    {
        printf("小明去看电影啦!\n");
    }
    else
    {
        printf("小明被妈妈打屁股啦!正在家里学习呢!\n");
    }
    return 0;
}

        形式三:n个条件,n个结果中的一个结果

//格式
if(表达式1)
{
    语句体1;
}
else if(表达式2)
{
    语句体2;
}
. . . . . .
. . . . . .
. . . . . .
else if(表达式n-1)
{
    语句体n-1;
}
else
{
    语句体n;
}

        格式说明:表达式1~n:运算的结果要么为真(非0),要么为假(0)

        执行过程:

        1.先执行表达式1,看它的结果是真还是假

        2.如果为真,则执行语句体1,if语句结束

        3.如果为假,就执行表达式2,看它的结果是真还是假;

        4.如果表达式2的结果为真,就执行语句体2,if让语句结束

        5.如果表达式2的结果为假,就执行表达式3,看它的结果是真还是假

        ......依次类推

        6.如果表达式n1的值为真,就执行语句体n1,if语句结束

        7.如果以上所有表达式都为假,就直接执行语句休n,if语句结束

/*小明爸爸说:小明你如果考试及格,就带你去看电影
如果考试成绩在70~79分,就带你去游乐场游玩
如果考试成绩在80~89分,就带你去迪士尼游玩
如果考试成绩在90~100处,就带你去新马泰游玩
否则就打屁股*/
#include<stdio.h>

int main()
{

    int score;
    printf("请输入小明的考试成绩:\n");
    scanf("%d",&score);
    if(score >= 60 && score < 70)
    {
        printf("小明去看电影啦!\n");
    }
    else if(score >=70 && score < 80)
    {
        printf("小明去游乐场玩啦!\n");
    }
    else if(score >= 80 && score < 90)
    {
        printf("小明去迪士尼玩啦!\n");
    }
    else if(score >= 90 && score <= 100)
    {
        printf("小明去新马泰玩去啦!\n");
    }
    else 
    {
        printf("小明被打屁股啦!\n");
    }
    return 0;
}

总结:

        1.if语句可以嵌套

        2.if语句的第二种和三种形式,else和它后面的人括号可以一起省略

        3.if语句的格式二和三元运算表达式可以互相转换

2、switch语句

        使用场景:
            1.如果条件和结果是有限多个,并且条件是固定的一些常量,我们可以考虑使用switch语句
            2.switch语句可以转换成if语句----if语句是最常用

//switch代码的格式
switch(表达式)
{
    case 常量1:
        语句体1;
        break; 
    case 常量2:
        语句体2;
        break;

    ...
    
    case 常量n-1:
        语句体n-1;
        break;  
    default:
        语句体n;
        break;//(可选择是否添加)
}

        格式说明:
            1.表达式一般写一个变量, 变量的值是一个确定的常量
            2.当遇到break或者switch语句的右大括号时,switch语句结束
            3.表达式中的数据类型: char, short, int , long, long long ; 但不能是浮点数

//输入一个数字,打印这个数字对应的是星期几(输入1,输出星期一...输入7,输出星期天)
#include<stdio.h>

int main()
{

    int num;
    printf("请输入1~7中的一个数值:");
    scanf("%d",&num);
    switch(num)
    {
        case 1 : printf("星期一\n");break;
        case 2 : printf("星期一\n");break;
        case 3 : printf("星期一\n");break;
        case 4 : printf("星期一\n");break;
        case 5 : printf("星期一\n");break;
        case 6 : printf("星期一\n");break;
        case 7 : printf("星期一\n");break;
        default : printf("输入有误!\n");break;
    }
    return 0;
}

        switch语句的case穿透现象:
        当case后的break被省略,就会直接执行它后面紧跟的case中的语句体(不会判断表达式是否和它后面的case常量是否相同)
        default语句执行的条件:当所有的case都不成立时,才执行default语句,default语句一般写在所有case之后,但它是可以写到case之前或者中间;如果default没有放在最后,它的break不能省略,否则会case穿透

总结:
    1.switch语句有局限性,switch语句可以转换成if语语句,但不是所有的if语句都能转换成switch语句
    2.switch语句常常用在对有限多个常量判断相同是使用

3、举例

        尝试分别用if语句和switch实现以下需求
        根据成绩输入等级
        90~99    A        80~89     B        70~79   C        60~69     D        0~59        E

#include<stdio.h>
int main()
{
	int score;
	printf("请输入成绩:");
	scanf("%d",&score);
//switch语句实现
    printf("switch语句实现结果:");
	switch(score/10)
	{
		case 0 :
		case 1 :
		case 2 :
		case 3 :
		case 4 :
		case 5 : printf("E\n");break;
		case 6 : printf("D\n");break;
		case 7 : printf("C\n");break;
		case 8 : printf("B\n");break;
		case 9 : 
		case 10: printf("A\n");break;
        default: printf("输入分数有误\n");break;
	}
//if-else语句实现结果
    printf("if-else语句实现结果:");
    if(score>=0&&score<60)printf("E\n");
    else if(score>=60&&score<70)printf("D\n");
    else if(score>=70&&score<80)printf("C\n");
    else if(score>=80&&score<90)printf("B\n");
    else if(score>=90&&score<=100)printf("A\n");
    else printf("输入分数有误\n");
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值