




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家三级(数据库技术)机试模拟试卷9(共5套)(共5题)国家三级(数据库技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、下列程序的功能是:将大于整数m且紧靠m的k个被3除余1的素数存入数组xx。请编写函数num(intm,imtk,intxx[])实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。例如:若输入17,5,则应输出:19,31,37,43,61。部分源程序已给出。请勿改动主函数main()和输出数据函数readwriteDat()的内容。#include<conio.h>#include<stdio.h>voidreadwriteDat();voidnum(intm,intk,intxx[]){}main(){intm,n,xx[1000];clrscr();printf("\nPleaseentertwointegers:");scanf("%d%d",&m,&n);num(m,n,xx);for(m=0;m<n;m++)printf("%d",xx[m]);printf("\n");readwriteDat();}viodreadwriteDat(){intm,n,xx[1000],i;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d%d",&m,&n);num(m,n,xx);for(m=0;m<n;m++)fprintf(wf,"%d",xx[m]fprintf(wf,"\n");}fclose(rf);fclose(wf);}标准答案:intisP(intm){inti;for(i=2;i<m;i++)if(m%i==O)return0;/*用小于m的所有整数去试除*//*除尽则m不是素数*//*此步有优化余地*/return1;}/*寻找满足条件的素数*/voidnum(intm,intk,intxx[]){ints=0;for(++m;k>0;m++)if(m%3==1&&isP(m)){xx[s++]=m;k--;}}知识点解析:类型:素数判断与运算。关键点:素数判定。求素数的题,可以先定义一个求素数的函数,然后在程序中直接调用,这样简单而且不容易出错。原程序如果给了求素数的函数,可以直接调用。国家三级(数据库技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN6.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位);产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WilteDat()把结果输出到文件OUT6.DAT中。注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。【试题程序】#include<stdio.h>#include<memory.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/charmc[ll];/*产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX]voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell,O,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[11];inti;fp=fbpen("IN6.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[i].mc,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT6.DAT","w");for(i=0;i<100;i++)fprintf(fp,"%s%s%4d%5d%101d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fclose(fp);}标准答案:voidSortDat(){inti,j;PROxy;for(i=0;i<MAX-1;i++)for(j=i+l;j<MAX;j++){if(strcmp(sell[i].dm,sell[j].dm)>0)/*按代码从小到大进行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;elseif(strcmp(sell[i].dm,sell[j].dm)==O)/*若金额相同*/if(sell[i].je>sell[j].je)/*则按代码从大到小进行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}知识点解析:此题按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,相应语句为:if((strcmp(sell[i].dm,sell[j].dm>0)‖(strcmp(sell[i].dm,sell[j].dm==0&&(sell[i].je>sell[j].je国家三级(数据库技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编写函数voidcountValue(int*a,int*n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组a中,并通过n返回这些数的个数。注意:部分源程序已给出。请勿改动主函数main()和写函数writeDAT()的内容。试题程序:#include<conio.h>#include<stdio.h>voidcountValue(int*a,int*n){}main(){intaa[1000],n,k;clrscr();countValue(aa,&n);for(k=0;k<n;k++)if((k+1)%10==0){printf("%5d",aa[k]);printf("\n");}elseprintf("%5d",aa[k]);writeDAT();}writeDAT(){intaa[1000],n,k;FILE*fp;fp=fopen("out79.dat","w");countValue(aa,&n);for(k=0;k<n;k++)if((k+1)%10==0){fprintf(fp,"%5d",aa[k]);fprintf(fp,"\n");}elsefprintf(fp,"%5d",aa[k]);fclose(fp);}标准答案:voidcountValue(int*a,int*n){inti;*n=0;for(i=1;i<=1000;i++)if(i%7==0&&i%11)/*将能被7整除但不能被11整除的数存入数组a中*/{*a=i;*n-*n+1;/*统计个数*/a++;}elseif(i%7&&i%11==0)/*将能被11整除但不能被7整除的数存入数组a中*/{*a=i;*n=*n+1;/*统计个数*/a++;}}知识点解析:本题考查的知识点如下:(1)指针的使用。(2)“%”运算符。(3)判断结构中多个条件的布尔运算。本题中,函数countValue()以指针为参数,这里就要涉及到指针的使用。a是指向数组的指针,初始时,指向数组的第一个元素。地址每加1时,依次指向后面的元素。一个数a若能被b整除,则a除以b取余得数为0。能被7或11整除,但不能被7和11同时整除,则有两种情况,能被7整除但不能被11整除,能被11整除但不能被7整除。这里就要用到多个条件的布尔运算。国家三级(数据库技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请补充完整程序,使得程序能实现以下功能:从文件IN.dat中读取200个整数至数组number中,求出最大数max及最大数的个数cnt和数组number中能被3整除或能被7整除的算术平均值ave(保留2位小数)。把结果max、cnt、ave输出到OUT.dat文件中。注意:部分程序、读数据函数read_dat(intnumber[200])及输出格式已给出。#include<conio.h>#include<stdio.h>#defineN200voidread_dat(intnumber[N]){inti,j;FILE*fp;fp=fopen("IN.dat","r");for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fp,"%d,",&number[i*10+j]);printf("%d",number[i*10+j]);}printf("\n");}fclose(fp);}voidmain(){intcnt,number[N],max;floatave;FILE*fw;inti,k;’longj=0;fw=fopen("OUT.dat","w");read_dat(number);/************************************************//************************************************/printf("\n\nmax=%d,cnt=%d,ave=%6.2f\n",max,cnt,ave);fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,ave);fclose(fw);}标准答案:max=number[0];for(i=1,k=0;i<N;i++){if(number[i]>max)max=number[i];if(number[i]%3==0||number[i]%7==0){j+=number[i];k++;}}for(i=0,cnt=0;i<N;i++)if(number[i]==max)cnt++;ave=(float)(j*100/k)/100;[解题思路]用整型变量max保存数组number中元素的最大值,首先把数组number的第一个元素number[0]存入max中;然后在for循环语句中当循环变量i从1递增到N-1时,对数组number中的每一个元素number[i]与max进行比较,如果表达式number[i]>max成立,则把数组元素number[i]的值存入变量max中;再用表达式number[i]%3==0||number[i]%7==0判断number[i]能否被3或7整除,如果表达式结果值为真,则把数组元素number[i]的值与变量j的值相加,同时计数变量k加1。退出循环后,变量max中的值就是数组number中元素的最大值,再用for循环语句对数组number中的每一个元素与max的值进行相等的判断,如果number[i]的值等于max,则计数变量cnt加1。最后用表达式(float)(j*100/k)/100求得数组number中能被3整除或能被7整除的算术平均值。知识点解析:暂无解析国家三级(数据库技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN4.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT4.DAT中。注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。【试题程序】#include<stdio.h>#include<memory.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/charmc[11];/*产品名称*/intdj;/*单价*/intsl;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell,O,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[11];inti;fp=fopen("IN4.DAT","r");for(i=O;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[i].mc,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核酸理论考试题及答案
- 汉字默写考试题及答案
- 国贸自考试题及答案
- 柜员高考试题及答案
- 关于腹泻考试题及答案
- 古文鉴赏考试题及答案
- 公关国考试题及答案
- 工会业务考试题及答案
- 高压叉车考试题及答案
- 服装概论考试题及答案
- 公路资料表格监理用表(A类表格)
- 苏教版数学四年级上册 小学数学报
- 北京市2025学年高二(上)第一次普通高中学业水平合格性考试物理试题(原卷版)
- 2023版 新版二十五项反措解读-继电保护
- 国际中文教育资源建设与优化研究
- 征迁岗位笔试题目及答案
- 共用道路纠纷协议书
- 食品免责协议书
- 25Hz相敏轨道电路系统配套器材一60课件
- 风力发电机组的建模与仿真技术研究
- DB44-T 1661-2021 河道管理范围内建设项目技术规程
评论
0/150
提交评论