hello,大家好,我是霜淮子,阅读我的文章学习c语言,作者水平有限,如果发现错误的地方,欢迎大家在评论区留言,万分感谢!
欢迎订阅专栏《c语言程序设计》
目录
前言
这篇文章接着给大家介绍在编写程序的时候用到的if结构,让大家知道如何使用它,以及使用它的时候会出现哪些问题!
3.1、判断
判断的条件
关系运算,做比较的运算符
计算两个值之间的关系,所以叫做关系运算
关系运算符的结果:
当两个值得关系符合关系运算符得预期时,关系运算的结果为整数1,否则为0.
判断成绩
const int PASS=60;
int score;
printf("请输入成绩:");
if语句
if和else后面也可以没有{}而是一条语句
3.2、分支
嵌套的if-else
在if或else后面要执行的还是if语句,就成了嵌套
当if的条件满足或者不满足的时候要执行的语句也可以是一条if或if-else语句,这就是嵌套的if语句,例如:
#include<stdio.h>
int main(){
const int READY=24;
int code=0;
int count=0;
scanf("%d %d.&code.&count");
if(code==READY){
if(count<20)
printf("一切正常\n");}
else
printf("继续等待\n");
return 0;
}
代码分析
tips:在每一句if后面都加上一个大括号,尽管只有一句语句的时候
级联的if-else
像分段函数那样的程序就可以写成级联的if
例如下面这个分段函数:
F(x)=-1;x<0
0;x=0
2x;x>0
级联的if-else-if
if-sles的常见错误
if 语句常见的错误:
- 忘记大括号
- if后面的分号
家人们,咱就是说if(**********);
如果if后面有分号,在编译器认为在分号前面是有一条语句的,他什么都不做,接下来的语句就都是一些普通的语句,所以一定不能在if后面加上一个分号。
- 错误使用==和=
if只要求()里面的值是零或者非零
if(a=b)
{
printf("A=B");
}
手一抖,少敲了一个等号,就变成了赋值,变成一个表达式之后,这个运算也会有结果,就把b的值弄给了a,但是就不会去判断a和b的值是否相同,
多路分支:switch-case
现在我们来看看这个代码是一个怎样的执行过程
#include<stdio.h>
int main(){
int type;
scanf("%d",&type);
if(type==1)
printf("你好!");
else if(type==2)
printf("早上好");
else if(type==3)
printf("中午好");
else if(type==4)
printf("晚上好");
else
printf("再见");
return 0;
}
代码进行运行,假设你输入一个数字3,输出结果是中午好。调试分析,你输入3之后,他会先做type是否等于1的判断,发现不对,在做type是否等于2的判断,一直做到type等于3,发现对了,输出结果中午好,完了以后,程序完成,
但是这个程序呢,执行的时候就得按照顺序一个一个来,假如说你输入了1,那么才开始就能很快得出结果,但是如果你输入的type,既不等于1,也不等于2,3,4,等于其他的数字,那么程序就要运行到最后,因此我们引出switch-case
#include<stdio.h>
int main(){
int type;
scanf("%d",&type);
switch(type){
case 1:
printf("你好");
break;
case 2:
printf("早上好");
break;
case 3:
printf("中午好");
break;
case 4:
printf("晚上好");
break;
default:
printf("再见");
return 0;
}
}
大家可以自行设置断点去分析,它不需要每一个都去验证,会自己调到满足要求的那个地方执行。
switch-case表达式的基本结构如下:
switch(控制表达式){
case 常量:
语句
.....
case 常量:
语句
......
default:
语句
......
}
注意:
(1)、这里的控制表达式只能是整数型的结果。
(2)、常量可以是常数,也可以是常数计算的表达式。
(3)、switch语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。
分支标号只是说明switch内部位置的路标,在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case去,直到遇到一个break,或者switch结束为止。
-END-