73.函数ReadDat()实现从文件IN.dat中读取1000个十进制整数到数组xx中;请编写函数Compute()分别计算出数组xx中奇数的个数odd、偶数的个数even,以及所有数的平均值aver和方差totfc的值。最后调用函数WriteDat(),把结果输出到OUT.dat文件中。
计算方差的公式如下:
原始数据文件存放的格式是:每行存放10个数(每个数均大于0且小于等于2000),并用逗号隔开。
【答案】
void Compute(void)
{ int i;
for (i=0; i<1000; i++)
{ if (xx[i]%2)
odd++;
else
even++;
aver = aver+xx[i];
}
aver /= MAX;
for (i=0; i<1000; i++)
totfc += (xx[i]-aver)*(xx[i]-aver)/MAX;
}
74.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。其中:金额=单价×数量。函数Rdata()是读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中。最后调用函数Wdata(),把结果输出到OUT.dat文件中。
void SortDat()
{ int i, j;
PRO xy;
for (i=0; i<99; i++)
for (j=i+1; j<100; j++)
if (sell[i].sum > sell[j].sum)
{ xy = sell[i];
sell[i] = sell[j];
sell[j] = xy;
}
else if (sell[i].sum == sell[j].sum)
{ if (strcmp(sell[i].code, sell[j].code) > 0)
{ xy = sell[i];
sell[i] = sell[j];
sell[j] = xy;
}
}
}
75.已知数据文件IN.dat中存有200个四位数,并已调用读函数RData()把这些数存入数组a中,请编写函数cgVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以后的5个数且该数是奇数,则统计出满足此条件的个数count并把些四位数按从小到大的顺序存入数组b中。最后调用写函数WData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。
程序中已定义数组a[200]、b[200],已定义计数变量count。
【答案】
void cgVal()
{ int i, j, flag = 0;
int k;
for (i=0; i { for (j=i+1; j<=i+5; j++) if (a[i] > a[j]) { flag = 1; } else { flag = 0; break; } if (flag==1 && a[i]%2) { b[count] = a[i]; count++; } } for (i=0; i for (j=i+1; j if (b[i] > b[j]) { k = b[i]; b[i] = b[j]; b[j] = k; } }