随笔 - 31  文章 - 0  评论 - 0  阅读 - 3251

多重循环

如何输出100以内的素数

之前,我们写出了判断这个数值是不是素数的代码

#include <stdio.h>
int main () {
int num, isPrime;
scanf("%d",&num);
for (int i = 2; i <= num/2; i++) {
if(num % i == 0) {
isPrime = 0;
}
}
if(isPrime == 0){
printf("%d不是素数",num);
} else {
printf("%d是素数",num);
}
return 0;
}

现在,我们可以将其改一下。
用for试试水。

#include <stdio.h>
int main () {
int isPrime;
for(int j =1; j <= 100; j++) {
isPrime = 1;
for (int i = 2; i <= j/2; i++) {
if(j % i == 0) {
isPrime = 0;
break;
}
}
if(isPrime != 0){
printf("%d ",j);
}
}
printf("\n");
return 0;
}

用while看看

#include <stdio.h>
int main () {
int isPrime;
int j =1;
while(j <= 100) {
isPrime = 1;
for (int i = 2; i <= j/2; i++) {
if(j % i == 0) {
isPrime = 0;
break;
}
}
if(isPrime != 0){
printf("%d ",j);
}
j++;
}
printf("\n");
return 0;
}

结果都是

1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

其实,还有一个点:一个循环有一个循环的控制变量,不要串用。
由上可知,我们可以想象得到,如果要用到枚举或者是其他多级的循环的,可以想到多重循环。
但是,要记住break;只能跳出其所在的最内层循环
那怎样才能跳出所有的循环?
老方法,先声明一个exit变量,然后 判断exit是否等于1

int main() {
int exit = 0;
for ( int i = 1; i < 10; i++ ) {
for (int j = 1; j < 10; j++) {
for (int k = 1; k < 10; k++) {
exit = 1;
break;
}
if (exit == 1) {
break;
}
}
if(exit == 1) {
break;
}
}
}

这只是传统方法,还有一个办法——用goto
看操作

int main() {
for ( int i = 1; i < 10; i++ ) {
for (int j = 1; j < 10; j++) {
for (int k = 1; k < 10; k++) {
printf("1");
goto out;
}
}
}
out:
printf("out");
return 0;
}

结果,一下子,只打印了一次1out
跳出的地方声明。
由最内层跳最外层用goto

posted on   Mryan2005  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示