C语言分支循环(分支语句——if语句)

C语言是一种结构化的程序设计语言,它支持3种结构:

1、顺序结构

2、选择结构

3、循环结构

我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。这是C语言创作者的强大之处。选择结构由选择语言(或分支语言)实现,循环结构由循环语句实现。
我们可以使⽤ if switch 实现分⽀结构,使⽤ for while do while 实现循环结构。 此章详细介绍分支语句。

一、if语句

1.1 if

1   if(表达式)
2      语句

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。在C语⾔中,0为假,⾮0表⽰真(此处经常会认为1为真),也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果不是0,则语句执⾏。

1.2 else

else通常与if连用组成 if ... else ... 语句,语法形式如下:

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

EG:输入年龄,如果>=18,则输出“成年”,否则输出“未成年”。

1 #include<stdio.h>
2
3 int main()
4 {
5        int age = 0;
6        printf("请输入你的年龄。\n");
7        scanf("%d",&age);     
8        if(age >=18)
9            printf("成年\n");
10       else
11           printf("未成年\n”);
12       return 0;
13 }             

if 和 else 默认只能控制一条语句,如果想分⽀中包含多条语,那就要使⽤ { } 将代码括起来,else 后也可以跟上⼤括号。如下:

1 #include<stdio.h>
2
3 int main()
4 {
5        int age = 0;
6        printf("请输入你的年龄。\n");
7        scanf("%d",&age);     
8        if(age >=18)
9        {
10            printf("成年\n");
11            printf("可以谈恋爱了\n");
12       }
13       else
14       {
14           printf("未成年\n”);
15           printf("不可以谈恋爱\n");
16       }
17       return 0;
18 }             

上述结果就能打印多条分支语句。

1.3 嵌套if

if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。
EG:
1 #iclude<stdio.h>
2 
3 int main()
4 {
5     int num = 0;
6     scanf("%d", &num);
7     if(num == 0)
8         printf("输⼊的数字是0\n");
9     else if(num > 0)    //这⾥的if 相当于嵌套在else语句中,形成了嵌套结构。
10        printf("输⼊的数字是正数\n");
11    else
12        printf("输⼊的数字是负数\n");
13    return 0;
14 }

后一个if ... else ...语句就嵌套在第一个else后面。

1.4 悬空else问题

如果有多个 if else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。

看如下代码:

1#include <stdio.h>
2 
3 int main()
4 {
5     int a = 0;
6     int b = 2;
7     if(a == 1)
8         if(b == 2)
9             printf("hehe\n");
10    else
11        printf("haha\n");
12    return 0;
13 }

此处很多人认为是打印“haha”,其实什么都不打印这就是悬空 else 的问题,如果有多个 if else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。

上⾯的代码排版,让 else 和第⼀个 if 语句对⻬,让我们以为 else 是和第⼀个if匹配的,当 if
语句不成⽴的时候,⾃然想到的就是执⾏ else ⼦句,打印 haha ,但实际上 else 是和第⼆个 if
进⾏匹配的,这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不
成⽴,嵌套 if else 就没机会执⾏了,最终啥都不打印。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值