三级数据库技术机试-233

上传人:m**** 文档编号:51288594 上传时间:2022-01-25 格式:DOC 页数:7 大小:57KB
返回 下载 相关 举报
三级数据库技术机试-233_第1页
第1页 / 共7页
三级数据库技术机试-233_第2页
第2页 / 共7页
三级数据库技术机试-233_第3页
第3页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
三级数据库技术机试 -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,则该数满足条件计算平均值pjz1 ,且个数 cnt=cnt+1 。8129, 8+1 o 2+9,则该数不满足条件计算平均值pjz2。注意:部分源程序已经给出。程序中已定义数组: a300 ;已定义变量: cnt , pjz1 , pjz2 。请勿改动主函数 main() 、读函数 ReadDat() 和写函数 writeDat() 的内容。#include int a300,cnt=0;double pjz1=0.0,pjz2=0.0;void jsValue() void ReadDat()FILE *fp;int i;fp=fopen(in.dat,r);for(i=0;i int a300,cnt=0;double pjz1=0.0,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);fprintf(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中,并让计数值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文件中。计算方差的公式如下:其中: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,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();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)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+)/*循环以求所有奇数的方差*/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文件中。注意:部分源程序已经给出。请勿改动主函数 main() 、读数据函数 ReadDat() 和输出数据函数 WriteDat() 的内容。#include 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();int 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,%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 用以统计当前行选票数 */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() ,其功能是:把一个四位数的个位数字上的值减去千位数字上的值再减去百位数字上的值最 后减去十位数字上的值,如果得出的值大于等于零且原四位数是偶数,则统计出满足此条件的个数cnt 并把这些四位数按从小到大的顺序存入数组 b 中,最后调用写函数 writeDat() ,把结果 cnt 以及数组 b 中符 合条件的四位数输出到OUT.DAT文件中。注意:部分源程序已经给出。程序中已定义数组: a200 ,b200 ,已定义变量: cnt 。的内容。请勿改动数据文件 IN.DAT 中的任何数据、 主函数 main() 、读函数 readDat() 和写函数 writeDat() #include #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,bi); fclose(fp);void main()int i;readDat();jsVal();printf( 满足条件的数 =%d/n,cnt); for(i=0; i cnt;i+) printf(%d,bi);printf(/n); writeDat();分数: 20.00 ) 正确答案: (void jsVal()int i,thou,hun,ten,data,j;for(i=0;i =0& ai%2!=1)( /* 若个位减其他所有位的和大于等于 0, 且原数为偶数的话 */ bcnt=ai; /* 将此数存入数组 b*/cnt+; /* 让计数值 cnt 增 1*/* 对数组 b 的前 cnt 个数进行选择排序 */for(i=0;i cnt-1;i+)for(j=i+1;j bj) /* 前面的数大于后面的数则交换 , 即升序排列 */data=bi;bi=bj;bj=data;)解析:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!