


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、三级数据库技术机试 -233( 总分: 100.00 ,做题时间: 90 分钟 )、上机题( 总题数: 5,分数: 100.00)1. 已知数据文件 in.dat 中存有 300 个四位数,并已调用读函数 ReadDat() 把这些数存入数组 a 中。请编写 函数 jsValue() ,其功能是: 求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数 cnt ,再 求出所有满足此条件的四位数平均值 pjz1 ,以及不满足此条件的四位数平均值 pjz2 ,最后调用写函数 writeDat() ,把结果输出到 out.dat 文件中。例如: 7153, 7+1=5+3,则该数满足条件计算平
2、均值pjz1 ,且个数 cnt=cnt+1 。8129, 8+1 o 2+9,则该数不满足条件计算平均值pjz2。注意:部分源程序已经给出。程序中已定义数组: a300 ;已定义变量: cnt , pjz1 , pjz2 。请勿改动主函数 main() 、读函数 ReadDat() 和写函数 writeDat() 的内容。#include < stdio.h >int a300,cnt=0;double pjz1=0.0,pjz2=0.0;void jsValue() void ReadDat()FILE *fp;int i;fp=fopen("in.dat",
3、"r");for(i=0;i < 300;i+)fscanf(fp,"%d,",ai);fclose(fp);void writeDat()FILE *fp;fp=fopen("out.dat","w");fprintf(fp,"%d/n%7.2f/n%7.2f/n",cnt,pjz1,pjz2);fclose(fp);main()ReadDat();jsValue();writeDat();printf("cnt=%d/n 满足条件的平均值 pzj1=%7.2f/n 不满足条件
4、的平均值 pzj2=%7.2f/n",cnt,pjz1,pjz2);分数: 20.00 ) 正确答案: (void jsValue ()int i,thou,hun,ten,data,n=0;for(i=0;i v 300;i+)/*循环以遍历数组 a中的所有300个四位数*/thou=ai/1000; /* 取当前数的千位数字 */ hun=ai%1000/100; /* 取当前数的百位数字 */ ten=ai%100/10; /* 取当前数的十位数字 */ data=ai%10; / 术取当前数的个位数字术 /if(thou+hun=ten+data) /* 如果千位加百位等于十
5、位加个位的话 */cnt+; /* 让计数值 cnt 增 1*/pjz1+=ai; /* 将此数累加到 pjz1 中*/else /* 否则的话 , 让计数值 n 增 1, 将此数累加到 pjz2 中 */n+;pjz2+=ai;pjz1/=cnt; /* 计算满足条件的数的平均值 */pjz2/=n; /* 计算不满足条件的数的平均值 */)解析:2. 已知数据文件in.dat中存有300个四位数,并已调用读函数 ReadDat()把这些数存入数组 a中。请编写 函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均值pjz1以及不满足此条件
6、的四位数平均值pjz2,最后调用写函数 writeDat(),把结果cnt、pjz1、pjz2输出到 out.dat 文件中。例如: 5591 是素数,则该数满足条件计算平均值 pjz1 ,且个数 cnt=cnt+1 。9812 是非素数,则该数不满足条件计算平均值 pjz2 。 注意:部分源程序已经给出。程序中已定义数组: a300 ;已定义变量: cnt 、 pjz1 、 pjz2 。请勿改动主函数 main() 、读函数 ReadDat() 和写函数 writeDat() 的内容。#include v stdio.h >int a300,cnt=0;double pjz1=0.0,
7、pjz2=0.0;int isP(int m)int i;for(i=2;i v m;i+)if(m%i=0)return 0;return 1;void jsValue() void ReadDat()FILE *fp;int i;fp=fopen("in.dat","r");for(i=0;i v 300;i+)fscanf(fp,"%d,", & ai);fclose(fp);void writeDat()FILE *fp;fp=fopen("out.dat","w");fprin
8、tf(fp,"%d/n%7.2f/n%7.2f/n",cnt,pjz1,pjz2);fclose(fp);main()ReadDat();jsValue();writeDat();printf("cnt=%d/n满足条件的平均值 pzj仁%7.2f/n 不满足条件的平均值pzj2=%7.2f/n",cnt,pjz1,pjz2);(分数:20.00 ) 正确答案:(void jsValue ()int i;for(i=0;i(300;i+) /*循环以遍历数组a中的所有300个数*/if(i sP(a【i) /*如果是素数,则将此数累加Npjz1中,并让计
9、数值cnt增1*/pjz1+=ai;cnt+; elsepjz2+=ai; /*否则将其累加到pjz2中*/pjz1=pjz1/cnt; /*计算所有素数的平均值*/pjz2=pjz2/(300-cnt); /*计算所有非素数的平均值*/)解析:3. 函数ReadDat()实现从IN.DAT文件中读取1000个十进制整数到数组 xx中。请编写函数 Compute。分别 计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的个数even,偶数的平均值 ave2以及所有奇数的 方差totfc的值,最后调用函数 WriteDat(),把结果输出到 OUT.DAT文件中。计算方差的公式如下:其中:
10、N为奇数的个数,xxi为奇数,ave1为奇数的平均值。原始数据文件存放的格式是:每行存放10个数(每个数均大于0且小于等于2000),并用逗号隔开注意:部分源程序已经给岀。请勿改动主函数 main()、读函数ReadDat()和输出数据函数 WriteDat()的内容。#include v string.h >int xxMAX,odd=0,even=0;double ave1=0.0,ave2=0.0,totfc=0.0;void WriteDat(void);int ReadDat(void)FILE *fp;int i,j;if(fp=fopen("IN.DAT"
11、;,"r")=NULL)return 1;for(i=0;iv 100; i+)for(j=0;jv 10;j+)fscanf(fp,"%d,", xxi*10+j);fscanf(fp,"/n");if(feof(fp)break;fclose(fp);return 0;void Compute(void)void main()int i;for(i=0;i v MAX;i+)xxi=0;if(ReadDat()printf(" 数据文件 IN.DAT 不能打开 !/007/n");return;Compute(
12、);printf("ODD=%d/nEVEN=%d/nAVE1=%f/nAVE2=%f/nTOTFC=%f/n",odd,even,avel,ave2,totfc); WriteDat();void WriteDat(void)FILE *fp;fp=fopen("OUT.DAT","w");fprintf(fp,"%d/n%d/n%f/n%f/n%f/n", odd, even, ave1, ave2,totfc);fclose(fp);(分数: 20.00 ) 正确答案: (void Compute(void)
13、int i,yyMAX;for(i=0;i v1000;i+) /* 循环以遍历数组 xx 的所有 1000个数*/ if(xxi%2) /* 如果当前数为奇数 */odd+; /* 让计数值 odd 增 1*/avel+=xxi; /* 将此数累加至 ave1 中 */yyodd-1=xxi;/* 将此数保存到数组 yy 中*/else /* 否则让计数值 even 增 1 并将此数累加至 ave2 中 */even+;ave2+=xxi;ave1/=odd; /* 计算奇数的平均值 */ave2/=even; /* 计算欧数的平均值 */for(i=0;i < odd;i+)/*循环
14、以求所有奇数的方差*/totfc+=(yyi-avel)*(yyi-avel)/odd;)解析:4. 现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是:每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,以此类推;内容均为字符0和 1, 1 表示此人被选中, 0 表示此人未被选中,若一张选票人数大于 5 个人时被认为无效的选票。给定函数 ReadDat() 的功能是把选票数据读入到字符串数组 xx 中。请编写函数 CountRs() 来统计每个人的选票数并把得票数依 次存入yy0到yy9中。把结果yy输出到OUT.DAT文件中。注意:部分
15、源程序已经给出。请勿改动主函数 main() 、读数据函数 ReadDat() 和输出数据函数 WriteDat() 的内容。#include < stdio.h >char xx10011;int yy10;int ReadDat(void);void WriteDat(void);void CountRs(void)void main()int i;for(i=0;i <10;i+)yyi=0;if(ReadDat()printf(" 选票数据文件 IN.DAT 不能打开 !/n/007");return;CountRs();WriteDat();in
16、t ReadDat(void)FILE *fp;int i;if(fp=fopen("IN.DAT","r")=NULL)return 1;for(i=0;i < 100;i+) if(fgets(xxi,12,fp)=NULL)return 1;xxi10='/0'fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen("OUT.DAT","w");for(i=0;i <10;i+)fprintf(fp,"
17、%d/n",yyi);printf(”第4 个人的选票数=%d/n",i+1,yyi);fclose(fp);分数: 20.00 ) 正确答案: (void CountRs(void)int i,count,j;char*pf;for(i=0;i <10;i+) /* 循环以遍历数组 yy*/yyi=0; /* 清零 yy 中的元素 (10 人的得票数 )*/for(i=0;i <100;i+) /* 循环以遍历 100 行选票数据 */pf=xxi; /* 用字符指针 pf 指向当前选票行 */count=0; /* 清零计数值 count 用以统计当前行选票
18、数 */while(*pf) /* 以指针 pf 遍历整个选票行 */if(*pf='1')count+; /* 若遍历到字符 '1', 则让计数值 count 增 1*/pf+; /* 继续遍历下一个字符 */if(count < =5)for(j=0;j <10;j+) /* 循环遍历选票行 */yyj+=xxij-'0' /*将选票位换算成数值累加进数组 yy*/)解析:5. 已知数据文件 IN.DAT 中存有 200 个四位数,并已调用读函数 readDat() 把这些数存入数组 a 中。请编写 函数 jsVal() ,其功能
19、是:把一个四位数的个位数字上的值减去千位数字上的值再减去百位数字上的值最 后减去十位数字上的值,如果得出的值大于等于零且原四位数是偶数,则统计出满足此条件的个数cnt 并把这些四位数按从小到大的顺序存入数组 b 中,最后调用写函数 writeDat() ,把结果 cnt 以及数组 b 中符 合条件的四位数输出到OUT.DAT文件中。注意:部分源程序已经给出。程序中已定义数组: a200 ,b200 ,已定义变量: cnt 。的内容。请勿改动数据文件 IN.DAT 中的任何数据、 主函数 main() 、读函数 readDat() 和写函数 writeDat() #include < st
20、dio.h >#define MAX 200 int aMAX,bMAX,cnt=0; void jsVal() void readDat()int i;FILE *fp; fp=fopen("IN.DAT","r"); for(i=0;i < MAX;i+) fscanf(fp,"%d,",ai);fclose(fp);void writeDat()FILE *fp;int i;fp=fopen("OUT.DAT","w"); fprintf(fp,"%d/n",cnt);for(i=0; i < cnt;i+) fprintf(fp,"%d/n"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 开启2025乐理考试学习智库的有效实践与运用指南试题及答案
- 理清2025年乐理考试中的知识点框架试题及答案
- 如何提升农产品电商的社会影响力试题及答案
- 肿瘤早筛技术临床应用案例研究及2025年市场前景预测报告
- 系统学习乐理的路径试题及答案
- 新能源汽车电池回收技术创新与成果鉴定报告2025
- 热工安全规程试题及答案
- 家具设计与社会责任考核题试题及答案
- 新能源汽车商业模式的演变与展望试题及答案
- 食品冷链物流温控技术在生鲜电商中的应用前景分析报告
- 六年级语文下册《(一)字词积累》期末复习课件
- 装修材料的购销合同
- 2025年江西金融租赁股份有限公司招聘笔试参考题库含答案解析
- 台达DELTA变频器VFD-EL系列使用说明书和手册(完整中文版)VFD007EL23A
- 湖南省长沙市2024-2025学年高三上学期新高考适应性考试数学试题 含答案
- 课题申报书:“四新”建设背景下教育创新与课程数字化实践研究
- 年加工2万吨再生铝项目可行性研究报告建议书
- 2025年公司各部门管理规章制度(4篇)
- 2025年应急管理部信息研究院招聘高频重点提升(共500题)附带答案详解
- 2025版《VOCs废气处理设施安全检查表》(全)
- 普通话水平测试朗读50篇
评论
0/150
提交评论