C语言初阶系列
分支语句和循环语句(1)
目录
前言
我们学习C语言,从小白成长为大佬的的探险历程,我们在这章将初步探索if语句这个知识关卡
一,什么是语句?
C语言语句可分为以下五类:
1. 表达式语句
2. 函数调用语句
3. 控制语句
4. 复合语句
5. 空语句
1.1如何理解语句?
我们将使用代码和注释,以及和运行示意图:
int main() { 3 + 5;//这就是一个表达式语句 printf("hehe\n");//我们想用printf函数打印hehe这个信息,调用这个函数, //完成之后给个分号,这就是函数调用语句 //语句就是大部分情况下一个分号隔开的就是一个语句 ;//简单的放一个分号,这就是一个语句,但是这个语句什么都不干,这叫空语句 //空语句的应用场景,有时候我们需要一条语句,但是这条语句什么都不需要做,就可以使用空语句 return 0; }
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语
言有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分支语句:if语句、switch语句;
2. 循环执行语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句
二,分支语句(选择结构)
分支语句是面向我们C语言的选择结构,为了实现这种选择结构
C语言给出了分支语言这个语法特点
2.1,if语句
是C语言单子常用的,能够实现分支的这样的语句形式
if语句该怎么去书写呢,解释一下:
如果表达式的结果为真,则语句执行。
在C语言中如何表示真假?
0表示假,非0表示真。
2.2,if语句的错误的条件写法
我们将使用代码和注释,以及和运行示意图:
//错误写法 int main() { int age = 0; scanf("%d", &age); if (18<= age <=30) //表达式先判断age>=18, //如果age是50的话,18小于age,这个条件为真,为真就等于1 //1又小于等于30,所以这个地方就打印青年了 //不是两端去判断age在这个范围内,它是先执行18<= age,在执行age <=30 printf("青年\n"); return 0; }
2.2,if语句的正确的条件写法
我们将使用代码和注释,以及和运行示意图:
正确写法 int main() { int age = 0; scanf("%d", &age); if ( age >=18 && age <= 30) printf("青年\n"); return 0; }
2.3,单分支结构
单分支语法结构:
if (表达式)
语句;解释:
if语句的后面的小小括号里面放一个表达式,
表达式的结果如果为真,语句就被执行,表达式的结果如果为假就不被执行
C语言中:0表示假,非0表示为真
表达式如果算出的不是0就是真,语句执行,如果为0就不执行我们将使用代码和注释,以及和运行示意图:
//单分支的场景 //只处理符合条件的 int main() { //如果年龄大于等于18 -- 成年 //小于18,不管他 int age = 0; scanf("%d", &age); if (age >= 18) { printf("成年人"); } return 0; }
编辑
编辑
2.4,双分支结构
双分支语法结构:
if (表达式)
语句1;
else
语句2;解释:
if如果表达式为真,就执行语句1,
当表达式为假的时候,我也想处理,我就可以走else,就可以执行语句2
要么你从if语句进去,执行语句1,不行就执行else语句,执行语句2,这个里面二选一我们将使用代码和注释,以及和运行示意图:
int main() { // 有if有else你不行就我来 //如果年龄大于等于18 -- 成年人,否则就打印 -- 未成年人 int age = 0; scanf("%d", &age); if (age >= 18) { printf("成年人"); } else { printf("未成年人\n"); } return 0; }
编辑
编辑
2.5,多分支结构
多分支语法结构:
if (表达式1)
语句1;
else if (表达式2)
语句2;
else
语句3;解释:
if表达式语句,如果表达式语句为真,就执行语句1,
如果不行的话,else if在判断一下下面表达式2,
如果表达式2的语句为真,就执行语句2,
如果表达式2的语句也不为真,就只能执行else的语句3
这里就做到了3选1,当然也可以多选1多分支结构举例:
我们使用多分支的条件
age <18 - 未成年
18-30 - 青年
31-50 -中年
51-70 -中老年
71-99 -老年
>99 -老寿星
2.5.1可以实现,使用的很多的嵌套但是很臃肿的写法
我们将使用代码和注释,以及和运行示意图:
int main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("未成年\n"); } else//else如果是整体的一个逻辑的话,大于等于18, //else里面有很多种类的情况,里面也可以细分 { if (age >= 18 && age <= 30)//如果大括号里面只有一条语句。就可以将大括号去掉 { printf("青年\n");//if else这个整体合起来是一条语句 } else { if (age >= 31 && age <= 50) { printf("中年\n"); } else { if (age >= 51 && age <= 70) { printf("中老年\n"); } else { if (age >= 71 && age <=99 ) { printf("老年\n"); } else { printf("老寿星\n"); } } } } } return 0; }
编辑
编辑
2.5.2简洁的写法
我们将使用代码和注释,以及和运行示意图:
int main() { int age = 0; scanf("%d", &age); if (age < 18) printf("未成年\n"); else if (age >= 18 && age <= 30) printf("青年\n"); else if (age >= 31 && age <= 50) printf("中年\n"); else if (age >= 51 && age <= 70) printf("中老年\n"); else if (age >= 71 && age <=99 ) printf("老年\n"); else printf("老寿星\n"); return 0; }
编辑
编辑
2.5.2更简洁的写法
我们将使用代码和注释,以及和运行示意图:
//因为有前置条件可以在else if中写出一种条件就行 //但是条件顺序不能变动,变动就会逻辑错误 int main() { int age = 0; scanf("%d", &age); if (age < 18) printf("未成年\n"); else if ( age <= 30) printf("青年\n"); else if ( age <= 50) printf("中年\n"); else if ( age <= 70) printf("中老年\n"); else if ( age <= 99) printf("老年\n"); else printf("老寿星\n"); return 0; }
编辑
编辑
2.6,if语句默认它的后面只能控制一条语句
我们将使用代码和注释,以及和运行示意图:
int main() { int age = 0; scanf("%d", &age); if (age >= 18) printf("成年了\n"); printf("谈恋爱");//独立的,不被if控制 return; }
编辑
编辑
如果想让if语句可以控制,就要加一个限制
if后面加上一个大括号,这样if语句才都被控制了一个大括号对应的是一个代码块
int main() { int age = 0; scanf("%d", &age); if (age >= 18) {//代码块 printf("成年了\n"); printf("谈恋爱"); } return; }
编辑
2.7,养成良好的代码习惯
要养成良好的代码风格,让别人能够看得懂
容易让大家出现阅读错误的代码风格我们将使用代码和注释,以及和运行示意图:
int main() { int a = 0; int b = 2; if (a == 1) if (b == 2) printf("hehe\n"); else printf("haha\n"); return 0; } //看代码感觉结果是haha //但是结果是不打印 //else是与最近的if相匹配的,这样第一if进入了才能执行if里面的if和else //要写出让人容易理解的代码风格
编辑
//更容易看懂的代码风格 int main() { int a = 0; int b = 2; if (a == 1) { if (b == 2) printf("hehe\n"); else printf("haha\n"); } return 0; }
2.7.1更人看懂的代码风格
我们将使用代码和注释,以及和运行示意图:
if语句的书写风格 容易误导的写法 if的条件满足就是return x,不满足就返回return y。 if (condition) { return x; } return y; 让人一目了然的写法 if (condition) { return x; } else { return y; } 在不影响效率的情况下我们要写那种让人一目了然的代码
if语句小技巧
我们将使用代码和注释,以及和运行示意图:
int main() { int a = 0; //if(a == 5)//这样写少写一个=号,不易发现,没有报错 if (5 == a)//当我们写少写一个=号,就会报错,易发现错误 //未来我们想判断一个变量和一个常量值是否相等的话, //可以把常量放在等号的左边,这样即使少写了一个等号,就会发现错误,改正 printf("hehe\n"); return 0; }
2.8,举例if语句
2.8.1. 判断一个数是否为奇数
我们将使用代码和注释,以及和运行示意图:
int main() { int n = 0; scanf("%d", &n);//只有变量才能赋值,表达式是不能被赋值的, //少写一个等号就会直接报错的 if (n % 2 == 1)//通过模2得到的余数为1的,都是奇数 { printf("YES\n"); } else printf("NO\n"); return 0; }
编辑
编辑
2.8.2.输出1 - 100之间的奇数
我们将使用代码和注释,以及和运行示意图:
使用分支语句解题:
int main() { int i = 1;//循环变量 while (i <= 100) { if (i % 2 == 1)//通过模2得到的余数为1的,都是奇数 printf("%d ", i);//%d后面加一个空格是为了,让我们看的跟清晰 i++; } return 0; }
编辑
不使用分支语句解题:
int main() { int i = 1;//循环变量 while (i <= 100) { printf("%d ", i);//%d后面加一个空格是为了,让我们看的跟清晰 i+=2; } return 0; }
编辑
总结
以上就是今天要讲的内容,本文仅仅全面介绍了C语言的if语句,可以让你在c语言的探险更加有趣,充实。