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

}
void main()
{
int m, n, str[100];
system("CLS");
printf("/nPlease enter an integer number between 10 and 100: ");
scanf("%d", &n);
proc(n, &m, str);
printf("/n/nThere are %d non-prime
numbers less than%d: ", m, n);
for(n=0; n<m; n++)
printf("/n%4d", str[n]);
}
【正确答案】
【答案解析】void proc(int m, int*k, int xx[])
{
int i, j, n=0;
for(i=4; i<m; i++)
{ for(j=2; j<i; j++) //判断其是否为素数
if(i%j==0)break;
if(j<i)x x[n++]=i; //所有大于1小于整数m的非素数存入xx所指数组中
}
*k=n; //非素数的个数通过k传回
} [解析] 题目中要求将所有大于1小于整数m的非素数存入xx所指数组中,因此需要判断所有大于1小于m的整数是否为素数。将所有大于1小于m的非素数放入数组xx中,并将非素数的个数通过形参k传递回主函数中。