三级数据库技术机试-233_第1页
三级数据库技术机试-233_第2页
三级数据库技术机试-233_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论