请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。 例如,若输入:17,则应输出: 4 6 8 9 10 12 14 15 16。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函

admin2019-09-02  51

问题 请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
例如,若输入:17,则应输出:
4 6 8 9 10 12 14 15 16。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
void fun(int m,int*k,int xx[])
{

}
main()
{
  int m,n,zz[100];
  void NONO();
printf("\nPlease enter an integer number between 10 and 100:”);
  scanf("%d",&n);
  fun(n,&m,zz);
printf("\n\nfhere are%d nonprime numbers less than%d:",m,n);
    for(n=0;  n<m;  n++)
    printf("\n%4d",zz[n]);
  NONO();
}
void NONO()
{
/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件*/
  int m,n,zz[1 00];
  FTLE*rf,*wf;
  rf=fopen("in.dat","r");
  wf=fopen("out.dat","w");
  fscanf(rf,"%d",&n);
  fun(n,&m,zz);
fprintf(wf,  "%d\n%d\n",m,  n);
for(n=0;  n<m;  n++)
fprintf(wf,"%d\n",zz[n]);
  fclose(rf);
  fclose(wf);
}

选项

答案int i,j; int t=0; //初始化数组个数 for(i=2;i<m;i++) //循环判断小于n的数是否为素数 {j=2; while(j<i) {if(i%j==0) //如果i不是素数 (xx[t]=i; t++; break; } j++;} *k=t;}

解析 该程序功能是将所有大于1小于整数m的非素数存入xx所指数组中。求素数的常用方法是:从2到m-1去除m,如果中间的任何数被整除,则不是素数。
(1)根据求素数的方法判断数i是否为素数。
(2)把不是素数的数留下来,其方法是:如果该数是素数则不处理;如果不是素数则放到数组xx中,并且把数组的下标加1,为下一个不是素数的数放在数组中做准备。
(3)返回个数,把xx数组中已经写入的数的个数返回即可,即把数组xx的最大下标加1返回即可。
转载请注明原文地址:https://kaotiyun.com/show/rdRp777K
0

相关试题推荐
最新回复(0)