C语言--分支与循环(上)

大家好,今天我们来一起学习C语言--分支与循环,准备好了吗?那我们出发吧!

首先,C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构。循环结构。

我们可以用 if、switch 实现分支结构,使用 for、while、do while 实现循环结构。

1.if语句

1.1 if

下面我们来看个例子

if(表达式)
语句

表达式为真,则语句执行,表达式为假,则语句不执行。C语言中,0为假,非0表示真,也就是说,如果表达式的结果为0,则语句不执行,如果表达式结果不是0,则语句执行。

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

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

为什么结果是奇数呢?哦,因为num的值为3, 3%2 == 1,因此3是奇数。

1.2 else

如果一个数不是奇数,那就是偶数了,假如输入任意一个数,那么我们怎么判断呢?

很简单,用 if .... else 就可以啦

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

例如: 输入一个整数,判断它是否是奇数,如果是奇数就打印奇数,如果不是奇数则打印偶数

当键盘录入4时,首先会来到 if 语句,发现 4 % 2  == 0, 执行 if 语句时不满足条件,因此执行else 语句

再比如: 输入一个年龄,大于等于18岁就输出: 成年,否则输出未成年

1.3 分支中包含多条语句

C语言中,默认在 if 和 else 语句中默认都只控制一条语句,比如:

键盘输入1,表示作业写完了,如果输入0,表示作业还没写完

我们现在输入1

我们再来输入0

我们可以发现,不管输入0还是1,"可以出去玩了"都会打印在屏幕上。

这是因为 if 语句只能控制一条语句,就是 printf("作业写完啦\n"); ,if 语句为真,则打印作业写完了,if 语句为假,则不打印。对于 printf("可以出去玩了"); 是独立存在的, 不管 if 语句的条件的真假, 都会被执行, 那我们想用 if 语句同时控制2条语句, 怎么办呢? 那就用 {} 将代码括起来, else 后也可以加上大括号。 请看代码:

1.4 嵌套if

在 if else 语句中, else 可以和另一个 if 语句连用, 构成多重判断

比如: 输入一个成绩, 判断成绩是否不及格, 及格, 良好, 优秀

#include<stdio.h>
int main() {
	int score = 0;
	scanf("%d", &score);
	if (score < 60) {
		printf("不及格\n");
	}
	else if (score >= 60 && score < 70) {
		printf("及格\n");
	}
	else if (score >= 70 && score < 90) {
		printf("良好\n");
	}
	else if (score >= 90) {
		printf("优秀\n");
	}
	return 0;
}

以上代码可以进行优化

仔细想想,当score<60不成立的时候,score一定大于60,因此第一个else if 中的score >= 60 这个条件可以省略,依次类推,这样我们可以减少代码量,提高运行效率。

1.5 悬空else问题

如果有多个 if 和 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;
}

猜猜看,程序运行的结果是啥?

有同学肯定会想,太简单了,第一个 if 条件不满足,执行 else 语句就行了,打印 haha

但是我们运行代码,结果是: 啥都没有

为啥会出现这样的结果?

这就是悬空 else 的问题,如果有多个 if 和 else, else 总是跟最接近的 if 进行匹配。

上面的代码排版,让 else 和最上面的 if 对齐,让我们误以为 else 是跟第一个 if 语句进行匹配,但实际上,else 是和第二个 if 语句进行匹配的, 这样后边的 if ... else 语句是嵌套在第一个 if 语句中的,如果第一个 if 语句不成立,嵌套的 if 和 else 就更没机会执行了,最终,啥也不打印。

将代码改成这样就容易理解啦

或者我们希望 else 和 第一个 if 进行匹配,可以这样修改代码:

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

好啦,这次先到这里吧,我们下期再见。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值