分支语句学习总结

分支语句

  if

  switch

分支语句(选择结构)

if 语句

语法结构:

1 单分支结构

if(表达式)

    语句;

若表达式为真则执行语句,否则不执行语句。

例如:

#include<stdio.h>
//输入两个数字,找出其中的较大值
int main()
{
    int a = 0, b = 0;
    printf("请输入两个数字:");
    scanf("%d %d",&a, &b);
    if(a < b)
    {
       a = b;
    }
    printf("两个数的较大值为 %d", a);
    
    return 0;
}

运行结果:

2 双分支结构

 if (表达式)

    语句1;

else 

    语句2;

若表达式为真则执行语句1 ,否则执行语句2.

例如:

#include<stdio.h>
int main()
{
    int coding = 0;
    printf("你会好好学习编程吗?(选择1  or  选择0):");
    scanf("%d", &coding);
    if(coding == 1)
    {
       printf("坚持下去,你会有一个好offer\n");
    }
    else
    {
       printf("放弃,你会付出很大代价的!\n");
    }
    return 0;
}

运行结果:

3 多分支结构

if(表达式1)

    语句1;

else if (表达式2)

    语句2;

else if(表达式3)

    语句3;

else 

    语句4;

若表达式1为真这执行语句1,若表达式2为真则执行语句2,以此类推只执行一个语句。

例如:

#include<stdio.h>
int main()
{
    int age = 0;
    printf("请输入你的年龄,粗略判断你的年龄段:");
    scanf("%d",&age);
    if(age <= 18)
    {
       printf("青少年");
    }
    else if(age <= 65)
    {
       printf("成年");
    }
    else
    {
       printf("老年");
    }
    return 0;
}

运行结果:

注意事项:

1 C语言中真假的表示:0表示假,非0表示真。

2 如果条件成立 ,要执行多条语句则需要使用代码块,否则只能执行第一条语句。

使用范例:

#include<stdio.h>
int main()
{
    if(表达式)
    {
        语句列表;
    }
    else
    {
        语句列表;
    }
    return 0;
}

 3  悬空else,else只会与其最近的未匹配的 if 匹配

例如:

#include<stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hello\n");
    else
        printf("hi\n");
    return 0;
}

 运行结果:

什么也没有!

原因:由于格式的对齐容易让人认为 else 是与第一个 if 匹配的,但由于在C语言中 else 会与其最近的 if 匹配

if()
    if()
        printf();
else
    printf();
//其上格式等价于
if()
{
    if()
        printf();
    else
        printf();
}

第一个 if 根本上就没有判断成功,不可能执行以下语句。

改正:

//适当使用{}可以使代码的逻辑更加清晰
#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    if(a == 1)
    {
        if(b == 2)
        {
            printf("hello!\n");
        }
    }
    else 
    {
        printf("hi!\n");
    }
    return 0;
}

4 常量与变量比较相等时,常量放左,变量放右(减少错误)

比较时采用常量放左变量放右,若将" == " 误写成" = "编译器会自动报错。

2 switch语句

switch 语句常用于多分支的情况。当我们写成 if...else if ... else if 的形式太复杂,我们就会考虑使用 switch 语句。

结构形式:

switch(整形表达式)

{

          语句项;

语句项是一些 case 语句:

case  整形表达式:

        语句;

switch 语句通过搭配使用break才能真正的实现分支。

#include<stdio.h>
int main()
{
    int day = 0;
    scanf("%d",&day);
    switch(day)
    {
        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;
    }
    return 0;
}

运行结果:

现在改变需求:

1.输入1-5输出的是"工作日"

2.输入6-7输出的是"休息日"

#include<stdio.h>
int main()
{
    int day = 0;
    scanf("%d",&day);
    switch(day)
    {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("工作日\n");
            break;
        case 6:
        case 7:
            printf("休息日\n");
            break;
    }

    return 0;
}

   运行结果:

break 语句的实际效果是把语句列表划分为不同的部分。

default 子句(一般用于非法输入)

default 写在任何一个 case 标签可以出现的位置。当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。

练习:

#include<stdio.h>
//求运行结果 m 和 n 的值
int main()
{
    int n = 1;
    int m = 2;
    switch(n)
    {
    case 1:
            m++;
    case 2:
            n++;
    case 3:
            switch(n)
            {
             case 1:
                    n++;
             case 2:
                    m++;
                    n++;
                    break;
            }
    case 4:
            m++;
             break;
    default:
             break;   
    }
    printf("m = %d, n = %d\n",m,n);
    return 0;
}

运行结果:

过程:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值