hello,大家好我是咬咬,今天我来带大家学习一下c语言的入门基础:分支语句
0基础开始学可能对这个名词有点陌生,没关系拆开来理解:
首先我们来理解后面的语句:
c语句可以分为以下五类:
1.表达式语句
2.函数调用语句
3.控制语句
4.复合语句
5.空语句
我们今天学的分支语句就是控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(c语言支持3种结构:顺序结构、选择结构、循环结构)他们由特定的语句定义符组成,c语言有9种控制语句。
可分为以下三类:
1.条件判断语句也叫分支语句: if语句、switch语句; 2.循环执行语句: do while语句、while语句、 for语句; 3.转向语句: break语句、goto语句、 continue语句、 return语句。 接下来我们来理解分支:
在我们生活中往往会做出不同的选择,不同的选择也就会导致不同的结果。
在c语言中想要实现这样的效果,我们就需要用到分支语句。
先来看看简单if语句的语法结构:
如果语句只有一条则{}可以省略不写
先从简单的翻译来理解:
if----如果 else---其他;另外;别的
好那么现在这个语法结构可以通俗的理解成
如果()就执行{},另一种可能()就执行{}。
注意:如果()内表达式的结果为真,则语句执行,反之,则不执行。
在C语言中如何表示真假呢?
在C语言中,0表示假,非0表示真。
当然不仅仅只有两种可能,多种可能也就是多分支的情况下,可以用else if一直增加分支:
特别注意:如果代码中有多个if那么else是和离它最近的if匹配,并不是else和谁对齐就和谁匹配
既然基本概念懂了,做一个简单小练习吧
众所周知我国公民18岁以下属于未成年人,18岁以及18岁以上属于成年人
咱们做一个简单的程序,输入年龄来判断是否成年:
#include <stdio.h>
int main()
{
int year = 0;
printf("请输入年龄>:\n");
scanf("%d", &year);
if(year<18)
{
printf("未成年人\n");
}
else if(year>=18)
{
printf("成年人\n");
}
return 0;
}
是不是很简单,来看看运行结果:
已经达到了我们的目的;
可是在我们的生活和学习中的问题往往不会有这么简单,我们会面对多分支的语句
尽管if语句也能用于多分支语句但解决多分支问题的最常用的是接下来介绍的switch语句:
先来看看switch的语法结构:
switch (整形表达式)
{
case 整形常量表达式1:
{
语句1;
}
case 整形常量表达式2:
{
语句2;
}
}
想要多几条分支就多加几条case
特别注意:
(1)switch ( 整形表达式 ) ( 必须是整形表达式(char可以) )
(2)case 整形常量表达式 : ( 必须是整形且常量表达式 )
还是先从翻译来理解
switch---开关;转变;突变 case---事实;案例;容器
所以可以通俗理解成:
几号开关()就从几号案例开始执行{}
现在还不太会用,接下来用一个实例来学习以下如何使用:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日
学到这里我们来写一下代码:
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
{
printf("星期一\n");
}
case 2:
{
printf("星期二\n");
}
case 3:
{
printf("星期三\n");
}
case 4:
{
printf("星期四\n");
}
case 5:
{
printf("星期五\n");
}
case 6:
{
printf("星期六\n");
}
case 7:
{
printf("星期日\n");
}
}
return 0;
}
看起来没毛病,我们运行一下:
结果并没有按照我们的设想,这是为什么呢?
其实原因是5输入后从case 5开始后面的case 6、7都会被执行
并没有达到我们的一个选择一个结果的设想
那我们怎样才能用switch语句来完成一个选择只能输出一个结果的设想呢?
改进代码:
很简单在每一个case语句的最后加上break
这样无论从哪个case进入都会在执行完这个case的语句后马上跳出switch语句
#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;
}
现在再来运行一下代码:
这次达到了我们的设想
所以建议养成好习惯:
以后每条case语句最后都加上一条break;
题目给的问题我们现在解决了,输入1-7的数字,输出对应的星期,可是大家有没有想过如果我们输入1-7以外的数字呢?我们来试试。
什么都没输出
但是现在我想让输入1-7之外的数字时提示我们输入错误,该怎么做呢?
总不可能一个一个罗列出来吧
这时候就到我们的default出场了
还是先翻译一下:
default---违约;默认
所以通俗理解成
不符合上述案例的执行{}
好现在我们用default根据题意来改一下代码:
#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;
}
default:
{
printf("输入错误\n");
break;
}
}
return 0;
}
运行一下,看看结果
达到了我们的设想
特别提醒:
default不一定要放最后,放在中间也是一样的效果;还有要记得default里面也要放break噢
所以建议养成好习惯:
每个switch里面都要记得加上一个default
那么好今天的c语言分支语句到这里就学完了
纸上得来终觉浅,绝知此事要躬行。
快去写代码实践一下吧!
这是本人学习c语言分支语句的总结,供大家学习交流和我的日后复习,大家有什么意见或者建议欢迎留在评论区!