请编写函数num(int m,int k,int xx[]),该函数的功能是;将大于整数m且与m相邻的k个素数存人数组XX中传回。最后调用readWriteData()从IN.DAT文件中读取10组数据,分别得出结果,且把结果输出到文件0UT.DAT中。

admin2012-07-20  44

问题 请编写函数num(int m,int k,int xx[]),该函数的功能是;将大于整数m且与m相邻的k个素数存人数组XX中传回。最后调用readWriteData()从IN.DAT文件中读取10组数据,分别得出结果,且把结果输出到文件0UT.DAT中。
例如;11 4,则应输出;13 17 19 23
注意;部分源程序已经给出。
请勿改动主函数mainData()和输出函数readWriteData()的内容。
试题程序;
#include
#include
void readWriteData();
void num(int m,int k,int xx[])
{
}
main()
{
  int m,n,xxElOOO];
  printf("\nPlease enter two integers;");
  scanf("% d%d",&m,&n);
  num(m,n,xx);
  for(m=0;m  printf("%d",xx[m]);
  printf("\n");
  readWriteData()
}
void readWriteData()
{
  int m,n,xx[1000],i;
  FILE*rf,*wf;
  rf=fopen("IN.DAT","r");
  wf=fopen("OUT.DAT","w");
  for(i=0;i<10;i++)
  {
  fscanf(rf,"%d%d",&m,&n);
num(m,n,xx);
  for(m=0;m  fprintf(wf,"%d",xx[m]);
  fprintf(wf,"\n");
  }
  fclose(rf);
  fclose(wf);
}

选项

答案 void num(int m,int k,int xx[]) { int data=m+1; //定义整形变量data,并赋初值m+1 int half,n=0,i; while(1)//判断data是否为素数 { half=data/2; for(i=2;i<=half;i++) if(data%i==0) break; if(i>half)//i>half说明i是素数 { xx[n]=data;//将d放人数组xx中 n++; //计数器加1 } if(n>=k) //如果找到了k个满足的素数,则跳出循环 break; data++; //继续找下一个素数 } }

解析 num()函数的功能是将大于整数m且符合与m相邻的k个素数,存入数组xx[]中。本题中,在找到符合的素数后,将data放入数组XX中,计数器此时加1。利用循环来找到符合条件的素数,然后跳出循环继续寻找下一个素数。
转载请注明原文地址:https://jikaoti.com/ti/a8R7FFFM
0

最新回复(0)