版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家三级(网络技术)机试模拟试卷11(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现仅有一个不同点,即要求统计的四位数的条件是“个位+千位=百位+十位”,参考答案的第8条语句,修改if条件语句的判断条件即可,对于数据交换的整型变量tmp可以自定义其变量名。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN6.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/charmc[il];/*产品名称*/intdj;/*单价*/ihtsl;/*数量*/longSe;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){main(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[11];inti;fp=fopen("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);chi4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);chi5]=0;sell[ii.sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(){FILE*fp;inti;fp=fopen("OUT6.DAT","w");for(i=0;i<100;i++){fprintf(fp,"%s%s%4d%5d%101d\n",sell[ii.dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}标准答案:voidSortDat(){inti,j;PROxy;for(i=O;i<99;i++)for(j=i+1;j<100;i++)if(strcmp(sell[i).mc,sell[j].mc)>0)/*按产品名称从小到大进行排列*/{xy=sell[i];sell[i]=sell[i];sell[j]=xy;}elseif(strcmp(sell[i].mc,sell[j]/mc)==0)/*若产品名称相同*/if(sell[i].ie>sell[j].je)/*则按金额从小到大进行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;)}知识点解析:本题是有关结构体数组的排序问题,可以用选择法来实现。用第一个元素的产品名称依次和它后面的元素的产品名称进行比较,如果发现当前元素的产品名称比后面的某个元素的产品名称对应字符的ASCII码大(这里用到了字符串比较函数strcmp()),则交换这两个元素的位置,继续和后面的其他元素进行比较,最终在第一个元素中存放的是产品名称最小的元素。以此类推,就实现了从小到大排序的功能。注意:这里要进行交换的是两个结构体变量,而不是它们的某一个域,因此,要借助第三个结构体变量来充当中间容器。若产品名称相同,则要按照金额从小到大进行排序。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编写函数countValue(),其功能是;选出100~1000M的所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如191)。计算并输出上述这些素数的个数count,以及这些素数值的和sum。函数WriteData()负责把结果输出到OUT.DAT文件中。注意;部分源程序已给出。请勿改动主函数main()和写函数WriteData()的内容。试题程序;#includeintcount,sum;voidWriteData();voidcountValue(){}voidmain(){count=sum=0;countValue();printf("count=%d,sum=%d\n",count,sum);WriteData();}voidWriteData(){FILE*fp;fp=fopen("OUT.DAT","w");fprintf(fp,"%d\n%d\n",count,sum);fclose(fp);}标准答案:voidcountValue(){inti,j,d[3],flag;for(i=100;i<1000;i++){flag=0;for(j=2;j知识点解析:本题主要考查素数的判断及数位分解问题。1.判断是否为素数;素数的定义是;若一个数除了其自身和1再没有其他的除数,则该数就是素数。故用其定义可以很容易判断。在2到所判断数之间的数进行扫描,若有一个除数,则该数就不是素数。2.数位分解;将n位数上各个位上的数值单独分离出来。解决此问题的方法是;将n位数对10求余可以将个位上的数值分离出来。将这个n位数除以10以后得到一个n-1位数,则此时n位数原来的10位就变成了n-1位数的个位,再将此n-1位数对10求余便可得到原n位数的十位。依此类推,按照同样的方法便可将n位数各个位上的数值分离出来。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第8行进行修改即可。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件in70.dat中存有若干个(个数<200)4位数字的正整数,函数ReadDat()是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求是:(1)求出这个文件中共有多少个正整数totNum。(2)求这些数右移一位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz。最后调用函数WriteDat()把所有结果输出到文件out70.dat中。注意:部分源程序己给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<conio.h>#defineMAXNUM200ihtxx[MAXNUM];inttotNum=0;inttotCnt=0;doubletotPjz=0.0;intReadDat(void);voidWriteDat(void);voidCalValue(void){}voidmain(){inti;clrscr();for(i=0;ixx[i]=0;if(ReadDat()){printf("数据文件IN70.DAT不能打开!\007\n");return;}CalValue();printf("文件IN70.DAT中共有正整数=%d个\n",totNum);printf("符合条件的正整数的个数=%d个\n",totCnt);printf("平均值=%.21f\n",totPjz);WriteDat();intReadDat(void){FILE*fp;ihti=0;if((fp=fopen("IN70.DAT","r"))==NULL)return1;while(!feof(fp)){fscanf(fp,"%d",&xx[i++]);}fclose(fp);return0;}voidWriteDat(void){FILE*fp;fp=fopen("OUT70.DAT","w");fprintf(fp,"%d\n%d\n%.21f\n",totNum,totCnt,totPjz);fclose(fp);}标准答案:voidCalValue(void){inti,data;for(i=0;i{if(!xx[i])break;/*如果数为0,则表示数组存的数已经结束,退出循环*/if(xx[i]>0)totNum++;/*统计正整数的个数*/data=xx[i]>>1;/*将数右移一位*/if(data%2)/*如果产生的新数是奇数*/{totCnt++;/*统计满面足条件的数的个数*/totPjz+=xx[i];/*求满足条件的数的总和*/}}totPjz/=totCnt;/*求满足条件的数的平均值*/知识点解析:本题考查的知识点如下:(1)右移运算符“>>”的使用。(2)数组结束的判断和强行退出一层循环结构。(3)特殊运算符“%”的使用。在本题中,并没有给出确切的数据个数,足以数据的最大个数定义的数组。在主函数中,给所有的数组成员赋初值为0,而从文件中读取得数据是正整数,所以只要数组的某个元素为0,则说明数组存的数据已经结束。此时就可以结束循环结构。这里要使用右移运算符实现数据的右移位,右移运算符是双目运算符。运算符左侧是要移的数据,右侧是移动的位数。右侧移出的数据(低位数据)舍弃。1个数除以2取余所得的数是1,则这个数足奇数。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN39.DAT中存有300个四位数,函数ReadData()负责把这些数存人数组inBuf[]中,请编制一函数findValue(),其功能是;求出这些四位数中是素数的个数count,再求出所有满足此条件的四位数的平均值averagel,以及所有不满足此条件的4位数的平均值average2,并通过函数WriteData()把结果输出到0UT.DAT文件中。例如;3191是素数,则该数满足条件,计算平均值averagel,且个数count=count+l。1234是非素数,则该数不满足条件,计算平均值average2。注意;部分源程序已给出。程序中已定义数组;inBuf[300],outBuf[300],已定义变量;count。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#defineNUM300intinBuf[NUM],count=0;doubleaveragel=0,average2=0;voidReadData();voidWriteData();voidfindValue(){}voidmain(){ReadData();findValue();WriteData();printf("count=%d\naveragl=%7.21fknaverag2=%7.21fkn",count,averagel,average2);}voidReadData(){FILE*fp;inti;fp=fopen("IN.DAT","r");for(i=0;i标准答案:voidfindValue(){inti,j,flag,count_no=0;for(i=0;i知识点解析:本题主要考查素数的判断和平均值计算问题。1.判断是否为素数;素数的定义是;若一个数除了其自身和1再没有其他的除数,则该数就是素数。故用其定义可以很容易判断。在2到所判断数之间的数进行扫描,若有一个除数,则该数就不是素数。2.求平均值;由于本题中的数据量比较大,若采用先将各个值加起来再除以总个数来取平均的话,变量不能存储那么大的数据而导致溢出。本题的程序采用的方法是;N个数的平均值=[前(N-1)个数的平均值*(N-1)+第N个数]/N,采用这种递推的方法就避免了将大的数据存入变量中而产生溢出。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共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或大于130,则字符保持不变,否则用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()){print{("IN.DATcan’tbeopen!\n\007");return;}replaceChar();WriteData();}intReadData(void){FILE*fp;inti=0,j=0;char*P;if((fp={open("IN.DAT","r"))==NULL)return1;while({gets(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标准答案:voidreplaceChar(){inti,j,len;chary;for(i=0;i130)continue;elseinBuf[i][j]=y;//按条件来转换}}}知识点解析:本题主要考查字符与其对应的ASCII码之间的转换及对ASCII码进行操作。先计算出每行字符串的长度,再根据替换规则进行相应的替换。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①因为要进行字符之间的互换,所以定义局部字符变量ch。定义循环变量i、j、k。②在第一层for循环中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度机械设备制造修理人员真题附完整答案详解(典优)
- 2024-2025学年唐山工业职业技术学院单招《数学》题库及参考答案详解(新)
- 2024-2025学年度临床执业医师能力提升B卷题库及完整答案详解(考点梳理)
- 2024-2025学年度反射疗法师大赛理论自我提分评估带答案详解(能力提升)
- 2024-2025学年医师定期考核高分题库附答案详解(综合题)
- 2024-2025学年度中医执业医师检测卷及完整答案详解(易错题)
- 2024-2025学年度医学检验(士)能力检测试卷【重点】附答案详解
- 2024-2025学年度冶金工业技能鉴定能力提升B卷题库及答案详解(夺冠)
- 2024-2025学年度医学检验(士)过关检测试卷含完整答案详解(典优)
- 2024-2025学年度医院三基考试试题及参考答案详解【模拟题】
- 《婚礼策划》课件
- 11《一起来种太阳花》 (教案)-二年级劳动北师大版
- 木质长廊施工方案
- 中药塌渍治疗课件
- 《达利超现实主义》课件
- 部编版五年级下册《道德与法治》全册表格式教案
- 2025国家国防科技工业局某事业单位招聘15人历年高频重点提升(共500题)附带答案详解
- 环境应急管理知识培训
- 2024年抚州职业技术学院单招职业适应性测试题库带答案
- 混凝土新业务员培训教材
- 湖北中小学生命安全教育课程标准
评论
0/150
提交评论