文章目录
- if语句
- switch语句
- while循环
- for循环
- do-while循环
- 嵌套循环
前言
分支与循环是C语言中一个十分重要的内容,因此我们更应该仔细的了解他,并且能够做到熟练掌握,同学们应当仔细认真阅读本期内容,能够做到灵活掌握。
一、if语句
在生活中我们需要依据条件来判断,以此做出相应的事情,c语言也是这样,我们会依据一些条件的判断,进行不同的处理,下面我们来看看if语句的具体格式吧:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int a = 0;
scanf("%d", &a);
if (a > 0) {
printf("haha\n");
}
else {
printf("hehe\n");
}
return 0;
}
上图是一个比较简单的if语句完成的代码,我们可以看到if语句的作用--依据a不同的值打印出不同的结果。我们先来看看if语句的结构首先if后要加(),在()中所填写的就是若要打印出haha的条件,而else则是与if条件相反的条件,类似于是非此即彼的关系,注意else后面是不能加条件的即没有像if语句后面的“()”,以及其中的条件;
可有些情况下并不都是非此即彼的关系,判断情况多起来的时候怎么办呢?那么我们就可以嵌套使用if-else语句,那么该如何嵌套呢,我们再来看一段代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int a = 0;
scanf("%d", &a);
if (a > 0) {
printf("haha\n");
}
else if (a = 0) {
printf("hehe\n");
}
else { printf("xixi\n");
}
return 0;
}
我们来观察,嵌套使用,是要嵌套在else中,只有一层嵌套时可以可以省略大括号,但是如果有多层嵌套时,大括号不可以省略,当然为了逻辑的清晰,我更建议加上大括号情况有很多时,我们也可以写成如下形式
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int a = 0;
scanf("%d", &a);
if (a > 1) {
printf("haha\n");
}
else {
if (a == 1) {
printf("xixi\n");
}
else if (a == 0) {
printf("huhu\n");
}
else if (a == -1) {
printf("hehe\n");
}
else {
printf("zhizhi\n");
}
}
return 0;
}
即if else可以放在一起使用,但else单独出现时,后面不能加条件,同时要注意if else,如果只能控制一条语句,所以当我们想执行多个命令时,应当大括号括住;同学们可以多加练习体会其用法并灵活掌握。
注意if语句条件,后面不应当加分号,加分号表示执行空语句,则不能达到预期效果。
二、switch语句
与if else语句相同,switch语句也是可以实现相应的判断和选择,但switch语句的要求限制更多,同时他的逻辑也更清楚一些,我们现在看一段代码,了解switch语句的构成
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int a = 0;
scanf("%d", &a);
switch (a) {
case 1:printf("xixi"); break;
case 2:printf("haha"); break;
case 3:printf("huhu"); break;
default:printf("hehe"); break;
}
return 0;
}
观察它的形式switch语句后面括号内跟的是表达式,与if语句相同后面也不能加分号,继续看里面的内容,前面需要有case,case后面有空格,空格后的常量即为switch语句括号内表达式运行的结果,注意结果后面结果后面加有冒号,然后写出你想要完成的要求;break的有无取决于你希望他最终输出什么样,前面case后所加的常量仅表示一个入口,若没有break跳出程序的话,进去入口后,如果下面还有别的表达式的话,也会执行,(这样的运行方式有一个好处,当输出多结果你希望后续进行相同的操作时,前面语句中不需要加break)最后的default即除以上形式外其余的情况的结果;
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int a = 0;
scanf("%d", &a);
switch (a) {
case 1:printf("xixi");
case 2:printf("haha"); break;
case 3:printf("huhu"); break;
default:printf("hehe"); break;
}
return 0;
}
我们来看这段代码与上段代码不同的是,我将case 1后面的break去掉,那么我们来看看它的运行结果,当我给赋值为一的时候,它能够从case 1的入口进去,但并没有跳出,之后再会进行后面的操作,又打印了“haha”遇到了break跳出switch语句
最后,我们要明晰switch语句能够运行所需的条件:首先switch语句括号内的表达式一定是整形表达式,case后面所跟的结果,一定是整形常量表达式,同学们可以自己写一段代码,感受一下!!
三、while循环
我们认识了能够进行判断选择的If else switch句之后,我们接下来认识一下能够控制循环的语句,有三种分别是for循环,while循环和do-while循环,我们首先来认识一下while循环;
当我们需要循环一段代码的时候,循环语句是实现的重要形式。接下来,我们看一段代码了解一下while循环的构成:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int a =1;
while (a) {
printf("请输入\n");
scanf("%d", &a);
printf("您输入的数为%d\n",a);
}
return 0;
}
while循环语句的结构比较简单,while后跟的括号里的是进行判断是否能够进入循环的条件,后面跟多条语句时要用大括号括起来。不难看出对于上文代码,只有输入零的时候才能跳出循环。
注意循环条件是十分重要的,如果不能跳出循环条件便会进入死循环。
当我们需要限制循环次数的次数时,往往设计一个类似于计数器的变量,当达到循环次数时,就会跳出循环。我们看一段代码体会一下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int a = 0;
int count = 1;
while (count <= 5) {
printf("请输入\n");
scanf("%d", &a);
printf("您输入的数为%d\n",a);
count++;//注意这里等价与count=count+1
}
return 0;
}
这个代码就表示可以输入五次,想要输入的数。
四、for循环
了解完while循环后,我们可以了解一下另一种循环形式——for循环。for循环相较于while循环逻辑层次更加清楚,接下来我们看看for循环的代码格式:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int i = 0;
int a = 0;
for (i = 1; i <= 5; i++) {
printf("请输入\n");
scanf("%d", &a);
printf("您输入的数为%d\n",a);
}
return 0;
}
我们逐步分析一下for循环的格式,for后面跟的括号内,以两个“;”将它分成三个部分。第一部分是变量的初始化,第二部分是判断循环的条件,第三部分是对初始变量的进行的操作。那么整个过程就是先对变量初始化进行所设置的循环的语句,最后再对变量进行操作,再进行判断是否满足循环条件,若满足则继续循环,不满足则跳出循环。
怎么样是否感觉for循环更加整齐一些了呢?接下来让我们了解最后一个循环语句——do while循环!
五、do -while循环
do while循环与while循环大体相似,但do while循环至少循环一次,而well循环则可以一次都不循环,接下来我们看一段代码,仔细了解一下do while循环的格式
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int i = 1;
int a = 0;
do {
printf("请输入\n");
scanf("%d", &a);
printf("您输入的数为%d\n", a);
i++;
} while (i <= 5);
return 0;
}
do- well循环首先是do加大括号括号内放的是循环体,而循环判断的条件则放在后面,那么我们可以看出,无论第一次循环时是否满足循环条件,程序都会执行一次再进行判断。这种循环方式在某些特定的场景下是十分有用的,例如,当我们写一个小游戏时,不管怎样,程序都会先执行一次,让用户选择是否继续游戏。
与while循环不同的是注意do-while后面的判断语句后要加分号!
六、嵌套循环
我们上面所进行的循环都是一层循环,事实上我们也可以嵌套循环,即循环中套有循环,这就更加需要我们明白其中的关系!
我们以for循环和while循环为例,写出一段九九乘法表,如图所示
先来看while循环该如何实现目的:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 1, j = 1;
while (i <= 9) {//i表示行数,即有9行
j = 1;//j表示每一行所有的数字数量,没循环完一行都要重新赋值,这样才能保证每一行的个数有多个;
while (j <= i) {//这里要理解个数与行数的关系,
printf("%4d", i * j);//%4d指的是占四个字符的位置,i*j表示的就是每一行所代表的数字
j++;
}i++;
printf("\n");
}
return 0;
}
再来看看for循环是如何完成的:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int i=0, j=0;
for (i = 1; i <= 9; i++)
{
for (j = 1; j <= i; j++) {//这里不像while循环,需要重新给j赋值,由于for循环的性质,每一次进行到第二层循环时,都会重新给j赋值为1
printf("%4d", i * j);
}
printf("\n");//注意每一行完成后的换行问题
}
return 0;
}
如果这里有些同学看不懂的话,是很正常的。循环最关键的就是要弄清楚其中各层的关系,可以跟着代码自己走一遍,模仿着去写进行理解。
如果想继续深入了解嵌套循环的使用的话,可以参考前面三篇文章。
总结
这一期内容我们学习了分支与循环语句,分支主要利用if语句和switch语句完成,而循环主要利用while语句 for语句和do while语句 3种语句完成。
同学们下去一定要多加练习,并且掌握这几种基本的语句,有什么不懂的,欢迎在评论区里讨论!
我们下期再见啦!