分支与循环语句
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
在本章,我会详述分支和循环语句的概念与使用规范
一、什么是语句
我们常在一条代码的末尾加一个分号 “;” ,C语言中分号前的就是一条语句,例如
int a = 0;
printf("%d\n",a);这又是一条语句
很简单的概念。 那么,如果单放一个分号,分号前什么也不写,算不算一条语句呢? 答:当然也算,这是需要注意的一个小点。
二、分支语句
分支语句又叫选择结构,就比如你如果认真学习,你就能找到好工作;如果你整天打游戏,那就等于你选择了毕业后失业。是好好学习,还是打游戏,这就是你的选择,你的选择会带来相应的结果,这就是分支语句。
分支语句:
1.if语句
if语句的结构:
if(条件)
语句(带来的结果);
else
语句(带来的结果);
如果满足if括号里的条件,则实行if下面的语句,否则执行else下面的语句。
上面是一种结构,还有一种叫多分支结构:
if(条件)
(语句);
else if(条件)
(语句);
else(条件)
(语句);
其实就是在上一种结构上,多了一个选择else if。
接下来我举一个完整的例子,以体重为例
#include <stdio.h>
int main()
{
int weight = 0;
scanf(“%d\n”,&weigth);
if(weight<100)
{
printf("瘦子");
}
else if(weight>100 && weight<150)
{
printf("正常")
}`在这里插入代码片`
else
{
printf("偏重")
}
return 0;
}
这里就是让你输入体重
除此之外,还有个新手常犯的错误,我们看以下代码
#include <stdio.h>
int main()
{
int a = 0;/第一行
int b = 2;/第二行
if(a == 1)/第三行
if(b == 2)/第四行
printf("好的\n");/第五行
else/第六行
printf("不好\n");/第七行
return 0;
可见第三行 if 和第六行的 else 是对齐的,想当然的以为这两个是对应的,如果是这两个对应的话,程序执行的步骤应该是
1. 令a = 0,b = 2 2. 到第三行,判断a是否为2,判断为否 3. 执行else打印“不好”
但是当我们执行会发现,它什么都没打印。
因为,else 和 if 对应的原则是,就近原则,其实第六行和第四行它们是挨最近的,所以是这两处的else和if对应。 因此,程序执行的步骤应该是
1. 令a = 0,b = 2 2. 判断a是否为1,判断为否 3. 下一级的if else语句不执行,直接return 0
所以我们平时为避免这类错误,应当注意使用大括号“{ }”
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
printf("好的\n");
}
else
{
printf("不好\n");
}
return 0;
这样,它打印出来的就是“不好”。
2.switch语句
switch也是一直分支语句,常用于多分支,例如你输入1,程序就输出一月,你输入2,程序就输出二月,以此类推,用 if 语句写比较麻烦,所以就诞生了switch语句。
switch语句:
switch(整型常量表达式)
{
语句项
}
语句项又是什么呢? 语句项是一些case语句,放在例子中为比较好理解
#include <stdio.h>
int main()
{
int day = 1
;
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;
}
该程序执行过程
- int day = 1 这个值可以随机
- 进入switch语句
- 判断day的值与哪个case相同
- 输出该case下的语句
此外,该代码中的break,为终止语句
何为终于语句? 答: 就是程序执行到break,就终止了,很好理解。在switch语句中,实际上程序是判断执行哪个case,判断到了,就直接跳到那个case那边,之后接着执行下面的代码,是不会终止的。就等于十条斑马线,你一跳,跳到了第三条,但之后你还要走完后面的七条。 所以break语句在这里的作用就是你跳到了第三条斑马线,就让你停下来,不让你走了
还有一种情况:如果表达的值与所有case标签的值都不匹配怎么办? 答:其实不匹配在C语言中也不会被报错,只是什么都不输出。 当 switch表达式的值并不匹配所有case标签的值时,我们可以用default子句 来规定其输出什么,其实和case语句类似
default:
{
}
break;
三、循环语句
循环语句有以下几种
1.while循环
循环,顾名思义就是程序去重复执行一个指令,我们可以用此非常简短的写出我们需要的东西。 我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。 那我们怎么做呢? C语言中给我们引入了:while语句,可以实现循环。
while的语法结构
while(表达式)
循环语句;
当我们一直循环,直到满足了表达式所规定的条件,程序才会跳出。
比如我们实现在屏幕上打印1-10的数字
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
它运行的步骤是
- 令i = 1
- 判断 i 是否小于等于10
- 判断为真,则进入循环。
- 先打印 i 的数值
- 再 i + 1
- 再判断 i 是否小于等于10
- 以此类推
2.循环语句中的break与continue
break作用:
break在while语句中,起直接终止所有循环的作用。
continue作用:
continue在while语句中,起终止本次循环的作用,就是在本次循环中,碰到continue后面的语句就不执行,直接跳到while判断。
举个例子能更好理解
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0;
}
大家猜猜此时程序运行之后 打印的值是多少?
答案是:1、2、3、4
该程序执行步骤:
- 令 i = 1
- 判断 i 是否小于等于10
- 判断为真,进入循环
- 在循环内判断 i 是否等于 5
- 不等于 则跳过 if 的语句项continue
- 打印 i 的值
- i + 1
- 再次循环
- 当循环到i 等于 5 的时候 进入 if 语句
- 执行continue 跳过本次循环(不执行后面的打印和 i + 1)
- 直接判断 i 是否小于等于 10 (此时 i 还等于5)
- 再次进入 if 重复 9、10、11的动作
相信这样大家能够更加理解continue的作用。
3.for循环
为什么有了 while 循环还要多个 for 循环呢?
首先我们看for循环的语法:
for(表达式1,表达式2,表达式3)
循环语句:
表达式1
依旧举个例子阐述: (打印1-10的数字)
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
这段代码首先将 i 初始化为1,之后判断 i 是否小于等于10,是则进入循环,执行完整个代码之后再i++(i自增1),再重复上述动作直到 i 大于10停止循环。
那么可见for与while循环是类似的,但我们应该在什么时候用for什么时候用while呢? 答:对一个数组进行循环时,如果每轮循环都是在循 环处理完后才将循环变量增加的话,使用for循环比较方便。 如果循环处理的过程中就要将循环变量增加时,则使用while循环比较方便。
感觉写到这里大家应该能理解了分支与循环语句(文笔可能不是很好QAQ) 所以…. 球球点个赞吧
|