三级数据库技术-480
三级数据库技术 -480( 总分: 100.00 ,做题时间: 90 分钟 )一、 设计与应用题 (总题数: 1,分数: 100.00)1. 已知数据文件 in.dat 中存有 300 个四位数,并已调用读函数 readDat() 把这些数存入数组 a 中,请编制 一函数 jsValue() ,其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零 的个数 cnt ,再求出所有满足此条件的四位数平均值 pjz1 ,以及所有不满足此条件的四位数平均值 pjz2 最后 main() 函数调用写函数 writeDat() 把结果 cnt , pjz1 ,pjz2 输出到 out.dat 文件。例如:1239, 9-1-2-3 >0,则该数满足条件,参加计算平均值pjzl,且个数cnt=cnt+1 。8129, 9-8-1-2 V0,则该数不满足条件,参加计算平均值pjz2。程序中已定义数组: a300 ,己定义变量: cnt , pjz1 , pjz2 请勿改动数据文件 in.dat 中的任何数据、 主函数 main() 、读函数 readDat() 和写函数 writeDat() 的内容。#include < stdio.h >int a300, cnt=0; / 定义全局一维整型数组 a300 和整型 cnt 变量, 并且变量 cnt 的初值为 0double pjz1=0.0, pjz2=0.0;/ 定义全局双精度型变量 pjz1 和 pjz2, 并且初值为 0.0,void readDat();void writeDat();jsValue()main()int i;readDat();jsValue();writeDat();printf("cnt=%dn 满足条件的平均值 pzj1=%7.2lfn 不满足条件的平均值 pzj2=%7.2lfn",cnt, pjz1, pjz2);void readDat()FILE *fp;int i;fp=fopen("in.dat", "r");for(i=0; i < 300;i+)fscanf(fp, "%d,", &ai);fclose(fp);void writeDat()FILE *fp;fp=fopen("out.dat", "w");fprintf(fp, "%dn%7.2lfn%7.2lfn", cnt, pjz1, pjz2);fclose(fp);分数: 100.00) 正确答案: ()解析: int i, qw, bw, sw, gw;for(i=0; i v 300; i+)qw=ai/1000;bw=(ai-qw*1000)/100; sw=(ai-qw*1000-bw*100)/10;gw=ai%10;if(gw-qw-bw-sw > 0) /如果ai的个位数减去千位数减去百位数减去十位的数大于零pjz1+=ai; / 把 ai 的值累加到变量 pjz1 cnt+; / 变量 cnt 加 1else pjz2+=ai; / 如果 ai 的个位数减去千位数减去百位数减去十位的数小于等于零 , 把 ai 的值累 加到变量 pjz2pjz1/=cnt;/ 变量 pjz1 的值除以变量 cnt 的值, 得到所有满足条件的四位数的平均值并赋给变量 pjz1 pjz2/=(300-cnt); / 变量 pjz2 的值除以 300 减去变量 cnt 的差 , 得到所有不满足条件的四位数的平均值 并赋给变量 pjz2 解析 个位-千位-百位-十位,结果大于零的数的个数,求满足此条件以及不满足此条 件的四位数平均值 ave1 和 ave2。 首先定义一个循环变量i ,以及分别用来存放四位数分解之后各位数的变量qw(千位)、bw(百位)、sw(十位)和gw(个位)o 通过 for 循环依次对数组中的每个四位数进行分解,每分解一个四位数,则根据题目要求,判断其“个位-百位-十位-千位>0”的条件是否满足,当满足条件时,则将ai的值累加到变量pjzl中,同时计数变量ent的值加1;如果不满足判断条件,则将四位数累加到变量pjz2中。当for循环结束之后,就能等到所有满足条件的四位数之和 pjz1 和个数,以及所有不满足条件的四位数之和 pjz2 o 最后将变量 pjz1 的值除以变量 ent 的值,得到所有满足条件的四位数的平均值并赋给变量pjz1 ,将变量 pjz2 的值除以 300 减去变量 ent 的差,得到所有不满足条件的四位数的平均值并赋给变量pjz2 o本题中,piz1、piz2和cnt三个变量在源程序中已经定义,在该子程序中就不需要再重新定义了。