C语言分支结构

    顺序结构,分支结构,循环结构
    分支结构
    if语句      switch语句

if语句有三种基本形式

1,

if(表达式)

   语句块

如果()中表达式的值为真(表达式成立),就执行语句块,否则不执行语句块
表达式:可以是任意合法的c语言表达式
语句块就是一条或多条语句
语句:表达式+分号,或者只写一个分号(空语句)
        如:
            a+b;
            a=10;
            a<b;
            ....
​
编码建议:
    在写if语句时,语句块应该用大括号括起来,先把左括号{ 和右括号}写上,然后再去写里面的语句块
    if的首字母i应该和 左括号{ 和右括号}在一条线上
    {}里面的语句块要往右缩进 (建议用 tab键)
    if(表达式)
    {
        .....
        .....
    }
​
例子:
if(今天下雨)
{
    出门带伞;
}
​
输入一个整数,如果是奇数就输出。
int data;
scanf("%d",&data);
if(data%2!=0)
{
    printf("%d是奇数\n",data);
}

2,

if(表达式)

    语句块1

else

    语句块2

如果()里的表达式成立(值为真),就执行语句块1,否则就执行语句块2
​
编码建议:
语句块1和语句块2都需要打大括号,先把左括号{ 和右括号}写上,然后再去写里面的语句块
if的首字母i应该和 else的首字母e和 左括号{ 和右括号}在一条线上
{}里面的语句块要往右缩进 (建议用 tab键)
if(下课了)
{
    休息一下
}
else
{
    继续学习
}
练习:
    输入两个整数,输出最大的那一个
if语句后面如果没有打大括号,那么该if语句到if后面的第一个分号结束
分析:
if(表达式)
    语句1;//if语句到此结束
    语句2;
else    //else语句和上面的 if语句没有关系了,他是单独出现的,所以会报错
    语句3;
练习:
    输入三条边长,判断能否由这三条边组成一个三角形
    任意两条边之和都要大于第三边
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
​
    if(a+b>c && a+c>b && b+c>a)
    {
        printf("YES\n");
    }
    else
    {
        printf("NO\n");
    }

3,

if(表达式1)

{ 语句块1 }

else if(表达式2)

{ 语句块2 }

else if(表达式3) { 语句块3 }

.....

else if(表达式n)

{ 语句块n }

else

{ 语句块n+1 }

从上到下,依次判断每个表达式是否成立,如果成立就执行对应的语句块(不会再继续往下判断了),
不成立才会往下判断。如果所有的表达式都没有成立,则执行最后那个 else语句块n+1
​
适用于有多种情况,多种情况是并列关系
练习:
1,输入一个字符,如果这个字符是小写字母,则把它转换为对应的大写字母并输出
                如果这个字符是大写字母,则把它转换为对应的小写字母并输出
                如果这个字符是数字,则把它乘以2并输出
                如果是其它字符,则原样输出
​
2,输入一个学生的考试分数,输出它的成绩等级
    对应关系:
        [90,100]    ->      A 
        [80,90)     ->      B 
        [70,80)     ->      C 
        [60,79)     ->      D 
        [0,69)      ->      E

4,if语句嵌套

if语句中又有if语句

条件中又有条件

else和哪个if匹配的问题?
先从后面看,else总是与它上面的,同级的,最近的,未被匹配的 if进行匹配
​
练习:
    输入三个整数,按照从小到大的顺序输出(要求,不能改变三个变量的值)

5, switch语句

语法:

switch(表达式)

{

        case 常量表达式1: 语句块1

    case 常量表达式2:
        语句块2
    
    case 常量表达式3:
        语句块3
    ....
​
    case 常量表达式n:
        语句块n
​
    default ://必须有空格
        语句块n+1
}
​
switch语句把表达式可能的值一一列举出来,和 case后面的常量表达式做匹配,当匹配到某个
case后面的常量表达式时,就会从这个 case后面一直往下执行,直到遇到 break;或者整个 switch结束
,如果所有case后面的常量表达式都不匹配,则匹配 default,就会从 default后面开始执行,
直到遇到 break;或者整个 switch结束
​
需要注意的细节:
1,  switch()里面的表达式的值必须是整数,因为只有整数才能一一列举
2,  各个 case后面的“常量表达式”中不能包含变量,而且也得是整数
    int a=10;
​
    case 10:  //正确
​
    case 2+5: //正确
​
    case a: //错误
​
3, 各个case后面的“常量表达式”的值不能相等
​
4, default可要可不要, default和各个 case出现的顺序不影响匹配的结果
​
5,多个 case语句可以公用一个语句块 (case后面可以没有语句块)
​
6,在整个 switch语句内部,是不能定义变量
​
例子:
    实现一个简单的计算器:输入操作数和运算符,输出结果
练习:
    输入一个学生的考试分数,输出它的成绩等级。要求用 switch语句
    对应关系:
        [90,100]    ->      A 
        [80,90)     ->      B 
        [70,80)     ->      C 
        [60,79)     ->      D 
        [0,69)      ->      E
练习:计算要交多少税
    输入税前工资,输出税后工资。(不需要考虑五险一金)
​
    double x;//税前工资
    scanf("%lf",&x);
    double y;//要交的税
​
    if(x>5000 && x<=8000)
    {
        y = (x-5000)*0.03;
    }
    else if(x>8000 && x<=17000)
    {
        y = 3000*0.03 + (x-8000)*0.1;
    }
    else if(x>17000&&x<=30000)
    {
        y = 3000*0.03 + 9000*0.1 + (x-17000)*0.2;
    }
    .....
作业:
    输入年月日,输出这一天是这一年的第几天
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值