循环结构设计
求100--200之间的素数,并以每行10个数的格式输出,哪位好心人帮忙看一下,我是哪里错了?#include <stdio.h>
#include <math.h>
void main()
{
int n,k,i,m;
for(n=100;n<=200;n++)
{ m=0;
k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n%i==0)
{
break;
}
}
if(i>k)
{
printf("%5d",n);
m++;
if(m%10==0)
{
printf("\n");
}
}
}
}
#include <stdio.h>
#include <math.h>
int main()
{
int n, k, i, m;
for (n = 100; n <= 200; n++)
{
m = 0;
k = sqrt(n);
for (i = 2; i <= k; i++)
{
if (n % i == 0)
{
break;
}
}
if (i > k)
{
printf("%5d", n);
m++;
if (m % 10 == 0)
{
printf("\n");
}
}
}
return 0;
}
你想利用m去实现换行,但m每次循环都被你定义为0,永远不可能到达10
#include <stdio.h>
#include <math.h>
int main()
{
int n,k,i,m;
int cnt = 0;
for(n=100; n<=200; n++)
{
m=0;
k=sqrt(n);
for(i=2; i<=k; i++)
{
if(n%i==0)
{
break;
}
}
if(i>k)
{
printf("%5d",n);
cnt++;// m每次循环都定义为0,不可能等于10
if(cnt%10==0)
{
printf("\n");
}
}
}
return 0;
} 直接把for循环内的 m = 0拿到循环外就可以了。
在循环内的话,每次循环m都被赋值为0,不可能有m%10==0的情况
#include <stdio.h>
#include <math.h>
int main()
{
int n, k, i, m;
m = 0;//就是这一行,从for循环内拿出来就可以了
for (n = 100; n <= 200; n++)
{
k = sqrt(n);
for (i = 2; i <= k; i++)
{
if (n % i == 0)
{
break;
}
}
if (i > k)
{
printf("%5d", n);
m++;
if (m % 10 == 0)
{
printf("\n");
}
}
}
return 0;
}
sunrise085 发表于 2020-8-28 08:30
直接把for循环内的 m = 0拿到循环外就可以了。
在循环内的话,每次循环m都被赋值为0,不可能有m%10==0 ...
#include <stdio.h>
#include <math.h>
void main()
{
int n,k,i,m;
m=o;
for(n=100;n<=200;n++)
{
k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n%i==0)
{
break;
}
}
if(i>k)
{
printf("%5d",n);
m++;
if(m%10==0)
{
printf("\n");
}
}
}请问我这个代码哪里有错误? 雨天Zz 发表于 2020-8-28 11:49
#include
#include
void main()
{:10_285:}{:10_285:}
for循环的上一行,m=o?为什么不是零而是o? sunrise085 发表于 2020-8-28 12:05
for循环的上一行,m=o?为什么不是零而是o?
好吧,我没注意,打错了,多谢指点 #include<stdio.h>
int main()
{
int i,j;
int k=2;
for(i=100;i<201;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)//每次循环让i对j取余;只有素数才会让j加到和i相等
break;//如果不是素数就会跳出循环执行i++,并打印此i
}
if(i==j)
printf("%d\n",i);
}
return 0;
}
页:
[1]