ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:48.50KB ,
资源ID:1321287      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1321287.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】三级数据库技术机试-249及答案解析.doc)为本站会员(dealItalian200)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

1、三级数据库技术机试-249 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:5,分数:100.00)1.请编写函数 num(int m,int k,int xx),该函数的功能是:将大于整数 m 且紧靠 m 的 k 个素数存入数组 xx 传回。最后调用函数 readwriteDat(),从 in.dat 文件中读取 10 组数据,分别得出结果,且把结果输出到out.dat 文件中。部分程序已经给出。例如,若输入 17 5,则应输出:19 23 29 31 37。注意:部分程序已经给出。请勿改动主函数 main()和输出数据函数 readwriteDat()的内容。#i

2、ncludeconio.h#includestdio.hvoid readwriteDat();void num(int m,int k,int xx)msin()int m,n,xx1000;printf(“/nPlease enter two integers:“);scanf(“%d%d“,m,n);num(m,n,xx);for(m=0; mn; m+)printf(“%d“,xxm);printf(“/n“);readwriteDat();void readwriteDat()int m,n,xx1000,i;FILE *rf,*wf;rf=fopen(“in.dat“,“r“);w

3、f=fopen(“out.dat“,“w“);for(i=0; i10;i+)fscanf(rf,“%d%d“,m,n);num(m,n,xx);for(m=0; mn;m+)fprintf(wf,“%d“,xxm);fprintf(wf,“/n“);fclose(rf);fclose(wf);(分数:20.00)_2.已知数据文件 IN.DAT 中存有 200 个四位数,并已调用读函数 readDat()把这些数存入数组 a 中。请编写函数 jsVal(),其功能是:如果四位数各位上的数字均是 0 或 2 或 4 或 6 或 8,则统计出满足此条件的个数 cnt,并把这些四位数按从大到小的顺

4、序存入数组 b 中。最后 main()函数调用写函数 writeDat(),把结果 cnt 以及数组 b 中符合条件的四位数输出到 OUT.DAT 文件中。注意:部分程序已经给出。程序中已定义数组:a200,b200;已定义变量:cnt。请勿改动数据文件 IN.DAT 中的任何数据及主函数 main()、读函数 readDat()和写函数 writeDat()的内容。#includestdio.h#define MAX 200int aMAX,bMAX,cnt=0;void jsVal()void readDat()int i;FILE *fp;fp=fopen(“IN.DAT“,“r“);f

5、or(i=0; iMAX; 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;icnt;i+)fprintf(fp,“%d/n“,bi);fclose(fp);void main()int i;readDat();jsVal();printf(“满足条件的数=%d/n“,cnt);for(i=0; icnt; i+)printf(“%d“,bi);printf(“/n“);writeDat();(分数:20.

6、00)_3.函数 ReadDat()实现从 IN.DAT 文件中读取一篇英文文章并存入字符串数组 xx 中。请编写函数 StrOR(),其函数的功能是:以行为单位,依次把字符串中所有小写字母 o 左边的字符串内容移到该串的右边,然后把小写字母 o 删除,余下的字符串内容移到已处理字符串的左边,之后,把已处理的字符串仍按行重新存入字符串数组 xx 中。最后 main()函数调用函数 WriteDat(),把结果 xx 输出到 OUT.DAT 文件中。例如, 原文: n any field. Yu can create an indexyou have the correct record结果:

7、n any field. Yu can create anindexrd. yuhavethe crrect rec原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。注意:部分源程序已经给出。请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 writeDat()的内容。#includestdio.h#includestring.h#includeconio.hchar xx5080;int maxline=0; /*文章的总行数*/int ReadDat(void);void WriteDat(void);void StrOR(void)vo

8、id main()if(ReadDat()printf(“数据文件 IN.DAT 不能打开!/n/007“);return;StrOR();WriteDat();int ReadDat(void)FILE*fp;int i=0;char*p;if(fp=fopen(“IN.DAT“,“r“)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,/n);if(p)*p=0;i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen(“OUT.DA

9、T“,“W“);for(i=0;imaxline;i+)printf(“%s/n“,xxi);fprintf(fp,“%s/n“,xxi);fclose(fp);(分数:20.00)_4.函数 ReadDat()实现从 IN.DAT 文件中读取一篇英文文章并存入道字符串数组 xx 中。请编写函数 StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组 xx 中,最后调用函数 WriteDat(),把结果 xx 输出到OUT.DAT 文件中。例如: 原文: You He MeI am a stude

10、nt结果: Me He Youstudent a am I原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。注意:部分程序已经给出。请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 WriteDat()的内容。#includestdio.h#includestring.h#includeconio.h#includectype.hchar xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void StrOL(void)void main()if(Read

11、Dat()printf(“数据文件 IN.DAT 不能打开!/n/007“);return;StrOL();WriteDat();int ReadDat(void)FILE*fp;int i=0;char*p;if(fp=fopen(“IN.DAT“,“r“)=NULL)return.1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,/n);if(p)*p=0;i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen(“OUT.DAT“,“W“);for(i=0;

12、imaxline; i+)printf(“%s/n“,xxi);fprintf(fp,“%s/n“,xxi);fclose(fp);(分数:20.00)_5.在 in.da 文件中有 200 个正整数,且每个数均在 10009999 之间。函数 ReadDat()读取这 200 个数并存放到数组 aa 中。请编写函数 jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前 10 个数依次存入数组 bb 中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数 WriteDat(),把结果 bb 输出到 out.dat 文件中。例如:处理前 6

