活动设计题      请编写函数fun,它的功能是:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
    例如,若x中的值为:35,则有4个数符合要求,它们是:1,5,7,35。
    请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
    给定源程序:
    #include<stdio.h>
    void fun(int x, int pp[], int*n)
    {
    }
    main()
    {int x, aa[1000], n, i;
    printf('\Please enter an integer number:\n');
    scanf('%d', &x);
    fun(x, aa, &n);
    for(i=0; i<n; j++)
    printf('%d', aa[i]);
    printf('\n');
    }
 
【正确答案】void fun(int x, int pp[], int *n) { int i, j=0; for(i=1; i<=x; i=i+2)/*i的初始值为1,步长为2,确保i为奇数*/ if(x%i==0) /*将能整除x的数存入数组pp中*/ pp[j++]=i; *n=j; /*传回满足条件的数的个数*/ }
【答案解析】本题考查:偶数的判定方法;整除的实现。 本题题干信息是:能整除x且不是偶数的所有整数。循环语句中变量i从1开始且每次增2,所以i始终是奇数。整除的方法,在前面已经讲过多次,这里就不再赘述了。对于本题目要求的不是偶数的判定方法,即该数对2求余不为0。除以上方法外,还可以通过for循环语句直接把偶数筛出去,确保参与操作的数均为奇数。