㊙️小明博客主页:➡️ 敲键盘的小明 ㊙️
✅关注小明了解更多知识☝️
文章目录
前言
提示:本篇文章为C语言循环语句的个人总结,内容如若有误,请及时联系我更正。
- 转载请注明原创,谢谢。
提示:以下是本篇文章正文内容:
一、什么是循环语句?
我们都知道,选择语句主要用于根据特定条件,来选择执行不同的代码分支,例如判断奇偶,判断年龄等。
而循环语句主要用于实现重复执行一段代码的功能,例如计数、累计求和等。
所谓循环,其实就是重复地执行同一段代码,直到满足特定的条件。
二、while循环语句
注:C语言中:0表示假,非0表示真
1. 语句格式
whlie ( 判断表达式 )
{
循环语句 ;
}
过程:
若 while 后面的判断表达式为真,则程序会进入到 while 循环中循环语句,当执行完一次语句后,将会再次跳到 whlie ( 判断表达式 ) ,来判断表达式是不是为真,为真,则再一次进入while循环中执行语句。
2. while语句的使用方法
在屏幕上依次打印1~10:
#include<stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
运行结果:
过程: 我们将 1 1 1 赋值给 i i i ,在执行循环语句判断表达式时, 1 1 1 确实是小于 10 10 10 ,用于判断的表达式为真,则执行了printf在屏幕上打印了: 1 1 1 ;然后 i i i ++ 变为了 2 2 2 ,再次进行循环语句判断表达式的判断, 2 2 2 是小于 10 10 10 ,则在屏幕上打印了 2 2 2 ,依次往复在 i i i <= 10 10 10 之前,会依次打印:1 2 3 4 5 6 7 8 9 10,然后 i i i ++ 变为了 11 11 11 ,此时的判断表达式不成立,则终止并退出了循环。
3. while循环中的break
w h i l e while while 循环中,当满足一定条件时,循环会提前结束。 b r e a k break break 语句就是用来实现这个功能的。
当程序执行到 break 语句时,会立即跳出当前循环,不再执行循环体内的后续代码。
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5) //i等于5时直接跳出循环
{
break;
}
printf("%d ", i);
i++;
}
return 0;
}
运行结果:
过程: 在本代码的结果是屏幕上依次打印出:1 2 3 4
前 4 4 4 次循环都满足条件,在屏幕上依次打印出:1 2 3 4 后,当 i i i++ 后 i = 5 i=5 i=5 时, i f if if 语句的判断表达式成立,程序进入 i f if if 语句的执行语句中,执行了 b r e a k break break 语句,跳出了 w h i l e while while 循环,程序结束。
4. while循环中的continue
既然我们了解到了 b r e a k break break 在循环语句中的作用,那么我们再来了解一下与 b r e a k break break 作用很相似的 c o n t i n u e continue continue 在循环中的作用:
当程序执行到 continue 语句时,会跳出本层本次循环,不再执行循环体内的后续代码,转而执行下一次循环。
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
{
continue;
}
printf("%d ", i);
i++;
}
return 0;
}
运行结果:
本段代码的运行结果也同样是在屏幕上打印了:1 2 3 4
过程: 本段代码在打印完 1 2 3 4 后便进入了死循环。因为当 i = 5 i = 5 i=5 后,下面的 p r i n t f printf printf 语句和 i i i++ 的语句是不执行的,然后会来到 w h i l e while while 的判断部分,此时的 i i i 是没有变的,还是 5 5 5 ,所以程序又会跳过下面的语句再次进行判断, i i i 一直等于 5 5 5 ,就一直这样 死循环 。
让我们再来看一段代码:
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
i++;
if(i == 5)
{
continue;
}
printf("%d ", i);
}
return 0;
}
运行结果:
本段代码的运行结果在屏幕上打印了:2 3 4 6 7 8 9 10 11
过程:
本段代码的运行过程为:由于 i i i++ 被我们移到了前面,所以在进入循环后先执行了 i i i++ ,此时 i i i 变为了 2 2 2 ,然后依次打印了 3 3 3 4 4 4之后,当 i = 5 i = 5 i=5时,执行了 c o n t i n u e continue continue 跳出了本次循环,然后再次进入循环执行 i i i++ 变为 6 6 6 ,然后依次打印了 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 直到程序结束,一共在屏幕上输出了从 2 2 2 开始、除 5 5 5 之外的其他 9 9 9 位数:2 3 4 6 7 8 9 10 11
三、for循环语句
1. 语句格式
for ( 初始化循环变量 ; 循环条件 ; 变量更迭 )
{
循环语句 ;
}
过程:
先初始化循环变量,然后判断循环条件是否为真,若为真则程序执行循环体语句并进行变量更迭,然后再一次判断循环条件是否为真,若为真则会再一次执行循环体语句并继续进行变量更迭,直到判断循环条件为假,则退出循环结构。
2. for语句使用方法
让我用for循环语句也来在屏幕上依次打印1~10:
#include<stdio.h>
int main()
{
int i = 0;
for(i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
运行结果:
本段代码是在屏幕上依次打印:1 2 3 4 5 6 7 8 9 10
过程: 我们先初始化 i i i ,然后判断循环条件, 1 1 1 确实是小于 10 10 10 ,循环条件为真,则执行了printf在屏幕上打印了: 1 1 1 ;然后执行变量的更迭 i i i ++ 变为了 2 2 2 ,再次进行循环条件的判断, 2 2 2 是小于 10 10 10 ,则在屏幕上打印了 2 2 2 ,依次往复在 i i i <= 10 10 10 之前,会依次打印:1 2 3 4 5 6 7 8 9 10,然后 i i i ++ 变为了 11 11 11 ,此时的判断表达式不成立,则终止并退出了循环。
3. for循环中的break
在 C 语言中, f o r for for 语句中的 b r e a k break break 作用也同样是跳出 f o r for for 语句。
当程序执行到 break 语句时,会立即跳出当前循环,不再执行循环体内的后续代码。
例如:
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
break;
}
printf("%d ", i);
}
return 0;
}
运行结果:
本段代码是在屏幕上依次打印:1 2 3 4
过程: 在本代码中,前 4 4 4 次循环都满足条件,在屏幕上依次打印出:1 2 3 4 后,当 i i i++ 后 i = 5 i=5 i=5 时, i f if if 语句的判断表达式成立,程序进入 i f if if 语句的执行语句中,执行了 b r e a k break break 语句,跳出了 f o r for for 循环,程序结束。
4. while循环中的continue
当程序执行到 continue 语句时,会跳出本层本次循环,不再执行循环体内的后续代码,转而执行下一次循环。
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
continue;
}
printf("%d ", i);
}
return 0;
}
运行结果:
本段代码是在屏幕上打印:1 2 3 4 6 7 8 9 10
过程:
但是,本段代码与 w h i l e while while 不同,在打印完 1 2 3 4 后 不会进入死循环。因为当 i = 5 i = 5 i=5 后,只有下面的一条 p r i n t f printf printf 语句是不执行的,然后再到 f o r for for 的变量更迭,此时的 i i i ++ 后变为了 6 6 6 ,然后继续依次打印 6 7 8 9 10
5. 一些for循环的变种
在C语言的循环语句中,初始化、判断、变量调整这三个部分都是可以省略的,但是,判断部分如果省略了,判断部分会恒为真。
#include <stdio.h>
int main()
{
int ret = 1;
for (;;)
{
printf("%d: hehe\n",ret);
ret++;
}
return 0;
}
运行结果:
四、do…while语句
1. do while循环中
do {
循环语句 ;
}( 判断表达式 )
过程:
d o … w h i l e do…while do…while循环是先执行一遍语句,再进行判断,它和while语句的区别就是: d o … w h i l e do…while do…while 至少 执行一次循环内的语句,而 w h i l e while while有可能会因为先判断后执行循环体导致循环一次都不进行。
五、while循环和for循环的区别
f o r for for循环可以实现 w h i l e while while循环的功能, w h i l e while while循环也可以实现 f o r for for循环的功能,没有那个更好的说法,要看应用场景。
for循环更合适事先知道循环总次数的场景,一般与计数器或数组结合一起使用。
while循环更合适事先不知道循环总次数的场景,以达到某个目标为目,例如选秀,报名有多少人没关系,已选够10位或没人可选作为循环的结束。
六、例题
✅练习一:
求1~100的累计和
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
for(i = 1; i <= 100; i++)
{
sum += i;
}
printf("sum=%d\n",sum);
return 0;
}
运行结果:
✅练习二:
求
n
n
n 的阶乘
例:5! = 1×2×3×4×5 = 120
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
int ret = 1;
for (i = 1; i <= n; i++)
{
ret *= i;
}
printf("%d\n", ret);
return 0;
}
运行结果:
✅练习三:
数一下 1 ~ 100 的所有整数中出现多少个数字 9
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1; i <= 100; i++)
{
if (i % 10 == 9)
{
printf("%d ", i);
count++;
}
if (i / 10 == 9)
{
printf("%d ", i);
count++;
}
}
printf("\n");
printf("共%d个\n", count);
return 0;
}
运行结果:
七、goto语句
goto 语句是一种无条件跳转语句,它用于在程序中实现立即跳转到指定的标签所在的位置。
goto 语句通常与 if 语句、循环结构等配合使用,以实现复杂的逻辑控制。但是,需要注意的是,滥用 goto 语句可能导致程序逻辑混乱,难以维护。
因此,在编写程序时,应尽量避免过度使用 goto 语句,尤其是在复杂的逻辑控制中。可以考虑使用其他控制结构(如 if-else 语句、switch 语句等)替代 goto 语句。
但是特殊场合下goto语句还是用得着的,比如终止某些深度嵌套。多层循环这种情况使用break只能从最内层循环退出到上一层的循环。
完结
好啦,阅读到这里就已经看完了本期博客的全部内容了