




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家三级(网络技术)机试模拟试卷12(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件in81.dat中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out81.dat文件。例如:7153,7+1=5+3,则该数满足条件,计算严均值pjz1,且个数cnt=cnt+1。8129,8+1≠2+9,则该数不满足条件计算平均值pjz2。注意:部分源程序已给出。程序中己定义数组:a[300],b[300],已定义变量:cnt,pjz1,pjz2。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>inta[300],cnt=0;doublepjz1=0.0,pjz2=0.0;voidjsValue(){}main(){inti;readDat();jsValue();writeDat();printf("cnt=%d\n满足条件的平均值pjz1=%7.21f\n不满足条件的平均值pjz2=%7.21f\n",cnt,pjz1,pjz2);}readDat(){FILE*fp;inti;fp=fopen("in81.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("out81.dat","w");fprintf(fp,"%d\n%7.21f\n%7.21f\n",cnt,pjz1,pjz2);fclose(fp)}标准答案:voidjsValue(){inti,thou,hun,ten,data,n=0;for(i=0;i<300;i++){thou=a[i]/1000;/*求四位数的千位数字*/hun=a[i]%1000/100;/*求四位数的百位数字*/ten=a[i]%100/10;/*求四位数的十位数字*/data=a[i]%10;/*求四位数的个位数字*/if(thou+hun==ten+data)/*如果千位数加百位数等于十位数加个位数*/{cnt++;/*统计满足条件的数求和*/pjz1+=a[i];/*将满足条件的数求和*/}else{n++;/*否则统计不满足条件的数的个数*/pjz2+=a[i];/*将不满足条件的数求和*/}}pjz1/=cnt;/*求满足条件的数的平均值*/pjz2/=n;/*求不满足条件的数平均值*/}知识点解析:本题考查的知识点如下:(1)特殊运算符“%”及“/”的使用。(2)循环结构及选择结构的使用。在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数字。这里借助特殊运算符号“%”——取余和“/”——整除,拆分方法略。然后判断“千位数+百位数=十位数+个位数”。依次求得符合条件的数的个数及其平均值。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadDat()的功能是实现从文件IN73.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数CovertCharD(),该函数的功能是:以行为单位把字符串中的所有小写字母改成该字母的上一个字母,如果是字母a,则改成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WriteDat()把结果XX输出到文件OUT73.DAT中。例如:原文AdbBcdzaabckLLHj结果AcaBbcyz,ZabjLLgi原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>charxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidCovertCharD(){}voidmain(){clrscr();if(ReadDat()){printf("数据文件IN7.DAT不能打开\n\007");return;}CovertCharD();WriteDat();}intReadDat(){FILE*fp;inti=0;char*p;if((fp=fopen("IN73.DAT","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],’\n’);if(p)*p=0;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE;fp;inti:clrscr();fp=fopen("OUT73.DAT","N");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,”%s\n",xx[i]);}fclose(fp);}标准答案:voidCovertCharD(){ihti;char*pf;for(i=0;i<maxline;i++){pf=xx[i];/*指针pf指向各行的首地址*/while(*pf)if(*pf==’a’)/*如果是字母a,则改成字母z*/{*pf=’z’;pf++;/*指向下一个字符*/}elseif(*pf>=’b’&&*pf<=’z’)/*小写字母’b’到’z’,改成该字母的上一个字母*/{*pf-=1;pf++;/*指向下一个字符*/}elsepf++;/*如果不满足条件,则不变字符,指向下一个字符*/}}知识点解析:本题考查的知识点如下:(1)字符串的计算。(2)循环结构的使用。(3)使用指针实现对数组的访问。本题中,将字符存放在二维数组中,以行为字符处理的基本单位,可以定义一个指针,指向每一行字符。初始时,指针指向每一行的第一个元素,增加指针地址就可以实现对一行数据的完全访问。要将所有小写字母改成它的前一个字母,小写字母的ASCⅡ码是连续的,可直接将其ASCⅡ码减1,则得要求的字符。注意;字母a要单独处理,其他字符保持不变。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是;把千位数字和个位数字重新组成一个新的两位数(新两位数的十位数字是原四位数的千位数字,新两位数的个位数字是原四位数的个位数字),把百位数字和十位数字组成另一个新的两位数(新两位数的十位数字是原四位数的百位数字,新两位数的个位数字是原四位数的十位数字),新组成的两个两位数均是奇数并且两个两位数中至少有一个数能被5整除,同时两个新数十位数字均不为零。求出满足条件的数,用count记录下符合条件的数的个数并按照从小到大的顺序存人数组outBuf[]中。函数WriteData()负责将outBuf[]中的数输出到文件OUT.DAT中并且在屏幕上显示出来。注意;部分源程序已给出。程序中已定义数组;inBuf[200],outBuf[200],已定义变量;count。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#defineNUM200intinBuf[NUM],outBuf[NUM],count=0;voidReadData();voidWriteData();voidfindValue(){}voidmain(){inti;ReadData();findValue();WriteData();printf("count=%d\n",count);for(i=0;i标准答案:voidfindValue(){inti,j,k,d[43,temp,ab,cd;for(i=0;ioutBuf[j])//如果第i位比它后面的数大,(//则将两者进行交换,也即将更小的值放到第i位temp=outBuf[i];outBuf[i]=outBuf[j];outBuf[j]=temp;}}知识点解析:本题主要考查数位分解及排序。数位分解就是将n位数上各个数位上的数值单独分离出来。解决此问题的方法是;将n位数对10求余可以将个位上的数值分离出来。将这个n位数除以10以后得到一个n-1位数,则此时n位数原来的十位就变成了n-1位数的个位,再将此n-1位数对10求余便可得到原n位数的十位。依此类推,按照同样的方法便可将n位数各个数位上的数值分离出来。程序步骤;1.将数值送入temp中。2.由temp%10得到个位数;(temp/10)%10得到十位数……如此可得到各位上的数值。3.按照题目所给的条件选出数据。4.对选出的数据进行排序,排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN39.DAT中存有300个四位数,函数ReadData()负责把这些数存人数组inBuf[]中,请编制一函数findValue(),其功能是;统计出这300个数中素数的个数count,再把所有满足此条件的四位数依次存人数组outBuf[]中,然后对数组outBuf[]的四位数按从小到大的顺序进行排序,函数WriteData()负责把数组outBuf[]中的数输出到OUT.DAT文件中。例如;3191是素数,则该数满足条件,存人数组outBuf[]中,且个数count=count+1。1234是非素数,则该数不满足条件,忽略。注意;部分源程序已给出。程序中已定义数组;inBuf[300],outBuf[300],已定义变量;count。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#defineNUM300intinBuf[NUM],outBuf[NUM],count=0;voidReadData();voidWriteData();voidfindValue(){}voidmain(){inti;ReadData();findValue();WriteData();printf("count=%d\n",count);for(i=0;i标准答案:voidfindVaiue(){inti,j,temp,flag;for(i=0;ioutBuf[j])/*如果第i位比它后面的数大,则将两者进行交换,也即将更小的值放到第i位*/{temp=outBuf[i];outBuf[i]=outBuf[j];outBuf[j]=temp;}}知识点解析:本题主要考查素数的判断和排序问题。1.判断是否为素数;素数的定义是;若一个数除了其自身和1再没有其他的除数,则该数就是素数。故用其定义可以很容易判断。在2到所判断数之间的数进行扫描,若有一个除数,则该数就不是素数。2.排序;排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、在文件in33.dat中有200个正整数,且每个正整数均在100至9999之间。函数readDat()的功能是读取这200个数并存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按照每个数的后3位的大小进行升序排列,将排序后的前10个数存入数组bb中,如果数组比中出现后3位相等的数,则对这些数按原始4位数据进行降序排列。最后调用函数writeDat()把结果比输出到文件out33.dat中。例如:处理前60125099901270258088处理后90126012702580885099注意:部分源程序已给出。请勿改动主函数main()、读函数readDat)和写函数writeDat()的内容。试题程序:#include9include#includeintaa[200],bb[10];voidreadDat();voidwriteDat();voidjsSort(){}voidmain(){readDat();jsSort();writeDat();}voidreadDat(){FILE*in;inti;in=fopen("in33.dat","r");for(i=0;i<200;i++)fscanf(in,"%d",&aa[i]);fclose(in);}voidwriteDat(){FILE*out;inti;clrscr();out=fopen("out33.dat","w");for(i=0;i<10;i++){printf("i=%d,%d\n",i+l,bb[i]);fprintf(out,"%d\n",bb[i]);}fclose(out);}标准答案:voidjsSort(){inti,j,data;for(i=O;i<199;i++)for(j=i+l;j<200;j++){if(aa[ii%1000>aa[j]%1000)/*按照每个数的后3位的大小进行升序排例*/{data=aa[i];aa[ii=aa[j];aa[j]=data;}elseif(aa[i]%lOOO==aa[j]%1000)/*如果后3位数值相等,则对这些数值按原始4位数据进行降序*/if(aaIi]<aa[j]){data=aaIii;aa[ii=aa[j];aa[j]=data;}}for(i=O;i<10;i++)/*将排好序的前十个数存入数组bb中*/bb[i]=aa[i];知识点解析:本题考查的知识点如下:(1)循环结构的嵌套。(2)选择结构的嵌套。(3)特殊运算符“%”的使用。(4)数据的升降序排列。在该题中,首先要解决的问题是如何把题中4位数转换成符合要求的3位数。这里要用到一个比较特殊的运算符%,它的功能是取余。将4位数除以1000取余则得到要求的3位数。根据题意,若后3位相等,则按照原数据进行降序排序,所以在这里要加一个选择结构进行判断。对数据进行排序,可以使用最简单的“选择排序法”。即第一次从第一个数据开始和所有后面的数据进行比较,与比它大(小)的数据交换位置,将数据中最大(小)的数交换到最前面。第二次从第二个数据开始与后面的数据进行比较,将此次比较中最(小)的数据交换至第二个位置,直至最后一个数据。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadData()负责从文件IN.DAT中读取1000个十进制整数到数组inBuf[]中。请编制函数Compute()分别计算出inBuf[]中奇数的个数odd、偶数的个数even、平均值ave及方差tot_v的值,函数WriteData()负责把结果输出到OUT.DAT文件中。计算方差的公式如下;原始数的存放格式是;每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#include#defineMAX1000intinBuf[MAX],odd=0,even=0;doubleave=0.0,tot_v=0.0;voidWriteData(void);intReadData(void){FILE*fp;inti,j;if((fp=fopen("IN.DAT","r"))==NULL)return1;for(i=0;i<100;i++){for(j=0;j<10;j++)fscanf(fp,"%d,",&inBuf[i*10+j]);fscanf(fp,"\n");if(feof(fp))break;}fclose(fp);return0;}voidCompute(void){}voidmain(){inti;for(i=0;i标准答案:voidCompute(void){inti;for(i=0;i知识点解析:本题主要考查平均值和方差的计算问题。1.求平均值;由于本题中的数据量比较大,若采用先将各个值加起来再除以总个数来取平均的话,变量不能存储那么大的数据而导致溢出。本题的程序采用的方法是;N个数的平均值=[前(N-1)个数的平均值*(N-1)+第N个数]/N,采用这种递推的方法就避免了将大的数据存入变量中而产生溢出。2.求方差;按照所给公式,将数值代入计算即可。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是;若一个四位数的千位数上的值小于等于百位数上的值,百位数上的值小于等于十位数上的值,以及十位数上的值小于等于个位数上的值,并且此四位数是偶数,则该数即为所要求的数。求出符合条件的数,按照从小到大的顺序存人数组outBuf[]中,并用count记录下符合条件的数的个数。函数WriteData()负责将outBuf[7中的数输出到文件OUT.DAT中并且在屏幕上显示出来。注意;部分源程序已给出。程序中已定义数组;inBuf[200],outBuf[200],已定义变量;count。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#defineNUM200intinBuf[NUM],outBuf[NUM],count=0;voidReadData();voidWriteData();voidfindValue(){}voidmain(){inti;ReadData();findValue();WriteData();printf("count=%d\n",count);for(i=0;i标准答案:voidfindValue(){inti,j,k,d[4],temp;for(i=0;ioutBuf[j])/*如果第i位比它后面的数大,则将两者进行交换,也即将更小的值放到第i位*/{temp=outBuf[i];outBuf[i]=outBuf[j];outBuf[j]=temp;}}知识点解析:本题主要考查数位分解及排序。数位分解就是将n位数上各个位上的数值单独分离出来。解决此问题的方法是;将n位数对10求余可以将个位上的数值分离出来。将这个n位数除以10以后得到一个n-1位数,则此时n位数原来的10位就变成了n-1位数的个位,再将此n-1位数对10求余便可得到原13位数的10位。依此类推,按照同样的方法便可将n位数各个数位上的数值分离出来。程序步骤;1.将数值送入temp中。2.由temp%10得到个位数;(temp/10)%10得到十位数……如此可得到各位上的数值。3.按照题目所给的条件选出数据。4.对选出的数据进行排序,排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有一篇英文文章,函数ReadData()负责将IN.DAT中的数据读到数组inBuf[][]中。请编制函数replaceChar(),该函数的功能是按照指定规则对字符进行替换。变换后的值仍存入inBuf[][]中。函数WriteData()负责将inBuf[][[]中的数据输出到文件OUT.DAT中并且在屏幕上打出。替换规则为;先对字符的ASCII码按公式y=(a*11)mod256进行运算(a为某一字符的ASCII码值,y为变换后的ASCII码值),如果计算后y的值小于等于32或y对应的字符是数字0~9,则字符保持不变,否则用y代替a。注意;部分源程序已给出。原始数据文件存放的格式是;每行的宽度均小于80个字符。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#include#include#defineLINE50#defineCOL80charinBuf[LINE][COL+1];inttotleLine=0;//文章的总行数intReadData(void);voidWriteData(void);voidreplaceChar(){}voidmain(){system("CLS");if(ReadData()){printf("IN.DATcan’tbeopen!\n\007");return;}replaceChar();WriteData();}intReadData(void){FILE*fp;inti=0;char*P;if((fp=fopen("IN.DAT","r"))==NULL)return1;while(fgets(inBuf[i],COL+1,fp)!=NULL){P=strchr(inBuf[i],’\n’);if(p)*P=’\0’;i++;}totleLine=i;fclose(fp);return0;}voidWriteData(void){FILE*fp;inti;fp=fopen("OUT.DAT","w");for(i=0;i标准答案:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度户外亲子活动安全保障合同
- 二零二五年度酒店消防安全责任免除协议范本
- 2025年度企业内部退股操作细则协议书
- 娱乐场所装修改造合同样本
- 市政路灯照明工程项目可行性研究报告
- 企业餐饮合作合同范本
- 贵州碧江搬迁计划文件
- 石料、石沫生产项目可行性研究报告建议书立项
- 电子商务在电子烟行业中的应用与影响
- 强力清壳机行业市场发展及发展趋势与投资战略研究报告
- 2021年陕西西安亮丽电力集团有限责任公司招聘笔试试题
- 高中英语-Studying abroad教学课件设计
- 原材料取样检测安全操作规程
- 创新思维与方法(第2版)PPT全套完整教学课件
- (5.3.2)-2.2杂草的分类农田杂草及防除学
- 人教部编道德与法治五年级下册单元计划
- 天津武清区事业单位考试真题2022
- 铁路营业线施工安全管理培训课件
- 旅行社运营实务电子课件 1.2 了解旅行社核心业务部门
- 综合交通运输体系认知
- GM/T 0115-2021信息系统密码应用测评要求
评论
0/150
提交评论