在线等,这个C程序错 在哪里

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:22:07
#include <stdio.h>
#include <math.h>
void main()
{
int a,n=1,i,k;

for(a=101;a<=200;a++)
{ k=sqrt (a);
for (i=2;i<=k;i++)
if(a%i==0)break;
if (i>k)
{
printf("%5d",a);
n++;
}
if (n%5==0)printf("\n");
}

printf("\n");

}

我要数字一个个输出,不预其它数字的位置。
sqrt (a)的确是整型,没有错。

K这样定义没有问题
问题在于你写少了一个花括号在for (i=2;i<=k;i++) 后面,结果你的循环只是运行了if(a%i==0)break;这一句
所以要改为
for (i=2;i<=k;i++)
{
if(a%i==0)break;
if (i>k)
{
printf("%5d",a);
n++;
}
if (n%5==0)printf("\n");
}

}
printf("\n");

}

以后要小心了,初学经常会有这样的错的.

晕了,你的K定义为整形,sqrt(a)是float型

楼上的两位很正确嘛```以后先自己多看看``把能犯的错误都犯一遍之后你就可以没错误了``呵呵`

在做题时多注意条件,在嵌套选择和循环中,条件是范围决定你的输出。二楼的不错