问答题
1. 请编写函数proc(),其功能是:将所有大于1、小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。
例如,输入“20”,则应输出“4 6 8 9 10 12 14 15 16 18”。
注意:部分源程序如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stellib.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++)//N断其是否为素数
if(i%j==0)break;
if(j<i)xx[n++]=i; //所有大于1、小于整数m的非素数存入xx所指数组中
}
*k=n; //非素数的个数通过k传回
}
【答案解析】 题目要求将所有大干1、小于整数m的非素数存入xx所指数组中,因此,需要判断所有大于1、小于m的整数是否为素数。将所有大于1、小于m的非素数放入数组xx中,并将非素数的个数通过形参k返回给主函数。