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

请补充程序,使得程序能实现以下功能:

从文件IN.dat中读取200个整数至数组number中,求出奇数的个数cnt1和偶数的个数cnt2以及数组number下标为偶数的元素值的算术平均值ave(保留2位小数)。把结果cnt1cnt2ave输出到OUT.dat中。

注意:部分程序、读数据函数read_dat(int number[200])及输出格式已给出。

#include <conio.h>

#include <stdio.h>

#define N 200

void read_dat(int number[N])

{    int  i, j;

      FILE  *fp;

      fp = fopen("IN.dat", "r");

      for (i=0; i<20; i++)

      {       for (j=0; j<10; j++)

                {       fscanf(fp, "%d,", &number[i*10+j]);

                         printf("%d ", number[i*10+j]);

                }

                printf("\n");

      }

      fclose(fp);

}

void main()

{    int  i;

      int  cnt1, cnt2, number[N];

      long  j = 0;

      float  ave;

      FILE  *fw;

      fw = fopen("OUT.dat", "w");

      read_dat(number);

      /**************************************/

 

      /**************************************/

      printf("\n\ncnt1=%d,cnt2=%d,ave=%6.2f\n", cnt1, cnt2, ave);

      fprintf(fw, "%d\n%d\n%6.2f\n", cnt1, cnt2, ave);

      fclose(fw);

}

试题答案及详解

【审题分析】分析题目可知,本题程序要实现的功能是:从文件IN.dat中读取200个整数至数组number中,求出奇数的个数cnt1和偶数的个数cnt2以及数组number下标为偶数的元素值的算术平均值ave(保留2位小数),而读取数据的程序题中已经给出。因此只要编写求出数组中奇数的个数和偶数的个数,以及下标为偶数的所有元素的平均值即可。

【解题思路】在for循环语句中,对数组number中的每一个元素进行对2求余数,如果余数等于1,则数组元素number[i]是奇数,奇数的个数变量cnt11,否则偶数的个数变量cnt21。如果数组number下标变量i能被2整除,则把数组元数number[i]与变量j相加。退出循环后变量j的值除以(N/2)得到数组number下标为偶数的元素值的算术平均值,再转换成单精度实数赋给变量ave

【参考答案】

for (i=0, j=0, cnt1=0, cnt2=0; i<N; i++)

{   if (number[i]%2)

            cnt1++;

     else

            cnt2++;

     if (i%2 == 0)

            j += number[i];

}

ave = (float)j/(N/2);

【易错分析】在进行求算术平均值的时候,要把求的结果值转化成单精度型数据。

【考点链接】求余运算、数据类型的转换。

责任编辑:小草

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