编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。 例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。 注意:部分源程序给出如下。 请勿改动主函数main和其他函

admin2017-09-23  25

问题 编写函数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%4 d",zz
[n]);
}

选项

答案void fun (int m, int *k,int xx []) { int i,j,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,证明1不是素数*/
此语句需要熟记,很多判断素数的题目可通过此法解决。
转载请注明原文地址:https://kaotiyun.com/show/ooxp777K
0

最新回复(0)