- 分支和循环(1)
- 前言
一、顺序结构是什么呢?
二、选择结构是什么呢?
三、循环结构是什么呢?
四、分支语句和循环语句
- (1).分支语句
- (2). 循环语句
- (3).什么是语句呢?
- (4). if语句
- (5). switch语句
- (6). while循环
- 总结
前言
C语言是一门 结构化 的程序设计语言
在生活中无非也就是三种结构
1.顺序结构
2.选择结构
3.循环结构
一、顺序结构是什么呢?
就好比生活中我们要去商店,那么我们是不是从家走到商店就好了呀,对啦这样的就是顺序结构。
顺序结构就是这样,要干一件直接从开始干到结束,中间不会做一些选择之类的
二、选择结构是什么呢?
选择结构呢,就比如我们去我们去商店买东西,在买东西的时候我们会发现另一件商品也很好,
这样我们就会有选择,可能选第一个也有可能选择第二个,这就是选择结构。
三、循环结构是什么呢?
循环结构,就是比如我们每天都会干某件事,好比学习,我们每天都会学习这就是种循环。
还有一种循环就是,我们日复一日的学习,突然有一天学成了,出息了,那我们可能就不会学习了,
这样就跳出了循环。
四、分支语句和循环语句 (1).分支语句
- if
- switch
- while
- for
- do while
C语言中由一个分号 ; 隔开的就是一条语句。
比如
#include
int main()
{
int a = 0;
return 0;
}
如果这里不加分号 编译器会报错,编译不过去的,想解决只要加上分号就可以
那么大家来看,这个是不是语句呢?
有人会说是,也有人会说不是,那么它到底是不是呢?
答案:是,只不过啊它是一个空语句什么都没有
有的人说了:那它在这有什么价值呢?
有的代码需要这么一个语句,但是呢不需要执行什么,这时候啊就会用到空语句。
if语句的语法是什么样的呢?
语法结构:
if(表达式)
语句;
如果表达式计算结果为真执行语句
if(表达式)
语句1;
else
语句2;
如果表达式计算的结果为真执行语句1,否则执行语句2
//多分支的情况
if(表达式)
语句1;
else if(表达式2)
语句2;
else
语句3;
如果表达式1成立那么语句1就会被执行,另外如果表达式2成立那么执行一下表达式2,如果表达式2都不成立那么走
else执行语句3
注: 三个语句只能执行一个。
代码如下 (示例):
#include
int main()
{
int age = 12;
if(age < 18)//判断表达式
printf("未成年\n");
return 0;
}
这里的age是不是小于18呀,那么输出的就是未成年。
如果我们把age改成20
大家看是不是什么都不输出呀,因为什么呢?
这里的age是20,20小于18表达式为假,所以什么都不输出,这就是单分支if
再说说if else
代码如下 (示例):
#include
int main()
{
int age = 20;
if(age < 18)
printf("未成年\n");
else
printf("成年\n");
return 0;
}
大家看这里输出的就是成年,同理如果我们把 age改成12它就会输出未成年
其实if语句是没有什么难点的,重点是if后面的那对()。
还有就是有的人呢,在写if语句的时候明明看着没有错误,但是给你d了一个
不要着急,有时候写着写着就习惯性自己在if(age < 18);加上了 分号
代码如下:
我们只需要把 ; 分号去掉即可通过编译,不要问我怎么知道的,说多了都是泪…
多分支的if
代码如下 (示例) :
#include
int main()
{
int age = 12;
if(age < 18)
printf("未成年\n");
else if(18 <= age < 27)
printf("青年\n");
}
大家是不是看着这里的else if有些奇怪呀,看着也没什么问题,但是在这里是不行的
我把其他的屏蔽掉给你们看一看哈
大家一定好奇为啥还会输出青年呢?
那是怎么执行的呢?
它会先执行圈起来的,但是age是12这样条件就为假了呀
为假就是0,然后到箭头这一步( 0< 27)这个条件为真,结果就是输出青年
那么正确的要怎么写呢?
代码如下 (示例):
#include
int main()
{
int age = 51;
if(age < 18)
printf("未成年\n");
else if(age >= 18 && age < 27)//&& 并且
printf("青年\n");
else if(age >= 27 && age < 49)
printf("壮年\n");
else if(age >= 49 && age < 90)
printf("老年\n");
else
printf("长寿\n");
return 0;
}
看这里就输出了老年,这就是正确的多分支if的用法。
注:在C语言中,0表示假,非0表示真
悬空else
代码如下 (示例):
#include
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
它是输出haha还是hehe呢
下面是在编译器上敲出来的给大家看看有什么不同
大家是不是发现这里的else缩进来了呀,那我们打印一下看看结果是haha还是hehe
什么都不输出,难道是else位置不对?那我们改一下
我们发现改了else的位置也还是什么都不输出。
那么我们说呀,else只和最近的if进行匹配
用代码来给大家看一下:
咱们看到了代码,发现图一不是已经配对了嘛,那为什么还什么都不输出呢?
因为这里a = 0 if的条件是(a == 1) ,这里a不等于1,所以为假,如果if语句都没进去的话,那么if else更不可能进去
所以什么都不输出。
switch的语法是什么呢?
switch(整型表达式)
{
语句项;
}
语句项又是什么呢?
是有些case语句:
如下:
case 整型常量表达式:
语句;
switch语句也是一种分支语句。
常常用于多分支的情况:
比如:
输入1 | 输出星期一 |
---|---|
输入2 | 输出星期二 |
输入3 | 输出星期三 |
输入4 | 输出星期四 |
输入5 | 输出星期五 |
输入6 | 输出星期六 |
输入7 | 输出星期天 |
代码如下 (示例):
#include
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;
}
那么我们输入一个2,来看一下结果
我们看,这怎么输出了星期二它 并没有停止呀,我们想要的是输出一个星期二就结束的
这时候我们要用到break,break是终止停止的意思,它可以直接跳出switch语句
我们来看一下效果
这里就只输出了一个星期二,达到了我们想要的样子,这里 也可以把每个语句后面都加个break
这样我们想表达那个都可以了,这就是switch语句。
这么看是不是有点麻烦呀,把1-5改成工作,6-7改成工作日,我们要怎么写呢 ?
代码如下 :
可以这样写来写,一样可以来执行,case后面不一定要有break
还有一种是什么呢,如果我们让别人来输入一个值的话,他输入了一个人9,但是这个9已经超出
它处理的范围了,那么我们怎么办呢,在switch里面有这么一种处理方式
可以在后面加上一个default 如果1-7都不能进去的话那我们就走 default默认这种情况,
代码如下:
这里会给你提示错误,所以呀,以后在写的switch语句时候超出处理范围了,就会给出提示。
while的语法
//while后面的表达式为真才会执行循环
while(表达式)
循环语句;
举个例子:
我们能不能写一个打印1-10的循环呢?
代码如下:
是不是很好的在屏幕上打印了1-10呀,这就是一个简单的while循环。
那么循环里面会不会 遇到break呢? 相反会不会遇到继续呢?都有什么作用呢?
答案是:会的
那我们先来看看break在循环里的作用
代码如下:
大家发现了没有,这里原来是打印1-10的呀,怎么遇到brak就打印1-4了呢
当我们在循环里遇到break的时候不管它后面还要循环多少次,都会突然停止,循环不在继续
这就是循环里break的作用。
那continue呢?
continue是继续的意思 ,那么它有什么作用呢?
代码如下:
这里还是1 2 3 4呀,没有变啊,但是它后面的光标还在闪,说明程序还没有结束
当它在屏幕上打印了1 2 3 4 之后陷入了死循环
continue的作用就是再循环里有机会执行到continue的时候它后面的这一次循环和代码
将不在继续,会跳过本次循环后面的代码。
以上就是今天要讲的内容希望大家可以看懂,还剩下两种循环会在分支和循环(2)中分享给大家,这是我的第二篇博客,希望大家多多支持,谢谢大家。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)