这程序哪错了??大家帮忙看看!

来源:百度知道 编辑:UC知道 时间:2024/05/27 19:42:02
题目是:请编写一个函数,该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中,例如,若输入17,5,则应输出19,23,29,31,37。

我是这样写的:
void fun(int m, int k, int xx[])
{
int a,j,f,y=0,i=0;
for(a=m+1;y<=k;a++)
{ for(j=2;j<=sqrt(a);j++)
{
if(a%j==0)
break;}
if(j>sqrt(a))f=1;
else f=0;
if(f==1)
{xx[i]=a;
i++;
y++;}
}
但是有错误啊,敲不出答案,
到底哪错了啊,分不多,只想求个答案,麻烦高手告诉下,谢谢了!
不是}的问题啊,我加了}也是错的呀

首先输入参数int xx[]换成int* xx
第一个for条件y<=k修改成y<k,否则会数组越界,数组下标从0开始的,其实y是多余的,只要有i就可以了,条件修改成i<k

下面是代码
void fun(int m, int k, int* xx)
{
int a,j,f,i=0;
for(a=m+1;i<=k;a++)
{
for(j=2;j<=sqrt(a);j++)
{
if(a%j==0)
{
break;
}
}
if(j>sqrt(a))
{
f=1;
}
else
{
f=0;
}
if(f==1)
{
xx[i]=a;
i++;
}
}
}

函数最后 缺一个 }
再写一个主函数,比如:
main()
{
int x[6],i;
fun(17,5,x);
for(i=0;i<5;i++)
printf("%3d",x[i]);
}