嵌入式初学-C语言-八

#接嵌入式初学-C语言-七#

分支结构

分支结构:又被称之为选择结构

选择结构的形式

多分支

语法:

if(条件1)
{
语句1;
} else if(条件2)
{
语句2;
}
...
else {
语句n+1;
}

案例:

#include <stdio.h>
int main()
{
// 需求:编一程序,要求输入一个x值,输出y值
// 方式1:嵌套的if..
int x,y;
printf("请输入一个整数:\n");
scanf("%d",&x);
// 条件判断
if(x < 0)
{
y = -1;
}
else
{
// x >= 0
if(x == 0)
{
y = 0;
}
else
{
y = 1;
}
}
printf("方式1:x=%d,y=%d\n",x,y);
// 方式2:多分支if..else if....else..
// 条件判断
if(x < 0)
{
y = -1;
}
else if(x == 0)
{
y = 0;
}
else
{
y = 1;
}
printf("方式2:x=%d,y=%d\n",x,y);
}

案例:

#include <stdio.h>
/**
* 需求:高校要求对实训学生根据实训成绩进行评级
范围:0 <= score <= 100;
评级:
score >= 90 优秀
score >= 80 良好
score >= 70 中等
score >= 60 及格
score < 60 不及格
*/
int main()
{
// 声明一个变量,存储成绩
int score;
printf("请录入学生成绩:\n");
scanf("%d",&score);
// 对score进行合法校验
if(score >= 0 && score <= 100)
{
// 对合法输入的成绩进行评级
if(score >= 90)
{
printf("优秀\n");
}
else if(score >= 80)
{
printf("良好\n");
}
else if(score >= 70)
{
printf("中等\n");
}
else if(score >= 60)
{
printf("及格\n");
}
else
{
printf("不及格\n");
}
}
else
{
printf("成绩录入不合法!\n");
}
}

switch

语法:

switch(表达式) // 不能是布尔型和 浮点型
{
case 常量表达式1:
    语句体1;
    break;
case 常量表达式2:
    语句体2;
    break;
...
case 常量表达式n:
    语句体n;
    break;
default:
    语句体n+1;
    break;// 可以省略
}

说明:

⑴ switch后括号内的表达式可以是任何类型的表达式;

⑵ 若表达式的值与某个常量表达式的值相等时,执行此case后面的语句;若没有相等的值时,执行 default后面的语句;

⑶ 每个case后面的常量表达式的值都必须不相同,否则出现矛盾;

⑷ 各个case 和default出现的次序不影响执行结果;

⑸ case后面的语句中如果没有break语句,则执行完本case后的语句会接着执行下面的case(case穿 透) ;

⑹ 多个case可共用一组语句。

注意:

1. 表达式一般写一个变量,变量的值是一个确定的常量。

2. 当遇到break或者switch语句的右大括号时,switch语句结束。

3. 表达式中的数据类型:char,short,int,long,long long,不能是浮点型。 表达式和常量的数据类型要一致(支持隐式转换),比较是否相同。

案例:

1.需求:根据成绩进行评级

评级:

90 <= score < 100 优秀 90~99/10 == 9 && 100/10 ==10

80 <= score < 90 良好 80~89/10 == 8

70 <= score < 80 中等 70~79/10 == 7

60 <= score < 70 及格 60~69/10 == 6

score < 60 不及格

#include <stdio.h>
int main()
{
    int score;// 成绩
    printf("请输入实训成绩:\n");
    scanf("%d",&score);
    if(score >= 0 && score <= 100)
    {
        // 对成绩进行加工
        int l = score / 10;
        switch(l)
        {
            case 10:// 100分
            case 9:// 90~99分
                printf("优秀\n"); // 这里:多个case共用一块代码
                break;
            case 8:
                printf("良好\n");
                break;
            case 7:
                printf("中等\n");
                break;
            case 6:
                printf("及格\n");
                break;
            default:
                printf("不及格\n");
        }
    }
    else
    {
    printf("成绩录入不合法!\n");
    }
}

2.需求:实现一个简易计算器,要求实现+,-,×,/运算

#include <stdio.h>

int main()
{
    printf("简易计算器 v1.0\n");
    printf("请输入两个操作数:\n");

    double x,y;// 存放计算数
    char ch;// 运算符
    scanf("%lf,%lf",&x,&y);
    scanf("%c",&ch);// 消除上面产生的最后一个回车符

    printf("请输入运算符:(+、-、.*、/)\n");
    scanf("%c",&ch);
// 计算
    switch(ch)
    {
        case '+':
            printf("%.2lf+%.2lf=%.2lf\n",x,y,x+y);
            break;
        case '-':
            printf("%.2lf-%.2lf=%.2lf\n",x,y,x-y);
            break;
        case '.':
        case '*':
            printf("%.2lf*%.2lf=%.2lf\n",x,y,x*y);
            break;
        case '/':
            if(y == 0)
            {
                printf("除数不能为0\n");
            }
            else
            {
                printf("%.2lf/%.2lf=%.2lf\n",x,y,x/y);
            }
            break;
        default:
            printf("输入错误!");
    }
    return 0;
}

switch语句的case穿透:

1. case穿透:当case后的break被省略;就会直接执行它后面紧跟的case中的语句(不会判断表达式是 否和它后面的case常量是否相同),这样的现象称之为case穿透。

2. default语句一般放在所有case之后,表明所有的case都不成立时,执行default中的语句;default语 句可以放在switch语句{}内的任意位置。

扩展

条件表达式中的运算符优先级

逻辑非(!) > 算数运算符 (+-*/%)>关系运算符(> < >= 逻辑运算符(&&、||)> 赋 值运算符(=、+=)

设置vim中tab字符数

set tabstop=4

set shiftwidth=4

set expandtab

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值