嵌套的循环

嵌套循环

* 以输出0-100之间的素数为例:

#include<stdio.h>

int main(){
int x;
int isprime=1;
for(x=2;x<100;x++){
int i;
int isprime=1;
for(i=2;i<x;i++){
if(x%i= =0){
isprime=0;
break;
}
}
if(isprime==1){
printf("%d ",x);
}
}
printf("\n");
return 0;

}

}
其中应用了for的循环嵌套,同理也可以根据情况应用不同类型的嵌套;

注意:在循环嵌套中,内外几重循环所控制的变量应该是不一样的,变量相同会造成混淆。

2)将题目条件改变,进行前五十位素数的输出:

#include<stdio.h>

int main(){
int x=2;
int isprime=1;
int cnt=0;

在此处引入的变量cnt意味计数器,cnt常应用于已知确切输出结果个数的情况,例如此题中要求的前50位素数。

// for(x=2;x<100;x++)
while(cnt<50)

此处使用while循环而不是for循环,原因是for循环常用于循环次数已知的情况下,而此题目中仅明确了输出结果的个数,结合cnt变量的引入,我们可以将for循环转换为while循环,循环的条件为cnt<50,与题目要求对应。

{
int i;
int isprime=1;
for(i=2;i<x;i++){
if(x%i= =0){
isprime=0;
break;
}
}
if(isprime==1){
printf("%d ",x);
cnt++;

此处在循环语句中加入变量cnt,记录进入循环后cnt的变化情况,即每找到一个素数,控制计数次数加一,直到计数器达到需要的目标,跳出循环。

		}
	x++;

在此处对for循环语句中循环继续的条件进行补充,使x的值逐渐递增。

}
printf("\n");
return 0;

}

3)同样我们可以再次进行第三次调整,针对变量cnt的引入,实现while语句与for语句相互转化

#include<stdio.h>

int main(){
int x=2;
int isprime=1;
int cnt=0;
——1 // for(x=2;x<100;x++)
——2 // while(cnt<50)
——3for(x=2,cnt<50;x++)

1. 在此处应用的思想是while语句与for语句的转化,根据题目要求我们可确定for语句中对应的三个语句,不同于一次调整时x<100的条件,此处结合对素数输出位数的分析,得出循环继续运行的条件为cnt<50;

2. 而此处for对应的循环每轮的动作x++,与下方二次调整时加入的x++进行了照应,根据for循环特点将x++删去

{
int i;
int isprime=1;
for(i=2;i<x;i++){
if(x%i= =0){
isprime=0;
break;
}
}
if(isprime==1){
printf("%d ",x);
cnt++;
}
——3 // x++;
}
printf("\n");
return 0;

}

posted @   瑜阳  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示