c语言学习日记之《分支语句》
文章目录
前言
c语言的结构体分为三种,顺序结构,分支结构,循环结构,这些结构也一一对应了我们日常所需,顺序就意味这从头到尾,分支结构就像是人生的分路口,每一个人有着不一样的人生,循环结构像我们练习代码,练习语言,需要不断不断的练习才能够学的好,学的牢。
分支语句
1. if语句
前言
表达式判断 (0为假,非0就为真 记住是非0不是1!!!!)
表达式为真(会执行后面跟随的语句,如果想多条语句执行就加上{},促成代码块。)
1.1 if单分支语句
if(表达式)
语句;
单分支语句演示:
1.2 if双分支语句
if(表达式)
语句;
else
语句;
双分支语句演示:
1.3 if多分支语句
if(表达式)
语句;
else if (表达式)//else也可以再次调用if语句
语句;
else
;
多分支语句演示:
1.4 if语句中的易混点和良好书写形式
(1)如下列代码所示:大家可能看见第一个if觉得不成功会打印else中的语句,其实不然,第一个语句执行不成功后面的语句也不会执行,什么都打印不出来,因为else是和最近的if相匹配。
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
改写:如果是像下列这样改写,那就和大家伙所想的是一样的了,还记得我们上面的前言吗,当我们想要执行多条语句加上{}就可以变成一个代码块了,这样第一个if不成功就会执行else后面的语句,让我们打印出来看看。
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
}
else
printf("haha\n");
return 0;
}
结果是这样的:
(2)上列的代码的逻辑性也不够丰富且不够好看,(再度适量的加入{}更加好看些,如下列代码所示)
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
{
printf("hehe\n");
}
}
else
{
printf("haha\n");
}
return 0;
}
(3)下列代码中,如果不小心把==写错了写成了=,那就把常量赋值给了变量,就会执行打印,整体的逻辑也不够清晰,我们来改写一下。
int main()
{
int num = 7;
if (num == 1)
{
printf("成功\n");
}
}
改写:这样更加的逻辑清晰,并且呢就算写成了=,IDE也是会报错,左操作数必须为左值。
int main()
{
int num = 7;
if (1 == num)
{
printf("成功\n");
}
return 0;
}
2.switch语句
前言:如果有许多许多的分支再选择if else就过于繁琐,这样我们用switch就更加的便捷,这里我们还会学到跳转语句的break语句。
2.1 switch的构成
switch(整型表达式)
{
case(整型常量表达式):
语句;
}
2.2 break语句在switch语句里的应用。
如果我们没有运用break语句在其中就会一直执行case1到case n,这样就没办法实现分支了,像下列代码,运行起来就全部都会打印。
#include <stdio.h>
int main()
{
int day = 0;
scanf_s("%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;
}
改写:如果加上break,反之就不会这样。
#include <stdio.h>
int main()
{
int day = 0;
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;
}
2.3 default子句
如果整型表达式的值和case的标签都不匹配怎么办,这个时候就需要default子句来运用了。
(需要写在case语句可以出现的位置,表达式不匹配case标签时,就会运行default子句后的case语句,只能出现一条default子句,可以出现在switch里的任何位置。)
#include <stdio.h>
int main()
{
int day = 0;
scanf_s("%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;
}