“调用自定义函数求1000以内的素数”为何输出结果都是997?

来源:百度知道 编辑:UC知道 时间:2024/09/22 18:32:16
#include "stdio.h"

main()
{
int j;
for(j=1;j<=1000;j++)
sushu(j);
}
int sushu (int j)
{
int i;
for(i=2;i<j;i++)
{ if (j%i==0) break;
else printf("%d\n",j); }
return(j);

}

不是输出结果都是997,是因为你的输出是在for语句里面输出的,执行的时候每个素数都输出了j-3次,输出多了把屏幕占满,所以你以为输出都是997
你应该把输出放到for语句外
还有就是你既然在sushu()这个函数输出素数就没必要把sushu定义为int类型并且返回j了吧
我给你改了的程序如下,慢慢体会
#include "stdio.h"
void sushu (int j)
{
int i,flag=0;
for(i=2;i<j;i++)
{
if (j%i==0)
flag=1;
}
if(!flag)
printf("%d\n",j);

}
main()
{
int j;
for(j=2;j<=1000;j++) //1不是素数,所以从2开始
sushu(j);
}

自定义函数写错了 稍作修改 内容如下(测过,准确无误)
#include "Stdio.h"
#include "Conio.h"

main()
{
int j;
for(j=1;j<=1000;j++)
if(sushu(j))
printf("%d\t",sushu(j));
}
int sushu (int j)
{
int i;
for(i=2;i<j;i++)
{ if (j%i==0)
{
return 0;

}
}
return(j);

}

//祝你学习进步

你那个输出应该放在主函数里面吧。不应该放在子函数里面。
且应该把那个for循环的后面那个大括号放在retur