调用函数rwdata(),从in.dat文件中读取10组数据(m和k),并嵌套调用primenum函数分别得出array[]数组。请编写primenum(int m,int k,int array[]),该函数的功能是;将紧靠m的k个素数存人数组array

admin2012-07-20  24

问题 调用函数rwdata(),从in.dat文件中读取10组数据(m和k),并嵌套调用primenum函数分别得出array[]数组。请编写primenum(int m,int k,int array[]),该函数的功能是;将紧靠m的k个素数存人数组array并在屏幕上显示。最后把结果输出到文件out.dat中。
例如,若输入3 9则对应输出5 7 11 1 3 1 7 1 9 23 29 31。
注意;部分程序已经给出,请勿改动主函数main()和输出数据函数rwdata()的内容。
试题程序;   
#include
#include
void rwdata();
void primenum(int m,int k,int array[])
{
}
main()  
{
  int m,n,array[1000];
  printf("\Please enter two integers;");
  scanf("%d%d",&m,&n);
  primenum(m,n,array);
  for(m=0;m  printf("%d",array[m]);
  printf("n");
  rwdata();
}
void rwdata()
{
  int m,n,array[1000],i;
  FILE*readfile,*writefile;
  readfile=fopen("in.dat","r");
  writefile=fopen("out.dat","w");
  for(i=0;i<10;i++)
  {
fscanf(readfile,"%d%d",&m,&n);
    primenum(m,n,array);
    for(m=0;m   fprintf(writefile,"%d",array[m]);
    fprintf(writefile,"\n");
    }
  fclose(readfile);
  fclose(writefile);
  }
}

选项

答案 void primenum(int m,int k,int array[]) { int value=m+1; int half,n=0,i; while(1) { half=value/2; for(i=2;i<=half;i++) if(value%i==0) break; if(i>half) { arrau[n]=value; n++; } if(n>=k) break; value++; } }

解析 本题主要考查素数判断的问题,本程序的算法是;1.先定义变量value,将m之后的数逐个赋值给该变量;2.若此数不能被2~value/2整除,则为素数,将值赋给array[n],然后n++;
转载请注明原文地址:https://kaotiyun.com/show/u24Z777K
0

最新回复(0)