13、012 5099 9012 7025 8088处理后 9012 6012 7025 8088 5099注意:部分程序已经给出。请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 WriteDat()的内容。#includeStdio.h#includestring.h#includeconio.hint aa200,bb10;void jsSort()void ReadDat()FILE *in;int i;in=fopen(“in.dat“,“r“);for(i=0;i200;i+)fscanf(in,“%d,“,aai);fclose(in);void WriteD

14、at()FILE *out;int i;out=fopen(“out.dat“,“W“);for(i=0;i10;i+)printf(“%d“,bbi);fprintf(out,“%d/n“,bbi);fclose(out);void main()ReadDat();jsSort();WriteDat();(分数:20.00)_三级数据库技术机试-249 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:5,分数:100.00)1.请编写函数 num(int m,int k,int xx),该函数的功能是:将大于整数 m 且紧靠 m 的 k 个素数存入数组 xx 传回。最

15、后调用函数 readwriteDat(),从 in.dat 文件中读取 10 组数据,分别得出结果,且把结果输出到out.dat 文件中。部分程序已经给出。例如,若输入 17 5,则应输出:19 23 29 31 37。注意:部分程序已经给出。请勿改动主函数 main()和输出数据函数 readwriteDat()的内容。#includeconio.h#includestdio.hvoid readwriteDat();void num(int m,int k,int xx)msin()int m,n,xx1000;printf(“/nPlease enter two integers:“);

16、scanf(“%d%d“,m,n);num(m,n,xx);for(m=0; mn; m+)printf(“%d“,xxm);printf(“/n“);readwriteDat();void readwriteDat()int m,n,xx1000,i;FILE *rf,*wf;rf=fopen(“in.dat“,“r“);wf=fopen(“out.dat“,“w“);for(i=0; i10;i+)fscanf(rf,“%d%d“,m,n);num(m,n,xx);for(m=0; mn;m+)fprintf(wf,“%d“,xxm);fprintf(wf,“/n“);fclose(rf)

17、fclose(wf);(分数:20.00)_正确答案:(void num(int m,int k,int xx)/术定义整型变量 data,并初始化为 m+1(即大于整数 m 且紧靠 m 的第 1 个整数)*/int data=m+1;int half,n=0,i;while(1)/*判断 data 是否为素数*/half=data/2;for(i=2;i=half;i+)if(data%i=0)break;if(ihalf) /*如果此时 ihalf 说明 data 是一个素数*/xxr1=data; /*将 data 存入数组 xx*/n+; /*让计数变量 n 增 1;/*如果已经找足

18、 k 个素数了,就通过 break 语句跳出循环*/if(n=k)break;data+; /*继续找下一个素数*/)解析:2.已知数据文件 IN.DAT 中存有 200 个四位数,并已调用读函数 readDat()把这些数存入数组 a 中。请编写函数 jsVal(),其功能是:如果四位数各位上的数字均是 0 或 2 或 4 或 6 或 8,则统计出满足此条件的个数 cnt,并把这些四位数按从大到小的顺序存入数组 b 中。最后 main()函数调用写函数 writeDat(),把结果 cnt 以及数组 b 中符合条件的四位数输出到 OUT.DAT 文件中。注意:部分程序已经给出。程序中已定义数

19、组:a200,b200;已定义变量:cnt。请勿改动数据文件 IN.DAT 中的任何数据及主函数 main()、读函数 readDat()和写函数 writeDat()的内容。#includestdio.h#define MAX 200int aMAX,bMAX,cnt=0;void jsVal()void readDat()int i;FILE *fp;fp=fopen(“IN.DAT“,“r“);for(i=0; iMAX; i+)fscanf(fp,“%d,“,ai);fclose(fp);VOid writeDat()FILE *fp;int i;fp=fopen(“OUT.DAT“,

