欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1321287       资源大小:48.50KB        全文页数:15页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】三级数据库技术机试-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;)解析:


    注意事项

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开