【计算机类职业资格】三级数据库技术-500及答案解析.doc

上传人:李朗 文档编号:1321164 上传时间:2019-10-17 格式:DOC 页数:4 大小:30KB
下载 相关 举报
【计算机类职业资格】三级数据库技术-500及答案解析.doc_第1页
第1页 / 共4页
【计算机类职业资格】三级数据库技术-500及答案解析.doc_第2页
第2页 / 共4页
【计算机类职业资格】三级数据库技术-500及答案解析.doc_第3页
第3页 / 共4页
【计算机类职业资格】三级数据库技术-500及答案解析.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、三级数据库技术-500 及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.已知在 in.dat 中存有若干个(个数200)四位十进制数字组成的正整数,函数 ReadDat()读取这若干个正整数并存入数组 xx 中。请编制函数 CalValue(),其功能要求:1求出该文件中共有多少个正整数totNum;2求这些正整数右移 1 位二进制位后,产生的新数是偶数的数的个数 totCnt,以及满足此条件的这些正整数(右移前的值)的算术平均值 totPjz。最后 main()函数调用函数 WriteDat()把所求的结果输出到 out.dat 文

2、件中。 请勿改动数据文件 in.dat 中的任何数据,主函数 main()、读函数 ReadDat()和输出函数 WriteDat()的内容。 #include stdio.h #define MAXNUM 200 int xxMAXNUM; int totNum=0; /文件 in.dat 中共有多少个正整数 int totCnt=0; /符合条件的正整数的个数 double totPjz=0.0; /平均值 int ReadDat(void); void WriteDat(void); void CalValue(void) void main() int i; for(i=0; iMAX

3、NUM; i+) xxi=0; if(ReadDat() printf(“数据文件 in.dat 不能打开!007n“); return; CalValue(); printf(“文件 in.dat 中共有正整数=%d 个n“, totNum); printf(“符合条件的正整数的个数=%d 个n“, totCnt); printf(“平均值=%.2lfn“, totPjz); WriteDat(); /*读取这若干个正整数并存入数组 xx 中*/ int ReadDat(void) FILE *fp; int i=0; if(fp=fopen(“in.dat“, “r“)=NULL) ret

4、urn 1; /如果 in.dat 文件为空, 则返回 1 /*while 一直执行, 直到文件 in.dat 的结尾退出*/ while(!feof(fp) fscanf(fp, “%d, “, /从文件 in.dat 读取一个整数存入 xxi中, 同时 i 加 1 fclose(fp); return 0; /把文件 in.dat 若干个正整数读取并正确存入数组 xx 中返回 0 /*把计算结果存入文件 out.dat 中*/ void WriteDat(void) FILE *fp; fp=fopen(“out.dat“, “w“); fprintf(fp, “%dn%dn%.2lfn“

5、, totNum, totCnt, totPjz); fclose(fp); (分数:100.00)_三级数据库技术-500 答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.已知在 in.dat 中存有若干个(个数200)四位十进制数字组成的正整数,函数 ReadDat()读取这若干个正整数并存入数组 xx 中。请编制函数 CalValue(),其功能要求:1求出该文件中共有多少个正整数totNum;2求这些正整数右移 1 位二进制位后,产生的新数是偶数的数的个数 totCnt,以及满足此条件的这些正整数(右移前的值)的算术平均值 to

6、tPjz。最后 main()函数调用函数 WriteDat()把所求的结果输出到 out.dat 文件中。 请勿改动数据文件 in.dat 中的任何数据,主函数 main()、读函数 ReadDat()和输出函数 WriteDat()的内容。 #include stdio.h #define MAXNUM 200 int xxMAXNUM; int totNum=0; /文件 in.dat 中共有多少个正整数 int totCnt=0; /符合条件的正整数的个数 double totPjz=0.0; /平均值 int ReadDat(void); void WriteDat(void); vo

7、id CalValue(void) void main() int i; for(i=0; iMAXNUM; i+) xxi=0; if(ReadDat() printf(“数据文件 in.dat 不能打开!007n“); return; CalValue(); printf(“文件 in.dat 中共有正整数=%d 个n“, totNum); printf(“符合条件的正整数的个数=%d 个n“, totCnt); printf(“平均值=%.2lfn“, totPjz); WriteDat(); /*读取这若干个正整数并存入数组 xx 中*/ int ReadDat(void) FILE

8、*fp; int i=0; if(fp=fopen(“in.dat“, “r“)=NULL) return 1; /如果 in.dat 文件为空, 则返回 1 /*while 一直执行, 直到文件 in.dat 的结尾退出*/ while(!feof(fp) fscanf(fp, “%d, “, /从文件 in.dat 读取一个整数存入 xxi中, 同时 i 加 1 fclose(fp); return 0; /把文件 in.dat 若干个正整数读取并正确存入数组 xx 中返回 0 /*把计算结果存入文件 out.dat 中*/ void WriteDat(void) FILE *fp; fp

9、=fopen(“out.dat“, “w“); fprintf(fp, “%dn%dn%.2lfn“, totNum, totCnt, totPjz); fclose(fp); (分数:100.00)_正确答案:()解析:int i, j; long he=0; /符合条件的正整数的和 /*循环变量 i 从 0 开始,每次增加 1,如果数组元素 xxi非零,则变量 totNum 加 1,直到 i 大于或等于MAXNUM,退出循环时,变量 totNum 的值就是数组 xx 中元素的个数*/ for(i=0; iMAXNUM; i+) if(xxi) totNum+; /*数组 xx 的每一个元素

10、 xxi右移一位,得到新数 j,如果 j 为偶数,则变量 totCnt 加 1,同时把数组元素 xxi累加到变量 he*/ for(i=0; itotNum; i+) j=(xxi1); /xxi右移一位, 得到新数 j if(j%2=0)/如果 j 是偶数 totCnt+; /totcnt 加 1 he+=xxi; /数组元素 xxi累加到变量 he totPjz=(double)he/totCnt; /变量 he 除以 totCnt 得到符合条件的数的算术平均值 totPjz 解析 读取正数,统计个数,右移后为偶数的个数及平均值。 定义整型变量 i、j 和长整型 he,并把其初始值设置为 0。 用 for 循环语句对数组 xx 进行扫描,如果当前数组元素 xxi零,则全局变量 totNum 加 1。 在 for 循环语句中,循环变量 i 从 0 开始递增到 totNum-1,对数组 xx 中的每个元素 xxi右移一位,把这个值赋给整型变量 j,再对 j 的值对 2 求余数,如果余数等于 0,则变量 totCnt 加 1,并把数组元素xxi累加到变量 he。 退出循环时,把变量 he 的数据类型转换成双精度型再除以变量 totCnt 的值,就得到算术平均值totPjz。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1