20、W“);fprintf(fp,“%d/n“,cnt);for(i=0;icnt;i+)fprintf(fp,“%d/n“,bi);fclose(fp);void main()int i;readDat();jsVal();printf(“满足条件的数=%d/n“,cnt);for(i=0; icnt; i+)printf(“%d“,bi);printf(“/n“);writeDat();(分数:20.00)_正确答案:(void jsVal()int bb4;int i,j,k,flag;for(i=0;i200;i+) /*循环以遍历数组 a 中的每一个四位数*/bb0=ai/1000;

21、/*将 ai的千位数字存入 bb0*/bb1=ai%1000/100;/*将 ai的百位数字存入 bb1*/bb2=ai%100/10; /*将 ai的十位数字存入 bb2*/bb3=ai%10; /*将 ai的个位数字存入 bb3*/for(j=0;j4;j+) /*循环以遍历数组 bb,即 ai的每一位*/*根据当前位是否能被 2 整除,来设置旗标变量 flag 为 1 还是 0*/if(bbj%2=0)flag=1;elseflag=0;/*如果有 1 位不能被 2 整除,后面的位就不必判断了,跳出该循环*/break;if(flag=1) /*如果此时 flag 的值为 1 说明所有位

22、均能被 2 整除*/bcnt=ai;/*将此数存入数组 b*/cnt+; /*计数值 cnt 增 1*/*对数组 b 的前 cnt 个数进行选择排序*/for(i=0;i(cnt-1;i+)for(j=i+1;j(cnt;j+)/*如果 bi因小于它后面的数 bj而交换两者,说明此排序为降序*/if(bibj)k=bi;bi=bj;bj=k;)解析:3.函数 ReadDat()实现从 IN.DAT 文件中读取一篇英文文章并存入字符串数组 xx 中。请编写函数 StrOR(),其函数的功能是:以行为单位,依次把字符串中所有小写字母 o 左边的字符串内容移到该串的右边,然后把小写字母 o 删除,余

23、下的字符串内容移到已处理字符串的左边,之后,把已处理的字符串仍按行重新存入字符串数组 xx 中。最后 main()函数调用函数 WriteDat(),把结果 xx 输出到 OUT.DAT 文件中。例如, 原文: n any field. Yu can create an indexyou have the correct record结果: n any field. Yu can create anindexrd. yuhavethe crrect rec原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。注意:部分源程序已经给出。请勿改动主函数 main()、读数据函

24、数 ReadDat()和输出数据函数 writeDat()的内容。#includestdio.h#includestring.h#includeconio.hchar xx5080;int maxline=0; /*文章的总行数*/int ReadDat(void);void WriteDat(void);void StrOR(void)void main()if(ReadDat()printf(“数据文件 IN.DAT 不能打开!/n/007“);return;StrOR();WriteDat();int ReadDat(void)FILE*fp;int i=0;char*p;if(fp=f

25、open(“IN.DAT“,“r“)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,/n);if(p)*p=0;i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen(“OUT.DAT“,“W“);for(i=0;imaxline;i+)printf(“%s/n“,xxi);fprintf(fp,“%s/n“,xxi);fclose(fp);(分数:20.00)_正确答案:(void StrOR(void)int i,j,k;char

26、 bur80;for(i=0;i(maxline;i+) /*循环以遍历英文文章的每一行*/j=strlen(xxi)-1; /*求出当前行最后一个字符的位置*/*从最后一个字符往前循环遍历当前行,直到碰到小写字母0或到行首*/while(xxij!=0j=0)j-;if(j0) /*如果 j0 说明找到行首也没发现一个0*/continue; /*则当前行不用操作,去下一行*/*找到字母0,用字符串结束标志 0(或写成/0)替换之,使该行一分为二*/xxij=0;strcpy(buf,xxij+1); /*将后半截字符串复制到缓存行 buf 中*/*从第 1 个字符开始循环遍历前半截字符串*

27、/k=j=0;while(xxij)/*循环往后遍历,找出第 1 个小写字母0的位置或到达字符串末尾*/while(xxij!=0xxij)j+;if(!xxij) /*如果!xxij为真,说明已到达字符串末尾*/*将找过的这段字符串连接到 buf 中已存字符串的末尾并跳出循环*/strcat(buf,xxik);break;/*如果找到了字母0,用 0 替换之以分割出找过的这段字符串*/xxij=0;/*将找过的这段字符串连接到 buf 中已存字符串的末尾*/strcat(buf,xxik);/*从下一个位置开始继续循环遍历剩下的字符串*/j+;k=j;/*执行到这里,当前行已遍历完毕,用操

28、作结果覆盖掉原来内容*/strcpy(xxi,bur);)解析:4.函数 ReadDat()实现从 IN.DAT 文件中读取一篇英文文章并存入道字符串数组 xx 中。请编写函数 StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组 xx 中,最后调用函数 WriteDat(),把结果 xx 输出到OUT.DAT 文件中。例如: 原文: You He MeI am a student结果: Me He Youstudent a am I原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标

29、点符号和空格。注意:部分程序已经给出。请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 WriteDat()的内容。#includestdio.h#includestring.h#includeconio.h#includectype.hchar xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void StrOL(void)void main()if(ReadDat()printf(“数据文件 IN.DAT 不能打开!/n/007“);return;StrOL();WriteD

30、at();int ReadDat(void)FILE*fp;int i=0;char*p;if(fp=fopen(“IN.DAT“,“r“)=NULL)return.1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,/n);if(p)*p=0;i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen(“OUT.DAT“,“W“);for(i=0;imaxline; i+)printf(“%s/n“,xxi);fprintf(fp,“%s/n“,xxi);fclos

31、e(fp);(分数:20.00)_正确答案:(void StrOL(void)int i,j,k,strl,1;/*循环遍历英文文章的全部字符,将既不是字母也不是空格的字符替换成空格*/for(i=0;i(maxline;i+)for(j=0;j(int)strlen(xxi)vj+)if(!isalpha(xxiJ)xxij!=)xxij=;for(1=0;1(maxline;1+) /*循环以遍历文章的每一行*/char ch80=0;char pp80=0;strl=strlen(xx1);i=strl-1; /*求出当前行最后一个字符的位置*/k=0;while(1)/*从最后一个字符

32、往前循环遍历当前行,直到碰到非字母字符或到行首*/*(即以从后往前的顺序查找单词)*/while(i salpha(xx1i)i=0)/*将字符数组 pp 中的前 k+1 个字符往后移动一位*/for(j=k;j=0;j-)ppj+1=ppj;pp0=xx1i; /*将当前字符存入到 pp 的第 1 个位置*/k+; /*pp 中的有效字符数增 1*/i-; /*继续遍历前一个字符*/strcat(ch,pp); /*将 pp 中的单词连接到字符数组 ch 的末尾*/strcpy(pp,-); /*清空 pp 数组*/k=0;if(i0)break; /*若已遍历到行首则跳出该循环*/*从后往

33、前循环遍历当前行,直到碰到字母字符或到行首*/*(即以从后往前的顺序查找两个单词之间的字符)*/while(!i salpha(xx1i)i=0)/*将字符数组 pp 中的前 k+1 个字符往后移动一位*/for(j=k;j=0;j-)ppj+1=ppj;pp0=xx1i; /*将当前字符存入到 pp 的第 1 个位置*/k+; /*pp 中的有效字符数增 1*/i-; /*继续遍历前一个字符*/strcat(ch,pp); /*将 pp 中的字符串连接到 ch 的末尾*/strcpy(pp,-); /*清空 pp 数组*/k=0;if(i0)break; /*若己遍历到行首则跳出该循环*/*

34、执行到这里,当前行已遍历完毕,用操作结果覆盖掉原来内容*/strcpy(xx1,ch);)解析:5.在 in.da 文件中有 200 个正整数,且每个数均在 10009999 之间。函数 ReadDat()读取这 200 个数并存放到数组 aa 中。请编写函数 jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前 10 个数依次存入数组 bb 中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数 WriteDat(),把结果 bb 输出到 out.dat 文件中。例如:处理前 6012 5099 9012 7025 8088处理后 90

35、12 6012 7025 8088 5099注意:部分程序已经给出。请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 WriteDat()的内容。#includeStdio.h#includestring.h#includeconio.hint aa200,bb10;void jsSort()void ReadDat()FILE *in;int i;in=fopen(“in.dat“,“r“);for(i=0;i200;i+)fscanf(in,“%d,“,aai);fclose(in);void WriteDat()FILE *out;int i;out=fopen

36、out.dat“,“W“);for(i=0;i10;i+)printf(“%d“,bbi);fprintf(out,“%d/n“,bbi);fclose(out);void main()ReadDat();jsSort();WriteDat();(分数:20.00)_正确答案:(void jsSort ()int i,j,data;/*对数组 aa 的所有 200 个数进行选择排序*/for(i=0;i199;i+)for(j=i+1;j200;j+)/*按每个数后三位的大小进行升序排列*/if(aai%1000aaj%1000)data=aai;aai=aaj;aaj=data;else if(aai%1000=aaj%1000) /*若后三位相等则按实际大小进行降序排列*/if(aaiaaj)data=aai;aai=aaj;aaj=data;for(i=0;i10;i+) /*取出排序后数组 aa 中的前 10 个数存入数组 bb*/bbi=aai;)解析:

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