问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C语言分支语句之if的一些用法

创作时间:
作者:
@小白创作中心

C语言分支语句之if的一些用法

引用
CSDN
1.
https://blog.csdn.net/2401_82489659/article/details/140680907

C语言作为一种非常常用的编程语言,具有灵活强大的循环和分支结构。循环结构允许我们重复执行一段代码,而分支结构则允许我们根据条件选择执行不同的代码块。这两个结构在编写程序时非常有用,可以帮助我们实现不同的逻辑和控制流程。在本篇文章中,我们将详细介绍C语言中的分支语句中的if。

C语言结构

C语言是一种结构化控制语言,这里的结构即为顺序机构、选择结构、循环结构。

在C语言中,我们可以使用ifswitch实现分支结构,使用forwhiledo while实现循环结构。

1. if 语句

1.1 if

if语句的语法形式是这样的

if(表达式)
   语句

表达式成立(为真),则语句执行; 表达式不成立(为假),则语句不执行;

在C语言中,0为假,非0为真;即如果表达式的结果为0,则语句不执行;若表达式结果非0,则语句执行;

例子,输入一个整数,判断是否为奇数:

#include<stdio.h>
int main()
{
    int num = 5;
    if (num % 2 != 0)
    {
        printf("%d是奇数", num);
    }
    return 0;
}

输出结果

1.2 else

如果一个数不是奇数,那么这个数就是偶数了,那么我们如何判断这个数是奇数还是偶数呢?

这里就需要 if…else…的语句表示形式了,其具体形式如下:

if(表达式)
   语句1
else(表达式)
   语句2

例子,输入一个整数,判断他是否为奇数,若为奇数,怎判断为奇数,反之,则判断为偶数;

#include<stdio.h>
int main()
{
    int num = 0;
    scanf("%d", &num);
    if (num % 2 != 0)
        printf("%d是奇数", num);
    else
        printf("%d是偶数", num);
    return 0;
}

练习:输入一个年龄,如果大于等于18,则输出为成年,反之为未成年:

#include<stdio.h>
int main()
{
    int year = 0;
    printf("请输入年龄:");
    scanf("%d", &year);
    if (year >= 18)
        printf("是成年\n");
    else
        printf("是未成年\n");
    return 0;
}

2. 分支中包含多条语句

默认在 if 和 else 语句中默认只控制一条语句。若想要控制多条语句,则用

{}

将多条语句括起来。

#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    printf("请输入a和b:");
    scanf("%d%d", &a, &b);
    if (a >= b)
    {
        c = a;
        a += b;
        b = c;
        printf("a=%d\nb=%d", a, b);
    }
    else
    {
        c = b;
        b += a;
        a = c;
        printf("a=%d\nb=%d", a, b);
    }
    return 0;
}

输出结果

3. 多重选择 else if

在现实生活中我们常有多种选择,在程序中我们也可以用

else if

来拓展if else 结构来模拟着中情况。

#include<stdio.h>
int main()
{
    int age = 0;
    printf("请输入年龄:");
    scanf("%d", &age);
    if (age < 18)
    {
        printf("未成年\n");
    }
    else if (age <= 44)
    {
        printf("青年\n");
    }
    else if (age <= 59)
    {
        printf("中年\n");
    }
    else if (age <= 89)
    {
        printf("老年\n");
    }
    else
    {
        printf("老寿星\n");
    }
    return 0;
}

输出结果

4. 嵌套if

实际上,

else if

if else

的一种变式。即一个新的if语句嵌套 else语句中;

换一句话说,在

if else

语句中,else 可以与另一个 if语句连用,形成多重判断;

int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age < 18)
    {
        printf("少年\n");
    }
    else
    {
        if (age <= 44)
        {
            printf("⻘年\n");
        }
        else
        {
            if (age <= 59)
            {
                printf("中⽼年\n");
            }
            else
            {
                if (age <= 89)
                    printf("⽼年\n");
                else
                    printf("⽼寿星\n");
            }
        }
    }
    return 0;
}

有了着中嵌套语法,就可以完成更多复杂的逻辑判断;

5. 悬空else / else与if配对问题

如果有许多 if 和 else,那么 else 只与最近的else配对;

猜一猜下面代码的结果是什么?

#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;
}

很多初学者,上来就判断a=0,不等于1,那就执行else字句,打印haha

但是当你运行代码时, 打印结果却是:啥都不输出;

为什么呢?

这就是悬空

else

问题,如果有多个

if和else

,可以记住这样一条原则,

else

总是跟最近的if匹配;

上面的代码的排版,让

else

和第一个

if

对齐,让我们以为

else

是和第一个

if

匹配的,当第一个

if

语句不成立的时候,自然想到接下来要执行

else

语句,打印

haha

,但实际

else

是和第二个

if

匹配,这样后边的

if...else

语句是嵌套在第一个

if

语句内的,如果第一个

if

语句不成立,那被嵌套的

if和else

就没机会执行了,最终啥都不打印;

上面代码相当于下面代码

int main()
{
    int a = 0;
    int b = 2;
    if (a == 1)
    {
        if (b == 2)
            printf("hehe\n");
        else
            printf("haha\n");
    }
    return 0;
}

改正后代码

int main()
{
    int a = 0;
    int b = 2;
    if (a == 1)
    {
        if (b == 2)
            printf("hehe\n");
    }
    else
    {
        printf("haha\n");
    }
    return 0;
}

只要适当带上大括号,代码的逻辑就会变得更加清晰,所以大家以后在写代码的时候要注意括号的使用,让代码的可读性更高!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号