




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家三级(网络技术)机试模拟试卷26(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadDat()的功能是实现从文件IN5.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ConvertCharA(),该函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。例如,原文:Adb.Bcdzaabck.LLhj结果:Aec.Bdeabbcdl.LLik原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>charxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidConvertCharA(void){main(){clrscr();if(ReadDat()){printf("数据文件IN5.DAT不能打开!\n\007");return;}ConvertCharA();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN5.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("OUT5.DAT","w");for(i=0;i<maxline;i++){printf("%skn",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclosefp);}标准答案:voidConvertCharA(void){inti,i,str;for(i=O;i<maxline;i++){str=strlen(XX[i]);/*求得当前行的字符串的长度*/for(j=0;i<str;j++)if(MX[i][j]==’z’)MX[i][j]=’a’;/*如果遇到的字符是小写字母z则改写成小写字母a*/elseif(xx[i][j]>=’a’&&xx[i][j]<=’y’)MX[i][j]+=1;/*如果该字符是从a到y的小写字母则改写为该字母的下一个字母*/}}知识点解析:本题要对二维数组中的字符元素按行来处理,因此,首先要求得当前行所包含的字符总个数,之后才可以利用一个循环米依次访问该行中的所有字符。当遇到一个字符时,先判断该字符是否是小写字母z,如果是,则把该字符改写成小写字母a;如果不是,则继续判断该字符是否是从a到y的小写字母,如果是,则改写为该字母的下一个字母(利用字符的ASCII码值来实现);如果不是,则不做任何的操作,接着去取下一个字符。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现有两个不同点:①要求统计的四位数的条件是“千位+百位=十位+个位”,参考答案的第18条语句修改if语句的判断条件即可。②将统计结果按从大到小的顺序排序,参考答案的第13条语句,修改两数组元素的大小比较符即可。另外,对于数据交换的整型变量tmp可以自定义其变量名。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数readData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是;把千位数字和十位数字重新组合成一个新的两位数(新两位数的十位数字是原四位数的千位数字,新两位数的个位数字是原四位数的十位数字),以及把个位数和百位数组成另一个新的两位数(新两位数的十位数字是原四位数的个位数字),新生成的两个两位数均为素数且新两位数均不为零。求满足条件的数,用count记录下符合条件的数的个数,并按照从大到小的顺序存人数组outBuf[]中。函数writeData()负责将outBuf[]中的数输出到文件OUT.DAT中,并且在屏幕上显示出来。注意;部分源程序已给出。程序中已定义数组;inBuf[NUM],outBuf[NUM],已定义变量;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,flag,ab,cd,abcd[2];for(i=0;i知识点解析:本题考查的主要是数位分解及排序。数位分解就是将n位数各个数位上的数值单独分离出来,将此n位数对10求余可以将个位上的数值分离出来;将此n位数除以10以后得到一个n-1位数,则此时n位数原来的十位就变成了n-1位数的个位,再将此n-1位数对10求余便可得到原13.位数的十位。依此类推,便可将n位数各个位上的数值分离出来。程序基本步骤是;1.将数值送入temp中。2.由temp%10得到个位数;(temp/10)%10得到十位数,依此类推,可得到各位上的数值。3.按照题目所给的条件筛选出数据。4.对选出的数据进行排序。本题判断素数的方法是固定的,但思路有很多,读者可根据自己的喜好来编写.程序,如可以自定义一个判断素数的函数,然后在if条件中直接调用此函数也可以达到目的。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编写函数num(intm,intk,intxx[]),该函数的功能是;将大于整数m且与m相邻的k个素数存人数组XX中传回。最后调用readWriteData()从IN.DAT文件中读取10组数据,分别得出结果,且把结果输出到文件0UT.DAT中。例如;114,则应输出;13171923注意;部分源程序已经给出。请勿改动主函数mainData()和输出函数readWriteData()的内容。试题程序;#include#includevoidreadWriteData();voidnum(intm,intk,intxx[]){}main(){intm,n,xxElOOO];printf("\nPleaseentertwointegers;");scanf("%d%d",&m,&n);num(m,n,xx);for(m=0;m标准答案:voidnum(intm,intk,intxx[]){intdata=m+1;//定义整形变量data,并赋初值m+1inthalf,n=0,i;while(1)//判断data是否为素数{half=data/2;for(i=2;i<=half;i++)if(data%i==0)break;if(i>half)//i>half说明i是素数{xx[n]=data;//将d放人数组xx中n++;//计数器加1}if(n>=k)//如果找到了k个满足的素数,则跳出循环break;data++;//继续找下一个素数}}知识点解析:num()函数的功能是将大于整数m且符合与m相邻的k个素数,存入数组xx[]中。本题中,在找到符合的素数后,将data放入数组XX中,计数器此时加1。利用循环来找到符合条件的素数,然后跳出循环继续寻找下一个素数。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN13.DAT中存有若干个(个数<200)4位数字的正整数,函数ReadDat()的功能是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:(1)求出该文件中共有多少个正整数totNum;(2)求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数WriteDat()把所求的结果输出到文件OUT13.DAT中。注意:部分源程序已给出请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include〈stdio.h>#include〈conio.h>#defineMAXNUM200intxx[MAXNUM];inttotNum=0;/*文件IN13.DAT中共有多少个正整数*/inttotCnt=0;/*符合条件的正整的个数*/doubletotPjz=0.0;/*平均值*/intReadDat(void);voidWritedat(void);voidCalValue(void){}main(){inti;clrscr();for(i=0;i〈MAXNUM;i++)xx[i]=0;if(ReadDat()){printf("数据文件IN13.DAT不能打开!\007\n");return;}CalValue();printf("文件IN1B.DAT中共有正整数=%d个\n",totNum);printf("符合条件的正整数的个数=%d个\n",totCnt);printf("平均值=%.21f\n",totPjz)Writedat();}intReadDat(void){FILE*fp;inti=0;if((fp=fopen("IN13.DAT","r"))==NULL)return1;while(!feof(fp)){fscanf(fp,"%d,",&xx[i++]);}fclose(fp);return0;}voidWriteDat(void){FILE*fp;fp=fopen("OUT13.DAT","w");fprintf(fp,"%d\n%d\n%.21f\n",totNum,totCnt,totPjz);fclose(fp);}标准答案:voidCalValue(void){inti,data;for(i=0;i〈MAXNUM;i++){if(!xx[i])continue;/*如果当前数为0,则结束本次循环,取下一个数*/if(xx[i]>0)totNum++;/*统计正整数的个数*/data=xx[i]>>1;/*将数右移一位*/if(data%2==0)/*如果右移1位后,产生的新数是偶数*/{totCnt++;totPjz+=xx[i];}/*统计这些数的个数,并将满足条件的原数求和*/}totPjz/=totCnt;/*求满足条件的这些数(右移前的值)的算术平均值*/}知识点解析:本题的解题思路是首先利用一个for循环来依次从数组中取得各数,由于题目要求数组中正整数的个数,因此,零不做任何处理,接着去取下一个数。只要某数大于零,则该数一定是正整数,这时就给变量totNum(正整数的个数)累加1,之后把该正整数右移一位后的结果临时保存在变量data中,再对这个临时变量进行是否偶数的判断。如果该临时变量中保存的值是偶数,则表明原数符合条件,就给变量totCnt(符合判断条件的正整数个数)累加1,并把当前的变量data右移前的原数的值累加到变量totPjz中,当所有符合判断条件的数都被找出后,再对totPjz进行求平均值的计算。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、下列程序的功能是:计算500~800之间素数的个数cnt,并按所求素数的值从小到大的/顷序,再计算其间隔加、减之和,即第1个素数-第2个素数十第3个素数-第4个素数+第5个素数……的值sum。请编写函数countValue()实现程序的要求,最后调用函数writeDaI()把结果cnt和sum输出到文件OUT66.DAT中。注意:部分源程序已给出。请勿改动主函数main()和写函数writeDAT()的内容。试题程序;#include<stdio.h>intcnt,sum;voidcountValue(){}voidmain(){cnt=sum=0;countValue();printf("素数的个数=%d\n",ont);printf("按要求计算得值=%d\n",sum);writeDAT();}writeDAT(){FILE*fp;fp=fopen("OUT66.DAT","w");fprintf(fp,"%d\n%d\n",cnt,sum);fclose(fp);}标准答案:voidcountValue(){inti,j,half,yy[100];for(i=500;i<800;i++){half=i/2;for(j=2;j<=half;j++);if(i%j==0)break;/*如果该数不是素数,则退出此层循环*/if(j>=half)/*如果该数是素数,则将该数存入数组yy中*/{yy[cnt]=i;cnt++;/*统计素数的个数*/}}for(i=0,j=-1;i<cnt;i++)/*计算这些素数的间隔加、减之和*/{j=j*-1;sum+=j*yy[i];}}知识点解析:本题考查的知识点如下:(1)利用循环和“%”进行素数的判断。(2)间隔加、减的实现。在本题中,首先要找出判断素数的方法。若一个数a依次除以从2到a/2的数所得的余数都不是0,则这个数是素数。用此方法依次判断出从500到800区间内的素数。由题意可知,第1,3,5…个素数计算加法,第2,4,6…个素数计算减法。减去1个正整数就是加上负的这个正整数,所以可以将这个正整数乘以-1进行加法。使用循环实现求和,在奇数次的循环中,每个素数乘以1,偶数次的循环中,素数乘以-1,就可实现间隔加、减。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadDat()的功能是实现从文件ENG9.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,替代关系:f(p)=p*11mod256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)的值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出,原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidencryptChar(){}main(){clrscr();if(ReadDat()){printf("数据文件ENG9.IN不能打开!\n\007");return;}encryptChar();WriteDat();}intReadDat(void){FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("ENG9.IN","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;fp=fopen("PS9.DAT","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}标准答案:voidencryptChar(){inti;char*pf;for(i=0;i<maxline;i++)pf=xx[i];/*指针pf指向当前行的首地址*/whilie(*pf!=0){if(*pf%2==0||*pf*11%256<=32);/*如果原字符的ASCII值是偶数或计算后的值小于等于32,则该字符不变*/else*pf=*pf*11%256;/*否贝Jj将所对应的字符进行替代*/pf++;/*指针pf指向下一个字符*/}}}知识点解析:本题主要考查用指针变量来控制字符数组,由于要对已有二维字符数组的所有元素逐个处理,因此,需要定义一个字符指针变量来控制原二维数组的各行。当前行如果确定下来,用指针的移动就可以依次扫描该行的所有字符元素,每得到一个字符就对它进行条件判断。根据题意,条件用“if(*pf%2++0||*pf*11%256<=32)”来实现,如果该字符不满足上述条件,就用一个新的字符来替代,新的字符是当前字符乘以11的结果再去与256求余数,处理完毕后,指针去取下一个字符。如果该字符满足所给条件,将不做任何操作,指针直接下移,去取下一个字符,对下一个字符进行处理。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN44.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数isValue(),其功能是:求出千位数上的数减百位数上数减十位数上的数减个位数上的数大于零的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT44.DAT文件中。例如:9123,9-1-2-3>0,则该数满足条件,存入数组b中,且个数cnt=cnt+1。9812,9-8-1-2<0,则该数不满足条件,忽略。注意:部分源程序已给出。程序中已定义数组:a[300],b[300],己定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>inta[300],b[300],cnt=0;jsValue(){}main(){ihti;readDat();jsValue();writeDat();for(i=0;i<cnt;i++)printf("b[%d]=%d\n",i,b[i]);}readDat(){FILE*fp;inti;fp=fopen("IN44.DAT","r");printf("cnt=%d\n",cnt);for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FIL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核心业务外包合同
- 大学生艾特莱斯创新创业
- 小班教案:安全乘车
- 护理管理培训
- 人事部实习报告总结模版
- 阿图什市2024-2025学年数学三下期末经典试题含解析
- 阿荣旗2025届数学三下期末考试试题含解析
- 陇南师范高等专科学校《英语写作1》2023-2024学年第二学期期末试卷
- 二零二四年9月份3D打印技术重现壶口瀑布地质构造教学实验
- 陕西国际商贸学院《林产化学工艺学》2023-2024学年第二学期期末试卷
- 大型设备的吊装技术课件
- 各种网络安全设备巡检报告汇总
- 拖欠货款合同纠纷起诉状范本
- 爱美的小公鸡(共22张)课件
- 碳酸丙烯酯法脱碳工艺工程设计
- 巧用绘本提升自闭症儿童语言表达能力
- 计数型量具分析报告(Excel带计算KAPPA公式)
- 丽声北极星分级绘本第三级下 A Long Wait课件
- 沥青路面工程施工监理细则
- 新规范四统表(范本)
- 不稳定性心绞痛和非ST段抬高心肌梗死诊断与治疗指南(全文)
评论
0/150
提交评论