问答题
编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。
例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
void fun(int m,int *k,int xx[])
{
}
void main()
{
int m,n,zz[100];
system("CLS");
printf("/nPlease enter an integer number between 10 and 100:");
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]);
}
【正确答案】
【答案解析】void fun(int m,int *k,int xx[])
{
int i,j,n=0;
for(i=4;i<m;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之间的每个数,判断语句用来判断该数是否为素数,若不是素数,则将其存入数组中。本题是考查一个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。