问题 问答题

试题要求如图10.1所示。

部分源程序内容如下:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define MAX 1000

int xx[MAX], odd=0, even=0;

double aver=0.0, totfc=0.0;

void WriteDat(void);

int ReadDat(void)

FILE *fp;

int i;

if((fp=fopen("K:\\k06\\35010001\\IN.DAT", "r"))==NULL) return 1;

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

fscanf(fp, "%d, ", &xx[i]);

fclose(fp);

return 0;

void Compute(void)

void main()

int i;

for(i=0; i<MAX; i++)xx[i]=0;

if(ReadDat())

printf("数据文件 IN.DAT 不能打开!\007\n");

return;

Compute();

printf("ODD=%d\nEVEN=%d\nAVER=%lf\nTOTFC=%lf\n", odd, even, aver, totfc);

WriteDat();

void WriteDat(void)

FILE *fp;

int i;

fp=fopen("K:\\k06\\35010001\\OUT.DAT", "w");

fprintf(fp, "%d\n%d\n%lf\n%lf\n", odd, even, aver, totfc);

fclose(fp);

答案

参考答案:

void Compute(void)

{

int 1;

for(i=0; i<MAX; i++){

if(xx[i]%2==0)even++;

else odd++;

aver=aver+xx[i];

aver=aver/MAX;

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

totfc=totfc+(xx[i]-aver) *(xx[i]-aver);

totfc=totfc/MAX;

}

解析:

此题要计算1000个数的奇数个数、偶数个数、平均数和方差的值,关键就是奇偶数的判定xx[i]%2==O和for循环的使用。因为totfc要用到aver的值,因此要先计算完aver才能计算totfc。

单项选择题
单项选择题 A3/A4型题