编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。 例如,若输入17,则应输出:46891012141516。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函

admin2016-09-03  18

问题 编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。
例如,若输入17,则应输出:46891012141516。
注意:部分源程序在文件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 between10and100:");
scanf("%d",&n);
fun(n,&m,zz);
printf("\n\nThere are%d non-prime 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[100];
FILE*rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
fscanf(rf,"%d",&n);
fun(n,&m,zz);
fprinff(wf,"%d、n%d\n",m,n);
for(n=0;n<m;n++)
fprintf(wf,"%d\n",zz[n]);
fclose(rf);
fclose(wf);
}

选项

答案void fun(int m,int*k,int xx[]) { int i,j,n=0; for(i=4;i<m;1;i++) /*找出大于1小于整数m的 非素数*/ {for(j=2;j<i;j++) if(i%j==0)break; if(j<i)xx[n++]=i; } *k=n;/*返回非素数的个数*/。

解析 本题考查:如何判断非素数;循环判断结构;数组的引用。
题目要求将1~m之间的非素数存入数组中,应使用循环判断结构。询环讲句用来遍历1~m之间的每个数,判断语句用来判断该数是否为素数,若不是素数,则将其存入数组中。这道题目是考查一个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决,判定一个数是否为素数,即该数除了能被1和它本身外,不能被任何数整除
代码实现为:
for(j=2;j<i;j++) if(i%j==0)/*如余数为0,证明i不是是素数*/
此语句需要熟记,很多判断素数的题目也可通过此法解决。
转载请注明原文地址:https://kaotiyun.com/show/t5ID777K
0

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