C语言第七弹---循环语句-循环的嵌套

时间:2024-02-01 22:04:53

前面学习了三种循环 while , do while , for ,这三种循环往往会嵌套在⼀起才能更好的解决问题,就是我们所说的:循环嵌套,这里我们就看⼀个例子。

5.1、练习

找出100~200之间的素数,并打印在屏幕上。
注:素数又称质数,只能被1和本身整除的数字。

5.2、题目解析:

1、 要从100 ~ 200之间找出素数,首先得有100~200之间的数,这里可以使用循环解决。
2、假设要判断i是否为素数,需要拿2 ~ i-1之间的数字去试除 i ,需要产生2 ~ i-1 之间的数字,也可以使用循环解决。
3、如果2 ~ i-1 之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

5.3、参考代码:

#include <stdio.h>
int main()
{
 int i = 0;
 //循环产⽣100~200的数字
 for(i=100; i<=200; i++)
 {
 //判断i是否为素数
 //循环产⽣2~i-1之间的数字
 int j = 0;
 int flag = 1;//假设i是素数
 for(j=2; j<i; j++)
 {
 if(i % j == 0)
 {
 flag = 0;
 break;
 }
 }
 if(flag == 1)//是素数则打印
 printf("%d ", i);
 }
 return 0;
}

此处为没有优化的代码,uu们可以自己思考如何优化喔~

6、goto语句

C语言提供了⼀种非常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。

例如:

#include <stdio.h>
int main()
{
 printf("hehe\n");
 goto next:
 printf("haha\n");
 
next:
 printf("跳过了haha的打印\n"); 
 return 0;
}

goto 语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们的建议是能不用尽量不去使用;但是 goto 语句也不是⼀无是处,在多层循环的代码中,如果想快速跳出使用goto 就非常的方便了。

for(...)
{
 for(...)
 {
 for(...)
 {
 if(disaster)
 goto error;
 }
 }
 }
error:
 //...

本来 for 循环想提前退出得使用break ,⼀个 break 只能跳出⼀层 for 循环,如果3层循环嵌套就得使用3个 break 才能跳出循环,所以在这种情况下我们使用goto 语句就会更加的快捷。