1、国家三级(网络技术)机试模拟试卷 196及答案与解析 一、程序设计题 1 文件 IN.DAT中存有 N个实数 (N #include #define MAX 200 float inBufMAX=0; int N=0; double aver=0 0; double sumint=0 0; double sumdec=0 0; int ReadData(); void WriteData(); void calculate() void main() system(“CLS“); if(ReadData() printf(“数据文件 IN DAT不能打开 ! 007 n“); return;
2、calculate(); printf(“real amount= d n“, N); printf(“average= 21f n“, aver); printf(“int= 21f n“, sumint); printf(“dec= 21f n“, sumdec); WriteData(); int ReadData() FILE*fp; if(fp=fopen(“IN DAT“, “r“)=NULL) return 1; while(!feof(fp) fscanf(fp, “ f“, &inBufN); if(inBufN0 000001)N+; fclose(fp); return
3、0; void WriteData() FILE*fp; fp=fopen(“OUT DAT“, “w“); fprintf(fp, “real= d naverage=“ 2If nint= 21f ndec= 21f n“, N,aver, sumint, sumdec); fclose(fp); 国家三级(网络技术)机试模拟试卷 196答案与解析 一、程序设计题 1 【正确答案】 void caJcuJate() int INT, i; float DEC; for(i=0; iN; i+) 对 N个数进行循环扫描 aver*i得到的是前 i个值的总和 aver=(avet。 *i+inBufi) (i+1); INT=(int)inBufi; 进行强制类型转换可得到整数部分 DEC=inBufi-INT; 实数减去整数部分得到的是小数部分 sumint+=INT; 计算整数部分总和 sumdec+=DEC; 计算小数部分总和 【试题解析】 本题可以看做是将一个实数进行整数部分和小数部分进行分开的数位分解。将浮 点型数进行数据类型转换强制转换成整型数据,这样便可以得到一个实数的整数部分。用实数再减去整数部分,便可以得到小数部分。