目录
一、引入
今天,我们来学习分支与循环语句。
在我们日常中所做的事中,总结起来大概就是三大类。顺序,例如我们的人生,婴儿,孩子,青年,中年,老年等。选择,例如我们高中的选科,填志愿时选专业,选院校等等。循环,例如我们学习。生活的方方面面都设计这三类,那么在代码的世界又如何体现呢?接下来我们来讨论一下选择这一方面。
二、选择语句
1.if语句
单分支if语句
if(表达式)
{
语句1;
}
双分支if语句
if(表达式)
{
语句1;
}
else
{
语句2;
}
多分支if语句
if(表达式)
{
语句1;
}
else if(表达式)
{
语句2;
}
....... 此处可以写多个else if分支
else
{
语句;
}
分析:
- c语言是用0来代表假,非0为真;
- if后面的表达式作为一个条件判断,若条件判断为真,条件成立,执行后面的语句。否则不执行或者执行else后面的语句,或者进入其他语句判断。
if语句的一个易错点
#include <stdio.h>
int main ()
{
int a == 0;
int b == 2;
if(a == 1)
if(b == 2)
printf("hehe");
else //else会与离他最近的if匹配
printf("haha");
return 0;
}
//打印结果:没有结果
易错点:else会与离它最近的匹配,我们读程序的时候,要留心分析。
在我们平时写代码的时候要善于添加{},这样写出来的代码会更有调理。
2.switch语句
switch(整型表达式) int、long、longlong、char
{
case 整形常量表达式:
语句;
}
我们来看一个题:用编程实现输入数字,输出相对应的星期
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int day = 0;
//输入
scanf("%d", &day);
int n = 1;
switch (day) //switch语句实现
{
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期天\n");
break;
default:
printf("选择错误\n");
break;
}
/*if (1 == day) //我们可以利用if多分支语句来实现
printf("星期1\n");
else if (2 == day)
printf("星期2\n");
else if (3 == day)
printf("星期3\n");
else if (4 == day)
printf("星期4\n");
else if (5 == day)
printf("星期5\n");
else if (6 == day)
printf("星期6\n");
else if (7 == day)
printf("星期天\n");*/
return 0;
}
分析:首先,我们要了解一个知识点,case后面接的整形常量表达式作为一个标号,执行时首先计算switch后面括号中的表达式,然后按照计算结果依次寻找与之相等的case标号值,找到之后,并从此往下执行;如果找不到case标号值,就从default标号往后执行。
让我们再看一个需要注意的点———break在switch语言中的功能
我们来修改一下上面程序的,看代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int day = 0;
//输入
scanf("%d", &day);
int n = 1;
switch (day)
{
case 1:
printf("星期1\n");
//break;
case 2:
printf("星期2\n");
//break;
case 3:
printf("星期3\n");
//break;
case 4:
printf("星期4\n");
//break;
case 5:
printf("星期5\n");
//break;
case 6:
printf("星期6\n");
//break;
case 7:
printf("星期天\n");
//break;
default:
printf("选择错误\n");
//break;
}
return 0;
}
分析:
- 在这个程序里,我们把break给注释掉了
- 当我们输入5的时候,程序输出的是星期5 星期6 星期天 选择错误;这就不能实现我们想要的功能。
- 出现这个结果的原因是,case子句只起标记作用,它没有判断条件的功能,找到匹配的case的标号只是找到一个程序的入口,执行case后面的语句后,流程控制将转移到下一个case标号后的语句继续执行。
- 如果想要每个case执行之后式程序跳出switch结果,即终止switch语句的执行,我们就需要使用一条break语句可以达到这个目的。
- break语句:从循环体内跳出循环结构,即提前结束循环。在switch结构中体现出来就是跳出switch语句。
此外,这个程序也可多支if语句实现,大家可以自己去尝试一下。
小结
今天我们讨论了分支语句,介绍了if语句的结构,一些要注意的点。讲了switch语句的结构,case标号,break在switch的体现。循环结构我们放到下次。讲的不好,有误的地方,欢迎多多斧正,感谢各位读者的阅读!希望我们都有所进步!!!