C语言的分支和循环语句【挑战200天PAT甲级(6)】2021-09-27

一、C语言的分支语句和循环语句

在这里插入图片描述
1.结构化的C语言
C语言是一个结构化语言,它的重点在于算法与数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)。
C语言的三种基本结构为:顺序、选择、循环结构。(原理如图所示)
在这里插入图片描述
我们今天要说的是分支和循环语句,那么何为语句呢?

C语言中由一个分号隔开的就是一条语句,比如:

printf("晚上好\n");

这就是一条语句,甚至一个分号;都可以是一条语句,它是空语句。

二、分支语句

什么是选择语句
今天中午吃什么?红烧肉还是炖排骨——这就是一种选择

1.单分支语句
if语句为简单的单分支语句,语法结构如下:

if(表达式)
	语句;

if括号内为真则执行

2.多分支语句

if(表达式)
	语句1;
else:
	语句2;
if(表达式1)
	语句1;
else if:
	语句2(表达式2);
else:
	语句3;

多分支,只执行一条语句。
单分支例:

int age = 20;
if(age<18)
	printf("未成年")

多分支例:
在这里插入图片描述
在这里插入图片描述

注:如果表达式这样写可以吗?
在这里插入图片描述
不行,因为他会先执行18按顺序执行,先判断年龄是否为18,然后判断是否小于28,为真就执行了,所以要这么写。
正确写法:

if(age>=18 && age<28)

如果在else中再进行分支呢?
在这里插入图片描述
这样也是可以的,只不过相当于把另一部分再进行划分了。
如果条件成立,要执行多条语句,应该使用代码块。
在这里插入图片描述
如果不使用代码块执行多条语句就会报错:
在这里插入图片描述
在这里插入图片描述
悬空else
在这里插入图片描述
else有就近原则,会和最近的、未匹配的if进行匹配。所以这个什么都不输出。相当于:
在这里插入图片描述
3.switch语句
在这里插入图片描述
如果一步步用if else就太麻烦了。
在这里插入图片描述
switch语句结构:

switch(整型表达式)
{
	语句项;
}

什么是语句项?
在这里插入图片描述
简单来说,switch括号里是一个语句项,而且是整型表达式,“整型”。
case就是各种情况,情况一、二、三…

在这里插入图片描述
输入几,判断今天是周几。

a.从哪里进去由语句项决定,从哪里出去由break决定,break直接跳出。

b.switch语句执行规则,先判断()里是几,然后就在下面找合适的case,执行完该执行的逻辑跳出去。

c.注意case一定要是整型常量,整型、常量。
的。

d.case后面的break一定要有吗?不一定,需要分支的时候才加

***总结:***
***break语句的实际效果是把语句列表划分为不同的部分。***

有时末尾不加break也能运行,但后期修改万一忘记加break分割,那就会出现大麻烦了,方便他人也方便自己,最好都加。

switch中的default:
如果你的输入case没有呢?提供default语句处理非法状况。
default也没有顺序,放在所有case前都可以,但一般置于末尾。
每个switch语句中只能出现一个default。
在这里插入图片描述
在这里插入图片描述
case里也可以出现if语句,switch允许嵌套,但不能出现continue,没有意义。
在这里插入图片描述
输出结果是5、3,case后面没有break是要继续执行case语句的。

4.代码风格
代码无缩进,虽然能执行,但可读性不强,后来有人来看代码就会分辨不清你的意思。
在这里插入图片描述
改变一下刚刚的代码:
在这里插入图片描述
使用了代码块进行划分,程序要做什么一目了然。
再来看几组代码:
在这里插入图片描述
这个代码是条件成立返回x,不成立返回y。但是这样可读性不强,容易造成其他误解。(return只会返回一个)
在这里插入图片描述
这样程序就会清楚明了。

三、循环语句

1.循环语句
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
流程图:
在这里插入图片描述
exper(表达式),表达式结果如果为非0,执行语句,表达式结果为假则跳出流程。

2.break和continue在循环中:
break直接跳了出去,循环中遇到break,不管执行到几,直接跳出去。

来看两段代码,感受一下continue。
在这里插入图片描述
在这里插入图片描述
i++在后,i没机会变;
i++在前,i可以变。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
getchar是什么意思呢?接收键盘输入一个字符,先判断是否等于ch,然后判断是否=EOF(从左至右执行),putchar是输出,相当于printf。

输出字符用putchar更简单

这个一个个输字符,输了EOF也不能跳出,因为EOF是三个字符,那咋办?输入一个ctrl+z,这时getchar就获取了一个EOF,end of file——文件结束标志,本质的值是-1。

附:

在这里插入图片描述
未来涉及判断常量和一个变量是否相等的时候,把数字放在左边,这样即使打了一个=,但是运行结果会报错,数字放右边有时可以运行,但是是不正确的结果,再查找也是相当费力。
如:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值