2006年9月全国等级考试三级c语言上机题库(二十三)
文章作者 100test 发表时间 2007:03:10 19:12:20
来源 100Test.Com百考试题网
★题目23 (实数运算题)
已知在文件in.dat中存有N个(个数<200)实数,函数readdat()读取这N个实数并存入数组xx中。请编制函数calvalue(),其功能要求:
1、求出这N个实数的平均值aver;
2、分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数writedat()把所求的结果输出到文件out.dat中。
注意:部分源程序已给出。
请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。
#include
#include
#define MAXNUM 200
float xx[MAXNUM] .
int N= 0 . /* 文件IN.DAT中共有多少个实数 */
double aver=0.0./*平均值*/
double sumint=0.0./*整数部分之和*/
double sumdec=0.0./*小数部分之和*/
int ReadDat(void) .
void WriteDat(void) .
void CalValue(void)
{int i.
for (i=0.i
{sumint =(long)xx[i].
sumdec =xx[i]-(long)xx[i].
aver =xx[i].
}
aver/=N.
}
void main()
{ int i .
clrscr() .
for(i = 0 . i < MAXNUM . i ) xx[i] = 0 .
if(ReadDat()) {
printf("数据文件IN.DAT不能打开!\007\n") .
return .
}
Calvalue() .
printf("文件IN.DAT中共有实数=%d个\n", N) .
printf("平均值=%.2lf\n", aver) .
printf("整数部分之和=%.2lf\n", sumint) .
printf("小数部分之和=%.2lf\n", sumdec) .
WriteDat() .
system("pause").
}
int ReadDat(void)
{
FILE *fp .
int i = 0 .
if((fp = fopen("in.dat", "r")) == NULL) return 1 .
while(!feof(fp)) {
fscanf(fp, "%d,", &.xx[i ]) .
}
fclose(fp) .
return 0 .
}
void WriteDat(void)
{
FILE *fp .
fp = fopen("OUT.DAT", "w") .
fprintf(fp, "%.2lf\n%.2lf\n%.2lf\n", aver,sumint,sumdec) .
fclose(fp) .
}