目录
三、循环
1.while循环
(1)基本原理与用法
(2)break在while循环中的作用
(3)continue在while循环中的作用
(4)一图总结while循环
2.for循环
(1)基本语法
(2)break在for循环中的作用
(3)continue在for循环的作用
(4)for循环几个建议
(5)变种的for循环
(6)一道经典的错误标准的零分
3.do while循环
(1)do while语句的语法
(2)break在do while循环中的作用
(3)continue在do while循环中的作用
4.一些经典的题目
5.猜数字游戏
6.goto语句
总结
三、循环
在c语言中,循环共有三种,while循环,for循环,do while循环。在之前我们粗略的了解了while循环,现在我们来详细了解这三种循环。
1.while循环
(1)基本原理与用法
我们在上一篇文章中已经了解了if语句的使用,我们这里复习一个简单的if语句。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int num = 0;
if (num == 0)
printf("hehe");
return 0;
}
这段代码的意思很简单,只要if里面条件成立,则打印hehe。其实while循环和if语句是非常相似的。我们这里在上面的代码稍作修改,将if改为while会发生什么呢?
#include<stdio.h>
int main()
{
int num = 0;
while (num == 0)
printf("hehe");
return 0;
}
输出结果为一个无限打印hehe。对于while语句
一般是这样的形式
while(判断语句)
循环体;
只有当判断语句为真的时候,可以执行下面的语句。执行完以后重新判断,如果仍为真,继续判断,直到为假才能跳出循环。当然上面这种情况下,循环体只能是一条语句,如果想要是多条语句则需要加上大括号
while(判断语句)
{
循环体;
}
这样的话就是多条语句的循环,不难看出,和if语句是很相似的。
我们来实现一个简单的题目,打印出1---10的数字
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ",i);
i++;
}
return 0;
}
(2)break在while循环中的作用
我们看这样一段代码
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
{
break;
}
printf("%d ", i);
i++;
}
return 0;
}
这段代码的运行结果是1 2 3 4
也就是说,我们可以调试一下分析该代码,我们会发现当i等于5时,满足if的条件,执行了break,然后下一步我们的代码就跳出了while循环。程序就结束了。
也就是说break的作用是打破循环
结论:break在while循环中的作用:
在while循环中遇到break,就会停止后期所有的循环,直接终止循环
所以,while中的break是用于永久终止循环的
(3)continue在while循环中的作用
我们先看一段代码,并思考一下运行结果是什么
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
{
continue;
}
printf("%d ", i);
i++;
}
return 0;
}
运行结果为,1234然后死循环但是不打印任何东西。
我们在给出一段代码。看看这个运行结果是什么
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
i++;
if (5 == i)
{
continue;
}
printf("%d ", i);
}
return 0;
}
运行结果为
现在已经不是死循环了,可以打印出来值,并且使得循环结束。
那么continue的作用到底是什么呢?我们给出结论
continue在while循环中的作用:
continue是用于终止本次循环的,也就是本次循环中continue后面的代码都不会被再次执行
而是直接跳转到while语句的判断部分,进行下一次的循环入口判断。
(4)一图总结while循环
2.for循环
(1)基本语法
#include<stdio.h>
int main()
{
for (表达式1; 表达式2; 表达式3)
{
表达式4;
}
return 0;
}
如图所示,for循环先执行表达式1,然后表达式2为判断,如果成立,则执行表达式4,然后执行表达式3,在进行表达式2判断,如此循环下去。
其中
表达式 1表达式 1 为 初始化部分 ,用于初始化循环变量的。表达式 2表达式 2 为 条件判断部分 ,用于判断循环时候终止。表达式 3表达式 3 为 调整部分 ,用于循环条件的调整。
我们举一个简单的例子,打印1--10之间的数字
#include<stdio.h>
int main()
{
int i = 0;
for (i = 0; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
(2)break在for循环中的作用
我们来看这样一段代码
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
break;
}
printf("%d ", i);
}
return 0;
}
运行结果为1 2 3 4
可见,break在for循环中的作用与while循环一样
(3)continue在for循环的作用
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
continue;
}
printf("%d ", i);
}
return 0;
}
运行结果为
我们发现于while循环中有一定差异,因为while循环中不执行调整语句,而for循环执行调整语句,可见存在稍微的差异,导致结果不同,但是其实仍然具有一定的统一性,因为都是只跳过了本次循环的大括号里面的语句,while循环中,调整语句就在大括号里面,所以跳过,而for循环调整语句不在大括号里面,所以不跳过调整语句。
(4)for循环几个建议
①不可在for循环体内修改循环变量,防止for循环失去控制。
②建议for语句的循环控制变量的取值采用“前闭后开区间”写法
(5)变种的for循环
①下面代码中,for循环可以省略初始化部分,判断部分,调整部分,如果省略了判断部分,则判断恒为真。为死循环。
#include <stdio.h>
int main()
{
for (;;)
{
printf("hehe\n");
}
return 0;
}
②这条语句总共打印9个hehe,因为是两个for循环的嵌套使用
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
//这里打印多少个hehe?
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("hehe\n");
}
}
}
③这段代码省略了初始化部分,只打印3个hehe,因为j不会被再次初始化
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
//如果省略掉初始化部分,这里打印多少个hehe?
for (; i < 3; i++)
{
for (; j < 3; j++)
{
printf("hehe\n");
}
}
}
④使用了多余一个变量来控制循环,如下所示,结果为两个hehe
#include<stdio.h>
int main()
{
//使用多余一个变量控制循环
int x, y;
for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
{
printf("hehe\n");
}
return 0;
}
(6)一道经典的错误标准的零分
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
k++;
return 0;
}
这段代码中,判断语句是赋值的,k赋值后是0,为假,因为只有0为假,非零都为真。所以,这道题什么都不打印。
3.do while循环
(1)do while语句的语法
#include<stdio.h>
int main()
{
do
{
//代码块
} while();
return 0;
}
在do while语句中,无论条件是否成立,代码是先执行一次,然后在进行判断的,如果为真,则进入循环。值得注意的是,do while的判断语句后面有一个分号,这点于while和for循环不太一样。
我们仍然举一个简单的例子,打印1---10
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
(2)break在do while循环中的作用
我们看这样一段代码
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
if (i == 5)
{
break;
}
i++;
} while (i <= 10);
return 0;
}
输出结果为
可见,break的作用为打破循环。与在while和for循环中的作用一样
(3)continue在do while循环中的作用
我们看这样一段代码
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
if (i == 5)
{
continue;
}
i++;
} while (i <= 10);
return 0;
}
输出结果为12345555555555555
可见continue的作用仍为,结束本轮循环,也就是跳过本次循环的大括号内剩余的内容。重新进入判断。
4.一些经典的题目
为了使文章条理更加清晰一些,该部分我决定将其放在下一篇博客中。后续会将链接贴在这个位置
5.猜数字游戏
为了使文章条理更加清晰一些,该部分也同样将放到下一篇博客中,后续会将链接贴到这个位置
6.goto语句
C 语言中提供了可以随意滥用的 goto 语句和标记跳转的标号。从理论上 goto 语句是没有必要的,实践中没有 goto 语句也可以很容易的写出代码。但是某些场合下 goto 语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过 程。例如:一次跳出两层或多层循环。多层循环这种情况使用 break 是达不到目的。它只能从最内层循环退出到上一层的循环。
#include<stdio.h>
int main()
{
flag:
printf("haha");
goto flag;
return;
}
我们在举一个例子,是goto语句在关机程序中的使用
一个关机程序
程序执行起来就倒计时关机,60秒后关机
如果输入:我是猪,就取消关机
#include<stdio.h>
#include<windows.h>
int main()
{
char input[20] = { 0 };
system("shutdown -s -t 60");
again:
printf("你的电脑将在60s后关机,如果输入我是猪,就取消关机");
scanf("%s", input);
if (0 == strcmp(input, "我是猪"))
{
system("shutdown -a");
}
else
{
goto again;
}
}
这就是我们的代码,当我们输入我是猪时候,就会停止关机
其中有几个库函数和命令需要大家了解一下
showdown -s -t 60的意思是60秒后关机
showdown -a的意思是取消关机
当然还有很多命令我们这里附上一个链接,希望大家可以去这里面都自己学习一下这个命令。
showdown的命令拓展
总结
本节主要讲述了,三大循环,以及goto循环的一些应用。如果对你有帮助的话,不要忘记点赞加关注哦。