 | 题目1 请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。 最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。 部分源程序存在文件prog1.c中。 例如:若输入17 5 则应输出:19,23,29,31,37. 请勿改动主函数main()和写函数writeDat()的内容。 #include #include void readwriteDat(); int isP(int m) { int i; for(i=2;i if(m % i==0)return 0; return 1; } void num(int m,int k,int xx[]) { int s=0; for(m=m+1;k>0;m++) if(isP(m)) { xx[s++]=m; k--;} } main() { int m,n,xx[1000]; clrscr(); printf(“nPlease enter two integers:”); scanf(“%d%d”,;m,;n); num(m,n,xx); for(m=0;m printf(“%d ”,xx[m]); printf(“n”); readwriteDat(); } void readwriteDat() { 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,“n”); } fclose(rf); fclose(wf); } #include void jsValue(int m,int k,int xx[]) { int i,j,s=0; for(i=m+1;k>0;i++) { for(j=2;j if(i%j==0) break; if(i==j) { xx[s++]=i; k--;} } } main() { int m,n,zz[100]; printf(“n请输入两个整数:”); scanf(“%d%d”,;m,;n); jsValue(m,n,zz); for(m=0;m printf(“n”); writeDat(); } writeDat() { int m,n,zz[100],i; FILE *in,*out; in=fopen(“in.dat”,“r”); out=fopen(“out.dat”,“w”); for(i=0;i<10;i++){ fscanf(in,“%d%d”,;m,;n); jsValue(m,n,zz); for(m=0;m fprintf(out,“n”); } fclose(in); fclose(out); } 另一解法: void num(int m,int k,int xx[]) { int n=0,data=m+1; while(n if(isP(data)) xx[n++]=data; data++;} }
| |