问答题 1.  编写函数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 % dnon - 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 ij, 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之间的每个数,判断语句用来判断该数是否为素数,若不是素数,则将其存入数组中。本题是考查一个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。
   判定一个数是否为素数,即判断该数是否除了能被1和它本身整除外,不能被任何数整除。
   代码实现如下:
   for(j=2;j<i;j++)
   if(i% j==0)    /*如果余数为0,证明i不是素数*/
   此语句需要熟记,很多判断素数的题目可通过此法解决。