问答题 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返回给主函数。