嵌套的循环
嵌套循环
* 以输出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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程