问题 问答题

编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。
注意:部分源程序给出如下。
请勿改动主函数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 % d non-
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 i,j,n=0;

for(i=D;i<m;i++) /*找出大于A小于整数m的非素数*/

{ for(j=B;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不是素数*/

……

此语句需要熟记,很多判断素数的题目也可通过此法解决。

单项选择题
问答题 简答题