在之前我给大家讲解了关于循环语句及其应用,想要学习的小伙伴可以点击循环语句及其应用_steventom的博客-CSDN博客,进行学习。今天我们主要学习的是另外一种语法——分支循环及其应用,它主要包括if语句和switch语句。分支语句是我们常用的语句,因此学会它非常重要。
1.if语句
1.1单分支语句
单分支语句主要就是if...else,我们可以写一个代码来感受一下,代码如下:
#include <stdio.h> int main() { int n; scanf("%d", &n); if (n >= 18) printf("成年\n"); else printf("未成年\n"); return 0; }
这个代码就是我们的单分支语句,我们先输入一个n,然后对n进行判断如果n大于等于18执行
printf(“成年\n”)语句,否则执行printf(“未成年\n”)语句。
1.2多分支语句
当我们面对一个问题时,有时候会出现多个解决方案,这时候就需要多分支语句,它主要就是if...else if...else if...else(else if),我们可以写一个代码来感受一下,代码如下:
#include <stdio.h> int main() { int n; scanf("%d", &n); if (n < 18) printf("未成年"); else if (n >= 18 && n <= 25) printf("青年"); else if (n > 25 && n <= 35) printf("壮年"); else if (n > 35 && n <= 50) printf("中年"); else if (n > 50 && n <= 80) printf("老年"); else if (n > 80) printf("老寿星"); }
首先,通过scanf("%d", &n)
获取用户输入的年龄。
然后,使用一系列的if else
语句来判断年龄范围并输出相应的信息。其中:
- 如果年龄小于18岁,则输出“未成年”;
- 如果年龄在18岁到25岁之间,则输出“青年”;
- 如果年龄在25岁到35岁之间,则输出“壮年”;
- 如果年龄在35岁到50岁之间,则输出“中年”;
- 如果年龄在50岁到80岁之间,则输出“老年”;
- 如果年龄大于80岁,则输出“老寿星”。
最终,使用printf()
函数将输出信息显示在屏幕上。
1.3注意
对于if语句我们有几点需要注意:
1.不管是if还是else还是else if它的后面只能跟一条语句,如果想过很多条语句就必须用大括号括起来,形成一个语句块,例如代码如下:
#include <stdio.h> int main() { int n = 10; if (n == 10) { printf("%d\n", n); n++; printf("%d\n", n); } }
当我们运行后我们可以看到:
2.else语句遵循就近原则,它也总是和距离最近的没有和else组队的if进行结合,代码如下:
#include <stdio.h> int main() { int n = 10; if (n > 20) if (n > 30) printf("hehe"); else printf("haha"); return 0; }
其中的else和他的上一个if组合也就是说它和if(n>30)进行组合,对于输出结果,由于n等于10不满足n大于20,故不会进入分支中,什么也不会输出。
注意非常重要,希望各位小伙伴们可以仔细阅读。
2.switch语句
有时候我们需要写一个程序,但是if语句会很复杂,这时候我们可以使用switch语句,而在switch语句中,我们没办法直接实现分支,搭配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; }
当我们使用switch语句时会变得很简单。注意在switch(day)中day必须是整形,否则不能执行如果表达的值与所有的case标签的值都不匹配怎么办?
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
我们只需要再增加一条语句
今天的讲解到此结束,希望大家可以一键三连。