版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家三级(网络技术)机试模拟试卷20(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义循环变量i,字符变量first和字符指针变量p,并使p指向字符串s。②把字符串s的第一个字符赋给first变量保存起来。③在for循环语句中,循环变量i从0开始,依次递增直到其值等于或大于(int)strlen(s)-1,把*(p+i+1)的值赋给+(p+i),实现把字符串s中的所有字符左移一个位置,循环结束后,把first的值赋给p[strlcn(s)-1],即把字符串的首字符移动到字符串的最后位置上。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、补充函数,要求实现如下功能;寻找并输出11~999之间的数m,它满足m、m2、m3均为回文数(回文数是指各位数字左右对称的整数),例如;12321,505,1458541等。满足上述条件的数如m=11时,m2=121,m3=1331都是回文数。请编写jsValue(longm)实现此功能。如果是回文数,则函数返回1,不是则返回0。最后,把结果输出到文件OUT.DAT中。注意;部分源程序已经给出。请勿改动主函数main()中的内容。试题程序;#include#include#includeintjsValue(longm){}main(){longm;FILE*out;out=fopen("OUT.DAT","w");for(m=11;m<1000;m++)if(jsValue(m)&&jsValue(m*m)&&jsValue(m*m*m)){printf("m=%41d,m*m=%61d,m*m*m=%8ld\n",m,m*m,m*m*m);fprintf(out,"m=%41d,m*m=%61d,m*m*m=%81d\n",m,m*m,m*m*m);}fclose(out);}标准答案:intjsVlue(longm){inti,str;half;chartemp[20];ltoa(m,temp,10);str=strlen(temp);half=str/2;for(i=0;i=half)return1;elsereturn0;}知识点解析:判断回文数,即比对该数字位置上的数是否相等,此时使用ltoa函数将数字进行拆分,拆分为各个单独的数字并放入字符数组中,然后进行比对。如果首位位置不相等,则退出循环,如果相等则继续比对,直到比较到中间位置时都相等,则是回文数,此时返回1。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①首先定义字符变量ch和无符号整型变量i、j、k。②对字符二维数组xx,在第一层for循环中,变量i从0开始,依次递增直到其值等于maxline,实现对文章每行的扫描,在第二层for循环中,变量j从0开始,依次递增直到其值等于strlen(xx[i]),即第i行的长度。在第三层循环语句中,变量k从j开始,依次递增直到其值等于strlen(xx[i]),对每一行中的数组元素xx[i][j]、xx[i][k]按照它们的ASCII码值的大小进行比较,如果xx[i][j]的ASCII码小于xx[i][k]的ASCII码,则两者交换,实现整篇文章中的字符按ASCII码值从大到小的顺序进行排序。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadDat()的功能是实现从文件IN35.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数SortCharD(),该函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT35.DAT中。例如,原文:dAe,BfCCCbbAA结果:fedCBA,bbCCAA原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WrteDat()的内容。试题程序:#include<Stdio.h>#include<String.h>#include<conio.h>charxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidSortCharD(){}voidmain(){Clrscr();if(ReadDat()){printf("数据文件IN35.DAT不能打开!\n\007");return;}SortCharD();WriteDat();}intReadDat(void){FILE*fp;inti=0;Char*p;if((fp:fOpen("IN35.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(){FILE*fp;inti;Clrscr();fp:fopen("OUT35.DAT","w");for(i:0;i<maxline;i++){printf("%s\",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}标准答案:voidSortCharD(){inti,j,k,strl;charch;for(i=0;i{strl=strlen(xx[i]);/*求各行的长度*/for(j=0;jfor(k=j+l;kif(xx[i][j]{ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}}}知识点解析:本题考查的知识点如下:(1)循环结构的嵌套。(2)字符的大小比较。(3)字符排序。本题以行为单位对文章进行处理,首先要确定每一行中字符的个数。这个操作可使用字符串处理函数strlen(char*str)来完成。对字符从大到小排序依据的是字符的ASCII码,在C语言中,字符量可参与任何整型运算,所以可以直接使用比较运算符进行比较。排序使用前面介绍的“选择排序法”。最后使用循环结构对文章中的每一行都进行以上的操作。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、对10个候选人进行选举,现有一个100条记录的选票文件ENG50.1N,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位候选人的记录内容均为字符0或1,1表示此人被选中,0表示此人未被选中,全选或全不选(空选票)均为无效的选票。给定函数ReadDat()的功能是把选票记录读入到字符串数组xx中。请编制函数CoutRs()来统计每个人的选票数并把得票数依次存入yy[0],jyy[9]中,最后调用函数WriteDat()把结果yy输出到文件OUT50.DAT中。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>charxx[100][11];intyy[10];intReadDat(void);voidWriteDat(void);voidCoutRs(void){}voidmain(){inti;for(i=0;i<10;i++)yy[i]=0;if(ReadDat()){printf("数据文件ENG50.IN不能打开!\n\007"return;}CoutRs();WriteDat();}intReadDat(void){FILE*fp;inti;chartt[13];if((fp=fopen("ENG50.IN","r"))==NULL)return1;for(i=0;i<100;i++){if(fgets(tt,13,fp)==NULL)return1;memcpy(xx[i],tt,10);xx[i][10]=0;}fclose(fp);return0;}voidWriteDat(){FILE*fp;inti;fp=fopen("OUTS0.DAT","w");for(i=0;i<10;i++){fprintf(fp,"%d\n",yy[i]);printf("第%d个人的选票数=%d\n",i+l,yy[i]);}fclose(fp);}标准答案:voidCoutRs(void){inti,j=0,k=0;char*str;for(i=0;i<100;i++){str=xx[i];/*指针str指向该行首地址*/j=0;while(*str!=0)if(*str==’1’)/*统计’1’的个数*/{j++;str++;/*取下一个字符*/}elsestr++;/*如果该字符不是’1’,则什么都不做,取下一个字符*/if(j!=0&&j!=10)/*如果既不是全选也不是空票,则为有效票*/{str=xx[i];/*指针str指向该行首地址*/k=0;while(*str)if<*str++==’1’)/*将每个人的得票数依次存入yy[0]到yy[9]中*/yy[k++]+=1;else{k++;str++;}}}}知识点解析:本题考查的知识点如下:(1)二维数组的操作。(2)指向数组的指针。在本题中,要先判断选票是否有效。因为记录存放在一个二位数组中,为了简便我们为数组的一组元素定义一个指向数组的指针,例如,char*p=xx[2]。初始时该指针指向该组的第一个元素,指针地址每加1,则指向下一个元素。这样就可以轻松地统计每一个选票。设一变量标记每一个选票中1的个数,若其不为0和10,则选票有效。若选票有效,则依次查看哪一个元素为1,在数组yy相应的元素上加1。使用循环实现对所有记录的访问。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现仅有一个不同点,即参与平均值计算的元素是数组xx[i]右移一位之后为奇数的元素,参考答案的第9条语句。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第6行,修改if条件语句的设置即可。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadData()负责将这若干个正整数并存入数组inBuf[]中。请编制函数findValue(),其功能要求;(1)求出这文件中共有多少个正整数totNum;(2)求出这些数中的各位数字之和是偶数的数的个数totCnt,以及满足此条件的这些数的算术平均值totleAverage,最后调用函数WriteData()把结果outBuf[]输出到文件OUT.DAT中。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#defineMAX200intinBuf[MAX];inttotleNum=0;/*文件IN.DAT中共有多少个正整数*/inttotleCnt=0;/*符合条件的正整数的个数*/doubletotleAverage=0.0;//平均值intReadData(void);voidWriteData(void);voidfindValue(void){}voidmain(){inti;system("CLS");for(i=0;i标准答案:voidfindValue(void){inti,j,k,temp,d[4];for(i=0;i0)//如果当前数大于零totleNum++;//则将总个数加1for(j=0;j<4;j++){temp;inBuf[i];//将要进行分解的数暂存入temp中for(k=0;k知识点解析:本题主要考查数位分解及数据平均值的求法。本程序的步骤是;1.将数值送入temp中。2.数位分解,由temp%10得到个位数;(temp/10)%10得到十位数,依此类推,可得到各数位上的数值。3.按照题目所给的条件筛选出数据。4.对选出的数据求平均值,由于本题中的数据量比较大,若采用先将各个值加起来再除以总个数来取平均的话,变量不能存储那么大的数据而导致溢出。本程序采用的方法是;N个数的平均值=[前(N-1)个数的平均值*(N-1)+第N个数]/N,采用这种递推的方法就避免了将大的数据存入变量中而产生溢出。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN72.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:把个位数字和千位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数cd(新十位数的十位数字是原4位数的百位数字,新十位数的个位数字是原4位数的十位数字),如果新组成的两个数均为偶数且两个十位数中至少有一个数能被9整除,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并计算满足上述条件的4位数的个数cnt,最后调用.写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT72.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函writeDat()的内容。试题程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsval(){{VoidreadDat(){inti;FILE*fp;fp=fopen("IN72.DAT","r");for(i=0;i<NAX;i++)fscanf(fp,"%d",&a[i]];fclose(fp);}main(){inti;readDat();jsVal()for(i=0;i<cnt;i++)printf("%d\n",b[i]);prIntf("\n");wrlteDat();}wrlteDat(){FILE*fp;inti;fp=fopen("OUT72.DAT","w");fprlrltf(fp,"%d\n",cnt);for(i=0;i<Cht;i++fprIntf(fp,"%d\n",h[i]);fclose(fp);}标准答案:voidjsVal(){ihti,thou,hun,ten,data,j;ihtab,cd;for(i=0;i<200;i++){thou=a[i]/1000;/*求四位数的千位数字*/hun=a[i]%1000/100;/*求四位数的百位数字*/ten=a[i]%100/10;/*求四位数的十位数字*/data=a[i]%10;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026国新控股(重庆)有限公司招聘投资经理、综合行政经理、风控经理等岗位7人考试备考试题及答案解析
- 2026浙江海康威视所属企业招聘考试备考试题及答案解析
- 2026浙江舟山市卫生健康系统直属事业单位招聘偏远海岛村级医疗机构中医医生类人员1人考试参考试题及答案解析
- 2026中国能建建筑集团海外成熟人才招聘2人考试备考试题及答案解析
- 2026浙江衢州市常山县气象局编外人员招聘1人考试备考试题及答案解析
- 2026湖北十堰市房县文化和旅游局公益性岗位招聘5人笔试备考试题及答案解析
- 2026年天府新区航空旅游职业学院单招综合素质考试模拟试题附答案详解
- 2026湖南益阳沅江市卫生事业单位编外临聘人员招聘9人笔试模拟试题及答案解析
- 2026重庆奉节县白帝镇人民政府招聘全日制公益性岗位人员3人考试备考题库及答案解析
- 2026中国科学院科技战略咨询研究科技发展战略研究所特别研究助理(博士后)招聘1人考试参考题库及答案解析
- 2026年数据管理局考试题库及实战解答
- 2024年集美大学马克思主义基本原理概论期末考试笔试真题汇编
- 2025年上海师范大学马克思主义基本原理概论期末考试笔试真题汇编
- 2026国家电投秋招面试题及答案
- 智启万物:全球AI应用平台市场全景图与趋势洞察报告
- 2025年高职植物保护(植物检疫技术)试题及答案
- 数字化背景下幼儿园教育评价反馈策略与实施路径研究教学研究课题报告
- 2026年中国科学院心理研究所国民心理健康评估发展中心招聘备考题库及答案详解(新)
- 全身麻醉后恶心呕吐的预防与护理
- 艾滋病初筛实验室标准
- 药物相互作用与不良反应预防解析讲座
评论
0/150
提交评论