




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家三级(网络技术)机试模拟试卷28(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数readDat()是从文件in71.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数JsSon(),其功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数writeDat()把结果xx输出到文件out71.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCⅡ值降序排序,右边部分按字符的ASCⅡ值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。例如:位置012345678源字符串abcdhgfe123498765处理后的字符串dcbaefgh432195678注意:部分源程序已给出。请勿改动主函数main()、读函数readDat()和写函数writeDatO的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>charxx[20][80];voidisSoYt(){}voidmain(){readDat();isSort();writeDat();{readDat(){FILE*in;inti=0;char*p;in=fopen("in71.dat","r");while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],’\n’);if(p)*p=0;i++;}fclose(in);}writeDat(){FILE*out;inti;clrscr();Out=fopen("out71.dar","w");for(i=0;i<20;i++){printf("%s\n",xx[i]);fprintf{out,"%s\n",xx[i]);}fclose(out);}标准答案:voidjsSort(){ihti,j,k,strl,half;charch;for(i=0;i<20;i++){strl=strlen(xx[i]);/*求各行字符串的总长度*/half=strl/2;/*求总长度的一半*/for(j=0;j<half-1;j++)/*左边部分按字符的ASCII值降序排序*/for(k=j+l;k<half;k++)if(xx[i][j]<xx[i][k]){ch=xx[i][j];xx[i][j~]=xx[i][k];xx[i][k]=ch;}if(strl%2)/*如果原字符串长度为奇数,则跳最中间的字符,使之不参加排序*/half++;for(j=half;j<strl-1;j++)/*右边部分按字符的ASCII值升序排序*/for(k=j+l;k<strl;k++)if(xx[i][j]>xx[i][k]){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}}}知识点解析:本题考查的知识点如下:(1)二维数组的访问和下标的控制。(2)字符的ASCII码的比较。(3)字符的排序。本题将数据按行存入到二维数组xx中,行数为数组的第1个下标,每行字符的个数为数组的第2个下标。因为以行为字符串处理的单位,所以要先求得一行字符串的长度。字符可以参加任何整数运算,实际上是字符的ASCII码参与了运算,所以町以直接使用比较运算符对字符进行比较。对从0到(长度/2-1)的字符进行降序排序(数组的下标从0开始)。若长度为奇数,则再从(长度/2+1)开始(跳过最中间的字符)到最后1个字符进行升序排列。否则,从(长度/2)开始到最后1个字符进行升序排列。字符排序使用“选择排序法”,最后使用循环实现对每行数据的处理。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请补充函数ReadData()实现从文件IN.DAT中读取1000个十进制整数到数组xx[]中;请函数Compute()分别计算出XX中偶数的个数even、奇数的平均值avel、偶数的平均值ave2以及方差totfc的值,最后调用函数WriteData()把结果输出到OUT.DAT文件中。计算方差的公式如下;设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。原始数据文件存放的格式是;每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)注意;部分源程序已给出。请勿改动主函数main()和输出数据函数WriteData()的内容。试题程序;#include#include#include#defineMAX1000intxx[MAX],odd=0,even=0;doubleavel=0.0,ave2=0.0,totfc=0.0;voidWriteData(void);intReadData(void){inti;FILE*fp;if((fp=fopen("IN.DAT","r"))==NULL)return1;//编制函数ReadData()的部分fclose(fp);return0;}voidCompute(void){inti,yy[MAX];for(i=0;i标准答案:for(i=0;i知识点解析:本题考查文件的操作、奇偶判断和数学公式的计算。函数ReadData的作用是将从文件中读取数据存入数组xx中,因为数据存放入文件的格式是每个数据被逗号隔开,所以fscanf(fp,"%d,",&xx[i])语句中字符串"%d,"中要加入逗号。函数Compute的作用是计算方差,思路是首先顺序读取数组XX中的结点,若是偶数累加存入ave2,个数存入even,若不是偶数(即为奇数)累加结果存入avel,个数存入odd。然后计算奇数和偶数的平均数,利用循环结构依次读取存放偶数的数组yy,计算方差totfc。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是对四位数的筛选条件有所不同,体现在3个方面:新组合的第一个数小于第二个数,可通过比较运算符进行判断;整除关系的判断以及奇偶数的判断,可通过求余运算符(%)进行判断。参考答案的第10条语句,可集中修改该条件语句符合题目的要求。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200组数据,每组有3个数,每个数均是三位数。函数ReadData()是读取这200组数据存放到结构数组inBuf中。请编制函数dataSort(),其功能是;要求在200组数据中找出条件为每组数据中的第一个数大于第二个数加第三个数之和,其中满足条件的个数作为函数dataSort()的返回值,同时把满足条件的数据存人结构数组outBuf中,再对结构数组outBuf中的数据按照每组数据的第一个数加第三个数之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存人结构数组outBuf中,函数WriteData(int)负责把结果outBuf输出到文件OUT.DAT中。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData(int)的内容。试题程序;#include#include#includetypedefstruct{intxl,x2,x3;}Data;DatainBuf[200],outBuf[200];voidRcadData();voidWriteData(int);intdataSort(){}voidmain(){intcount;ReadData();count=dataSort();/*返回满足条件的个数*/WriteData(count);}voidReadData(){FILE*in;inti;in=fopen("IN.DAT","r");for(i=0;i<200;i++)fscanf(in,”%d,%d,%d,",&inBuf[i].xl,&inBuf[i].x2,&inBuf[i].x3);fclose(in);}voidWriteData(intcount){FILE*out;inti;out=fopen("OUT.DAT","w");system("CLS");for(i=0;i标准答案:intdataSort(){intcount=0,i,j;Datatemp;for(i=0;i<200;i++){if(inBuf[i].x1>inBuf[i].x2+inBuf[i].x3)/*如果符合条件,则将inBuf中的内容写到outBuf中*/{outBuf[count].xl=inBuf[i].xl;outBuf[count].x2=inBuf[i].x2;outBuf[count].x3=inBuf[i].x3;count++;}}for(i=0;i知识点解析:本题主要考查结构数组排序的问题。所谓结构数组排序就是以结构某一元素为依据对结构数组进行排序。排序时仍采用冒泡排序法。但是由于结构不像变量那样可以通过简单的赋值来交换变量(如果要赋值的话需要对结构里的所有元素进行赋值替换,比较麻烦),所以在进行两个相邻结构交换时,用到内存拷贝函数来对内存的内容整体进行操作。由于本题的头文件中没有包含对内存操作的头文件mem.h,故只能用赋值的方法来进行结构的交换。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数readDat()的功能是从文件in52.dat中读取20行数据存放到字符串数组xx中(每行字符串的长度均小于80)。请编制函数JsSod(),该函数的功能是:以行为单位对字符串变量的—F标为奇数位置上的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件out52.dat中。例如:位置01234567源字符串hgfedcba则处理后字符串hafcdebg。注意:部分源程序已给出。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>charxx[20][80];voidjsSort{}voidmain(){readDat();jsSort();writeDat();}readDat(){FILE*in;inti=0;char*p;in=fopen("in52.dat","r");while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],’In’);if(p)*p=0;i++;}fclose(in);}writeDat(){FILE*out;inti;out=fopen("out52.dat","w");clrscr();for(i=0;i<20;i++){printf("%s\n",xx[i]);fprintf(out,"%s\n",xx[i]);}fclose(out);}标准答案:voidjsSort(){inti,j,k,strl;charch;for(i=0;i<20;i++){strl=strlen(xx[i]);/*求各行字符串的长度*/for(j=l;j<strl-2;j=j+2)/*将下标为奇数的字符按其ASCII值从小到大的顺序进行排序*/for(k=j+2;k<strl;k=k+2)if(xx[i][j]>xx[i][k]){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}}}知识点解析:本题考查的知识点如下:(1)二维数组的坊问及下标控制。(2)数据的排序。在本题中,将数据存放在一个二维数组xx中。其中以行数为数组的第—个下标,以字符串的最大长度80为其第二个下标。因为以行为字符串处理的单位,首先要使用函数strlen()求得每一行中字符的个数。只对字符串数组中下标为奇数的字符进行处理,可以从xx[0][1]开始,若需要增加时都增加2,则可实现只访问下标为奇数的数组元素。排序使用前面介绍的“选择排序法”。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、读函数readDat()的功能是从文件IN25.DAT中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),该函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用写函数writeDat()把结果xx输出到文件OUT25.DAT中。条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后,左边部分与右边部分按例子所示进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置012345678源字符串dcbahgfe43219876处理后字符串hgfeabcd98761234注意:部分源程序已给出。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include〈stdio.h>#include〈string.h>#include〈conio.h>charxx[20][80];voidjsSort(){}main(){readDat();jsSort();writeDat();}readDat(){FILE*in;inti=0;char*p;in=fopen("IN25.DAT","r");while(i〈20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],’\n’);if(p)*p=0;i++;}fclose(in);}writeDat(){FILE*out;inti;clrscr();out=fopen("OUT25.DAT","w");for(i=0;i〈20;i++){printf("%s\n",xx[i]);fprintf(out,"%s\n",xx[i]);}fclose(out);}标准答案:voidjsSort(){inti,j,k,strl,half;charch;for(i=0;i〈20;i++){strl=strlen(xx[i]);/*求字符串的长度*/half=str1/2;/*确定各行中字符串的中间位置*/for(j=0;j〈half-1;j++)/*对中间位置以前的字符进行升序排序*/for(k=j+1;k〈half;k++)if(xx[i][j]>xx[i][k]){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}for(j=half-1,k=str1-1;j>=0;j--,k--)/*将左边部分与右边部分对应的字符进行交换*/{ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}}}知识点解析:本题考查对二维字符数组的处理。由于对二维字符数组的操作是按照先行后列的顺序,因此,需要首先求得各行字符串的长度(利用求字符串长度的strlen()函数),然后借助循环结构逐个访问各行中的每一个字符。在本题中,应先确定各行中字符串的中间位置(长度的一半就是中间位置),然后先对中间位置以前的字符进行升序排序,排序过程如下:依次用每一个位置的字符与它后面的所有字符(到中间位置前一个字符结束)进行比较,如果发现某字符的ASCII码值小于当前被比较的字符的ASCII码值,则将发现的字符与当前字符进行交换,交换后继续与其后面的字符进行比较。最终比较所得的结果是第一个位置总是存放着最小的字符,第二个位置总是存放着稍大的字符,以此类推就实现了从小到大的排序功能。接着要做的工作是把中间位置前的一个位置定为初始位置,字符串中的最后一个位置也视为初始位置,让两个位置所对应的字符进行交换,交换过后,这两个位置值(也就是下标值)分别前移,再进行对应位置字符的交换。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数readDat()的功能是从文件IN22.DAT中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),该函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT22.DAT中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后,左边部分与右边部分按例子所示进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如,位置012345678源字符串abcdhgfe23498765则处理后字符串hgfedcba87659432注意:部分源程序已给出。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include〈stdio.h>#include〈string.h>#include〈conio.h>charxx[20][80];voidjsSort(){}main(){readDat();jsSort();writeDat();}readDat(){FILE*in;inti=0;char*p;in=fopen("IN22.DAT","r");while(i〈20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],’\n’);if(p)*p=0;i++;}fclose(in);}writeDat(){FILE*out;inti;clrscr();out=fopen("OUT22.DAT","w");for(i=0;i〈20;i++){printf("%s\n",xx[i]);fprintf(out,"%s\n",xx[i]);}fclose(out);}标准答案:voidjsSort(){inti,j,k,str1,half;charch;for(i=0;i〈20;i++){str1=strlen(xx[i]);/*求字符串的长度*/half=str1/2;for(j=0;j〈half-1;j++)/*将左边部分按字符的ASCII值降序排序*/for(k=j+1;k〈half;k++)if(xx[i][j]〈xx[i][k]){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}for(j=half-1,k=str1-1;j>=0;j--,k--)/*将左边部分和右边部分的对应字符互换位置*/{ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}}}知识点解析:本题考查对二维字符数组的处理。由于对二维字符数组的操作是按照先行后列的顺序,因此,需要首先求得各行字符串的长度(利用求字符串长度的strlen()函数),之后借助循环结构逐个访问各行中的每一个字符。在本题中,应先确定各行中字符串的中间位置(长度的一半就是中间位置),之后先对中间位置以前的字符进行降序排序,排序过程如下:依次用每一个位置的字符与它后面的所有字符(到中间位置前一个字符结束)进行比较,如果发现某字符的ASCII码值大于当前被比较的字符的ASCII码值,则将该字符与当前字符进行交换,交换过后继续与其后面的字符进行比较。最终比较所得的结果是第一个被比较的位置总是存放着最大的字符,第二个位置总是存放着次大的字符,以此类推就实现了从大到小的排序功能。接着要做的工作是把中间位置前的一个位置定为初始位置,字符串中的最后一个位置也视为初始位置,让两个位置所对应的字符进行交换,交换过后,这两个位置值(也就是下标值)分别前移,再进行对应位置字符的交换。最终实现了题目要求。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有1000~4999的四位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是;求出满足千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍的数,并输出这些满足条件的数的个数count及这些数的和sum。函数WriteData()负责将outBuf[]中的数输出到文件OUT.DAT中并且在屏幕上显示出来。注意;部分源程序已给出。程序中已定义数组;inBuf[4000],outBuf[4000],已定义变量;count。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#defineNUM4000int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 系统分析师应用案例的试题及答案
- 成为软件评测师的试题及答案高分攻略
- 2025年多媒体设计师市场趋势试题及答案揭晓
- 网络规划设计师考试成功经验分享及试题及答案
- 2025年系统分析师考试指导试题及答案
- 系统分析师考试注重实践与理论结合的复习方法试题及答案
- 高效复习策略软件评测师考试试题及答案
- 诏安一中会考试卷及答案
- 深化理解的系统分析师试题及答案
- 系统分析师考试各领域的发展试题及答案
- 妇科常见病科普知识讲座
- 城市土壤主要类型及特点
- 宾馆财务安全管理制度
- 《康复护理学基础》期末考试复习题库(含答案)
- 2023-餐饮公司章程范本
- 宝钢武钢并购重组案例研究
- 胰岛素的种类及应用(共26张PPT)
- 眩晕诊疗方案总结优化
- 转让鱼塘股份合同范本
- 贵州省毕节地区金沙县2022-2023学年小学六年级数学毕业检测指导卷含答案
- 抖音带货主播劳动合同范本
评论
0/150
提交评论