C语言选择语句(if语句、Switch语句)

目录

一、前言:

二、选择语句:

三、if语句:

1、if语句的写法:

2.悬空else:

3.下面我简单写个关于判断输入数是否为奇数的简单程序:

四、switch语句:

1.为什么有if结构后还需要switch结构呢?

2.switch语句语法:

3.switch中的break语句:

4.default子句:

五  、总结:



一、前言:

前面我分享了C语言中三大控制语句的顺序结构,今天我想分享的是C语言中另一大控制语句的结构,选择语句。我也会分享一些我对于if语句和switch语句的理解。


二、选择语句:

什么是选择语句?

简单的说, 选择结构是我们把条件写成代码来进行判断,从而控制程序的运行。举个例子:

选择语句就是输入表达式后进行真假判断,程序运行进入相应的结果里。


三、if语句:

1、if语句的写法:

if语句内只需要执行一条语句时,代码写法如下:

//单分支写法

if(表达式)//表达式为真执行结果1,否则执行结果2.
    结果1;
else
    结果2;

//多分支写法

if(表达式1)//表达式为真执行结果1,不为真程序继续往下走.
    结果1;
else if(表达式2)//表达式为真执行结果2,否则执行结果3.
    结果2;
else
    结果3;

当if语句内需要执行多条语句时,需要使用块状写法。代码写法如下:

//块状结构代码如下
int main()
{
   if(表达式1)
    {
        语句1;
        语句2;
    }
    else if(表达式2)
    {
        语句3;
        语句4;
    }
    else
    {
        语句5;
        语句6;
    }

    return 0;
}

补充1:C语言中0为假,非0为真。

补充2:适当使用{}代码可读性更好。

2.悬空else:

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1);
        if(b == 2)//结果为真,程序进入此行,不会进入else中。
            printf("hehe\n");//直接打印
    else
        printf("haha\n");
    return 0;
}

这里程序执行后屏幕上输出的hehe

else的匹配:else是与最近的if进行匹配的。

这里我稍作修改:

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

//修改后代码逻辑表达清晰,可读性更好。
//代码风格很重要!

 逻辑表达清晰的代码更容易避免错误。

3.下面我简单写个关于判断输入数是否为奇数的简单程序:

#include<stdio.h>

int main()
{
    int n = 0;

    scanf("%d",&n); //这里我们输入7

    if (n % 2 == 1)//判断是否为奇数
        printf("是奇数\n");  //这里程序进入该分支后,屏幕输出“是奇数”
    else
        printf("不是奇数\n");

    return 0;
}

大家不妨试试写一个输入一个数判断偶数的小程序,尝试很重要,我们一起进步!


四、switch语句:

1.为什么有if结构后还需要switch结构呢?

当我们要写一个输入一个数字在屏幕上打印对应的星期日期时,至少有七个条件需要判断,使用if语句的话太过于复杂,这里我们就需要switch语句来处理。

2.switch语句语法:

//switch语句语法
switch(整型表达式)
{
   case 整形常量表达式:
    语句;
}




补充:

1、switch的表达式可以使用char类型,这是因为char类型的本质是整型,因为char类型是通过ASC码进行转译得到的。

3.switch中的break语句:

这里我们编写这个输入一个数字屏幕上输出对应的星期日期:

#include <stdio.h>
int main()
{
    int day = 0;
    
    scanf("%d",&day);    

    switch(day)
   {
        case 1:
            printf("星期一\n");
        case 2:
            printf("星期二\n");
        case 3:
            printf("星期三\n"); 
        case 4:
            printf("星期四\n");
        case 5:
            printf("星期五\n");
        case 6:
            printf("星期六\n");
        case 7:
            printf("星期天\n");    
   }
    return 0;
}

运行结果如下:

为什么屏幕上输出了星期一到星期天呢?

在switch语句中,程序进入语句时,会进入整型表达式相应的case语句项中运行。如果没有碰到break的话语句会一直执行直到结束。所以会输出星期一到星期天。这里我们只需要在每句执行语句中加上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;
}

运行结果如下:

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

4.default子句:

如果这是我们在刚刚写的输入数字后输出对应星期的程序中输入一个不是1-7的数会发生什么呢?

运行结果如下:

这时如果我们想判断如果输入的数字不是1-7范围内的数,我们就提醒输入错误。其实也没什么,结构就是所有的语句都被跳过而已。 程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。这时我们就需要使用default子句了。代码如下:

#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;
        default:
            printf("输入错误\n");
            break;
   }
    return 0;
}

运行结果如下:

default子句的使用:

1. default子句可以出现在switch语句中任何位置

2.一个switch语句中只有一个default子句

3.建议在每个switch语句使用default子句,并在后面跟上break


五  、总结:

以上就是我想分享的一些关于选择语句的知识内容以及一些自己的理解。希望能够帮到你。坚持学习,坚持输出博客是一件有挑战的事,但是缺少了挑战又如何知道自己不是在进步呢?让我们一起坚持下去吧!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玩铁的sinZz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值