问答题
1. 编写函数int proc(int lim,int aa[M]),该函数的功能是:求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数。
例如,若输入12时,则输出“2 3 5 7 11”。
注意:部分源程序如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#define M 100
int proc(int lim,int aa[M])
{
}
void main()
{
int limit,i,sum;
int arr[M];
system("CLS");
printf("输入一个整数");
scanf("%d",&limit);
sum=proc(1imit,arr);
for(i=0;i<sum;i++)
{
if(i%10==0&&i!=0) //每行输出10个数
printf("\n");
printf("%5d",arr[i]);
}
}
【正确答案】int proc(int lim,int aa[M])
{
int i,j,k=0;
for(i=2;i<=lim;i++) //小于或等于lim的数
{ for(j=2;j<=i;j++) //判断其是否为素数
if(i%j==0)break;
if(j>=i)
aa[k++]=i; //如果是,则把其放到数组aa中
}
return k; //最后把数组的长度返回给主函数
}
【答案解析】 首先,判断小于等于整数lim的所有整数是否为素数;然后,将一个素数放入数组aa中;最后,将素数的个数返回给主函数。