活动设计题
请编写函数fun,它的功能是求出能整除形参x且不是偶数的所有整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为35,则有4个数符合要求,它们是:1、5、7、35。
注意:部分源程序存放在文件PROG1.c中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。
给定源程序如下:
#include <stdio.h>
void fun ( int x, int pp[], int *n )
{
}
main( )
{ int x, aa[1000], n, i ;void NONO ();
printf( '\nPlease enter an integer number:\n' ) ; scanf('%d', &x) ;
fun(x, aa, &n ) ;
for( i = 0 ; i < n ; i++ )
printf('%d ', aa[i]) ;
printf('\n') ;
NONO( ) ;
}
void NONO ()
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int x, aa[1000], n, i, j ;
FILE *fp ;
fp = fopen('..\\out.dat','w') ;
for(j = 0 ; j < 10 ; j++) {
x = 30 + j ;
fun(x, aa, &n) ;
for(i = 0 ; i < n ; i++) fprintf(fp, '%d ', aa[i]) ;
fprintf(fp, '\n') ;
}
fclose(fp) ;
}
【正确答案】void fun(int x,int pp[],int *n) { int i,j=0; for(i=1;i<=x;i=i+2)l /*i的初始值为1,步长为2,确保i为奇数*/ if(x%i==0) /*等能整除x的数存入数组pp中*/ pp[j++]=i; *n=j; /*传回满足条件的数的个数*/ } 答案考生文件夹
【答案解析】本题考查偶数的判定方法;整除的实现。题干要求能整除x且不是偶数的所有整数。故可设置循环语句中变量i从1开始且每次增2,所以i始终是奇数。在前面已经讲过多次整除的方法,这里就不再赘述了。