以下是分支语句,循环请看下一篇🌹🌹🌹
一、if...else... 语句
我们知道在C语⾔中,0为假,⾮0表⽰真。那么,就可以尝试表达选择。
而if...else...就是表达选择的语句,那么我们来看看如何使用吧!
1、基础使用
首先我们来看一个简单的例子:
输入⼀个年龄,>= 18岁就输出:成年,否则就输出:未成年。
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age>=18)
printf("成年\n");
else
printf("未成年\n");
return 0;
}
这便是if...else...的基础用法。
注意:
①分支中如果包含多条语句,需要用{ }将代码括起来。
②嵌套if,可以完成更多复杂逻辑的判断,但要注意if...else...的对应(悬空else问题 )。
else
总是跟最接近 的 if
匹配。
例子:你考了多少分?
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if (a < 60)
printf("不及格\n");
else
{
if (a <= 100)
printf("及格\n");
else
{
printf("你在做梦吗?\n");
printf("满分只有100分!\n");
}
}
return 0;
}
从上述例子,便可以发现注意事项的使用。
2、个人发现与拓展
我们发现if...else...,可以完成很多简单逻辑算法。但当,if( )与else( )的划分区间发生重合,会发生什么呢?
下面,我们来举一个不太恰当的例子:
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年\n");
else if(age <= 18)
printf("未成年\n");
else
printf("西瓜\n");
return 0;
}
在我们的定义中,成年:(-∞,18]
未成年:[18,+∞)
他的区间明显重合了,那么编译器会报错吗?
当输入18,他的结果会是什么呢?
我们发现它没有报错,是可以编译的。虽然逻辑发生了错误,但它还是按照从上到下的步骤执行了下去。所以我们要知道并非所有的错误编译器都能发现,编译器不是万能的。对于这样的问题,程序员只能自己注意喽!
二、switch 语句
switch
语句是⼀种特殊形式的
if...else
结构,⽤于判断条件有多个结果的情况。它把多重
的 else if 改成更易用、可读性更好的形式。
1、基础使用
例:输⼊任意⼀个整数值,计算除3之后的余数。
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch (n % 3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
我们使用时需要注意
①switch ( )里面
必须是整型表达式;
②case
后的值,必须是整形常量表达式;
③case
和后边的数字之间必须有空格;
④每⼀个 case
语句中的代码执⾏完成后,需要加上
break
,才能跳出这个switch语句。
2、拓展应用
在使用
switch
语句的时候,我们经常可能遇到⼀种情况,比如
switch
后的表达式中的值无法匹
配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句。
例如:不要脸的打工人——小明!
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 6:
case 7:
printf("我连周末也没有,好累啊!\n");
break;
case 1:
case 2:
case 3:
case 4:
case 5:
printf("美好的一天\n");
break;
default:
printf("阿巴阿巴阿巴\n");
break;
}
return 0;
}
我问:在
switch
语句中
case 子
句和
default 子
句有要求顺序吗? default
只能放在最后吗?
你答:其实,在 switch
语句中
case
语句和
default
语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。不过我们通常是把 default 子
句放在最后处理的。