计算机三级数据库技术上机考试试题四(附答案)
来源:优易学  2010-1-20 17:28:12   【优易学:中国教育考试门户网】   资料下载   IT书店

请编写函数countValue(),它的功能是:求出1~1000之内能被711整除但不能同时被711整除的所有整数,将它们放在数组a中,并通过n返回这些数的个数。主函数最后调用函数Wdata()把计算结果输出到OUT.dat中。

注意:部分源程序已经给出。请勿改动主函数main()和输出数据函数Wdata()的内容。

#include <conio.h>

#include <stdio.h>

void countValue(int *a, int *n)

{

 

}

void Wdata()

{    int  aa[1000], n, k;

      FILE  *fp;

      fp = fopen("out.dat", "w");

      countValue(aa, &n);

      for (k=0; k<n; k++)

                if ((k+1)%10 == 0)

                         fprintf(fp, "%5d\n", aa[k]);

                else

                         fprintf(fp, "%5d", aa[k]);

      fprintf(fp, "\n");

      fclose(fp);

}

main()

{    int  aa[1000], n, k;

      countValue(aa, &n);

      for (k=0; k<n; k++)

                if ((k+1)%10 == 0)

                         printf("%5d\n", aa[k]);

                else

                         printf("%5d", aa[k]);

      Wdata();

}

试题答案及详解

【审题分析】分析题目可知,本题只要实现countValue()函数的功能即可。countValue()要实现的功能是:求出11000之内能被711整除但不能同时被711整除的所有整数,将它们放在数组a中,并通过n返回这些数的个数。因此解答本题的关键在于如何将一个指定的关系转换为C语言表达式。

【解题思路】这里我们首先在for循环语句中当自变量i1递增到1000时,对每一个数进行i%7==0 && i%11i%7 && i%11==0的逻辑判断,如果其中一个表达式成立,则把数字i输入数组a中,整型指针变量n1,数组指针a向后移动一位。

【参考答案】

void countValue(int *a, int *n)

{   int  i;

     *n = 0;

     for (i=1; i<=1000; i++)

            if (i%7==0 && i%11)

            {     *a = i;

                   *n = *n+1;

                   a++;

            }

            else if (i%7 && i%11==0)

            {     *a = i;

                   *n = *n+1;

                   a++;

            }

}

【易错分析】能被711整除但不能同时被711整除的整数的条件为:i%7==0 && i%11i%7 && i%11==0,其一定成立即可。

【考点链接】求余运算、指针变量的应用。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训