版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家三级(网络技术)机试模拟试卷15(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是;求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数,按照从大到小的顺序存人数组outBuf[]中,并用count记录下符合条件的数的个数。函数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[4],temp;for(i=0;i知识点解析:本题主要考查数位分解及排序。数位分解就是将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.对选出的数据进行排序,排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有一篇英文文章,函数ReadData()负责将IN.DAT中的数据读到数组inBuf[]中。请编制函数replaceChar(),该函数的功能是;以行为单位把字符串中的所有大写字母改成该字母的下一个字母,字母Z成字母A。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存人字符串数组inBuf[]中,函数WriteData()负责将inBuf[]中的数据输出到文件0UT.DAT中并且在屏幕上打出。例如;S字符串中原有的内容为;my.name.is.Lin.TaoNice.to.meet.you则调用该函数后,结果为;my.name.is.Min.UaoOice.to.meet.you原始数据文件存放的格式是;每行的宽度均小于80个字符,含标点符号和空格。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#include#include#defineLINE70#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={open("OUT.DAT","w");for(i=0;i标准答案:voidreplaceChar(){inti,j;for(i=0;i=’A’&&inBuf[i][j]<=’Z’)//如果字符在’A’~’Z’之间{if(inBuf[i][j]==’Z’)inBuf[i][j]=’A’;//如果是字符’Z’,则用’A’来代替elseinBuf[i][j]=(char)((int)inBuf[i][j]+1);//其他情况则用其后面的字符代替}}知识点解析:本题主要考查字符与其对应的ASCII码之间的转换及对ASCII码进行操作。程序步骤;1.依据条件选择inBuf[i][j],将其进行类型强制转换成整型(也即所对应的ASCII码值)。2.将ASCII码值加1或减1以将该字符的ASCII码值换成其下一位的ASCII码值,将计算所得结果再转换成字符型存储到inBuf[i][j]中。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadDat()的功能是实现从文件IN39.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ChA(),该函数的功能是:以行为单位把字符串的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的字符,以此类推一直处理到倒数第二个字符,最后一个字符的ASCII值加第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后仍按行重新存入字符串数组xx中,并调用函数WriteDat()把结果xx输出到文件OUT39.DAT中。注意:部分源程序已给出。原始文件存放的格式是:每行的宽度小于80个字符,含标点符号和空格。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>charxx[50][80];intmaxline=0;intReadDat();voidWriteDat();voidChA(void){}voidmain(){clrscr();if(ReadDat()){printf("数据文件IN39.DAT不能打开!\n\007");return;}ChA();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN39.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("OUT39.DAT","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}标准答案:voidChA(void){inti,j,k,str;charch;for(i=0;i<maxline;i++){str=strlen(xx[i]);/*求各行字符串的总长度*/ch=xx[i][0];for(j=0;j<str-1;j++)/*将该字符的ASCII值与下一个字符的ASCII值相加,得到新的字符*/xx[i][j]+=xx[i][j+1];xx[i][str-1]+=ch;/*将最后一个字符的ASCII值与第一个字符的ASCII值相加,得到最后一个新的字符*/for(j=0,k=str-1;j<str/2;j+j,k--)/*将字符串逆转后仍按行重新存入字符串数组xx中*/{ch=xx[i][j];xx[i]-[j]=xx[i][k];xx[i][k]=ch;}}}知识点解析:本题考查的知识点如下:(1)字符变量的整数运算。(2)字符的逆序排列。因为是以行为处理单位,所以要先求得每一行中字符的个数。在C语言中,字符型数据可参与任何整数运算,实际参与运算的是字符的ASCII码。这里可以直接将字符的ASCII码相加,即可得到所要结果。使用循环结构依次对字符进行处理,最后一个字符要单独处理。逆序排列采用的方法是:从两边向中间移动。数组中第一个字符与最后一个字符交换,第二个与倒数第二个交换,按照此规律直到中间一个或两个字符(数组中字符个数为奇数时,最后中间只有一个字符,否则有两个字符)。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有一篇英文文章,函数ReadData()负责将IN.DAT中的数据读到数组inBuf[][]中。请编制函数replaceChar(),该函数的功能是按照指定规则对字符进行替换。变换后的值仍存人inBuf[][]中。函数WriteData()负责将inBuf[][]中的数据输出到文件OUT.DAT中并且在屏幕上打出。替换规则为;先对字符的ASCII码按公式y=(a*13)mod256进行运算(a为某一字符的ASCII码值,Y为变换后的ASCII码值),如果计算后y的值小于等于32或其ASCII值是偶数,则字符保持不变,否则用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标准答案:voidreplaceChar(){inti,j,str;chary;for(i=0;i知识点解析:本题主要考查字符与其对应的ASCII码之间的转换及对ASCII码进行操作。先计算出每行字符串的长度,再根据替换规则进行相应的替换。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN27.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数从大到小进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT27.DAT文件。例如:7153,7+1=5+3,则该数满足条件,存入数组b中,且个数cnt=cnt+1。8129,8+1≠2+9,则该数不满足条件,忽略。注意:部分源程序已给出。程序中已定义数组:a[300],b[300],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include〈stdio.h>inta[300],bi300],cnt=0;voidjsValue(){}main(){inti;readDat();jsValue();writeDat();printf("cnt=%d\n",cnt);for(i=0;i〈cnt;i++)printf("b[%d]=%d\n",i,b[i]);}readDat(){FILE*fp;inti;fp=fopen("IN27.DAT","r");for(i=0;i〈300;i++)fscanf(fp,"%d,",&a[i]fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("OUT27.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i〈cnt;i++)fprintf(fp,"%d,\n",b[i]);fclose(fp);}标准答案:voidjsValue(){inti,thou,hun,ten,data,j;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==data+ten)/*如果千位数加百位数等于十位数加个位数*/{b[cnt]=a[i];/*把满足条件的4位数依次存入数组b中*/cnt++;/*计算满足条件的数的个数*/}}for(i=0;i〈cnt-1;i++)/*对数组b的4位数从大到小进行排序*/for(j=i+1;j〈cnt;j++)if(b[i]〈b[j]){data=b[i];b[i]=b[j];b[j]=data;}}知识点解析:根据题意可知,函数jsValue()用于实现两个功能:一是找出满足条件的数,并存放在数组b中:二是对数组b中的数进行从大到小的排序。首先来找出“千位数上的数加上百位数上的数等于十位数上的数加上个位数上的数”的4位数。利用一个for循环来不断从数组a中取出4位数,并对取出的数进行条件判断。由于这里涉及到要对4位数的每一位进行判断,因此,“thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;dam=a[i]%10;”这4条语句就可以得到当前被判断的4位数的千位数、百位数、十位数及个位数。之后,执行条件判断语句“if(thou+hun==data+ten)”,并把满足条件的4位数存入数组b中。变量cnt用来统计满足条件的数的个数。将所有满足条件的数取出后利用选择法对其进行排序,即拿当前元素依次和它后面的元素进行比较,发现有大于该数的,就将这两个数进行交换。最终数组b的元素就是有序存放的。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、调用函数rwdata(),从in.dat文件中读取10组数据(m和k),并嵌套调用primenum函数分别得出array[]数组。请编写primenum(intm,intk,intarray[]),该函数的功能是;将紧靠m的k个素数存人数组array并在屏幕上显示。最后把结果输出到文件out.dat中。例如,若输入39则对应输出5711131719232931。注意;部分程序已经给出,请勿改动主函数main()和输出数据函数rwdata()的内容。试题程序;#include#includevoidrwdata();voidprimenum(intm,intk,intarray[]){}main(){intm,n,array[1000];printf("\Pleaseentertwointegers;");scanf("%d%d",&m,&n);primenum(m,n,array);for(m=0;m标准答案:voidprimenum(intm,intk,intarray[]){intvalue=m+1;inthalf,n=0,i;while(1){half=value/2;for(i=2;i<=half;i++)if(value%i==0)break;if(i>half){arrau[n]=value;n++;}if(n>=k)break;value++;}}知识点解析:本题主要考查素数判断的问题,本程序的算法是;1.先定义变量value,将m之后的数逐个赋值给该变量;2.若此数不能被2~value/2整除,则为素数,将值赋给array[n],然后n++;国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些4位自然数的个数cnt及这些数的和sum。请编写函数countValue()实现程序的要求,最后调用函数wfiteDAT()把结果cnt和sum输出到文件OUT67.DAT中。注意:部分源程序已给出。请勿改动主函数main()和写函数writDAT()的内容。试题程序:#include<stdio.h>intcnt,sum;voidcountValue(){}voidmain(){cnt=sum=0;countValue();printf("满足条件的自然数的个数=%d\n",cnt);printf("满足条件的自然的值的和=%d\n",sum);writeDAT();}writeDAT(){FILE*fp;fp=fopen("OUT67.DAT","w");fprintf(fp,"%d\n%d\n",cnt,sum);fclose{fp);}标准答案:voidcountValue(){inti,thou,hun,ten,data;for(i=5000;i>=1000;i--){thou=i/1000;/*求四位数的千位数字*/hun=i%1000/100;/*求四位数的百位数字*/ten=i%100/10;/*求四位数的十位数字*/data=i%l0;/*求四位数的个位数字*/if(thou+hun==ten+data&&thou+hun==(data-thou)*10){/*千位数与百位数之和等于十位与个位数之和,且千位数下百位数之和等于于个位数与千位数之差的10倍*/cnt++;/*则统计满足条件的数的个数*/sum+=i;/*将满足条件的数求和*/}}知识点解析:本题考查的知识点如下:(1)“%”与“/”的使用。(2)判断结构中多个条件的布尔运算。(3)循环结构的使用。本题要求选出5000以下符合条件的4位数,所以选择范围是1000到5000。这里要借助运算符“%”与“/”将4位数各位上的数拆成独立的数字:将1个4位数整除1000则可得到其千位上的数字,除以1000取余再整除100则可得百位上的数字,除以100取余再整除10则可得十位上的数字,除以10取余则得个位卜的数字。题巾给出的两个条件都要满足,所以两条件之间用“与”运算。使用循环结构对1000到5000之间的数依次进行上述的处理。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义整型变量i、j,表示出圈人位置的变量s1和出圈人序号的变量w。并将s的值赋给变量s1(s的值已在源程序中赋值为1)。②通过一个for循环,将n个人的序号存入一维数组p中(n的值已在源程序中赋值为100)。③再建立一个for循环,循环变量i从n开始,即从100开始,依次递减直到其值小于2时退出循环。由于每执行一次循环,人数就会减少1个,因此,此处的for循环应表示为递减方式。在该循环体中,先计算每次出圈人的位置,通过表达式“(s1+m-1)%i”计算每次出圈人的位置(m的值已在源程序赋值为10)。若所得结果为0,则说明要开始报数的是最后一个人,在此人前面的那个人就是要出圈的人,再通过一个循环将要出圈的人移到数组最后。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN65.DAT中存有若干个(个数<200)4位数字的正整数,函数ReadDat()是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求是:(1)求出这个文件中共有多少个正整数totNum。(2)求出这些数中的各位数字之和是奇数的个数totCnt,以及满足此条件的这些数的算术平均值totpjz。最后调用函数WriteDat()把所有结果输出到文件OUT65.DAT中。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。#include<stdio.h>#include<conio.h>#defineMAXNUM200intxx[MAXNUM];inttotNum=0;inttotCnt-0;doubletotPjz=0.0;intReadDat(void);voidWriteDat(void);voidCalValue(void){}voidmain(){inti;clrscr();for(i=0;i<MAXNUM;i++)xx[i]=0;if(Re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年浙江建筑安全员《A证》考试题库及答案
- 2025江西省安全员-C证考试(专职安全员)题库及答案
- 2025陕西省建筑安全员《B证》考试题库及答案
- 2025浙江省安全员A证考试题库附答案
- 二十四节气之立春课件模板
- 《蛋糕制作》课件
- 工艺管道培训课件
- 《海南海口夏竞》课件
- 单位管理制度收录大合集【人员管理篇】
- 有机玻璃操作箱行业行业发展趋势及投资战略研究分析报告
- 小豆苗产品介绍门诊端
- 空调安装和维修的培训
- 海康执法记录仪解决方案
- 液化气供应站安全管理制度和营业制度
- GB/T 21385-2008金属密封球阀
- GB/T 18994-2003电子工业用气体高纯氯
- 文言文阅读训练:《三国志-武帝纪》(附答案解析与译文)
- (完整版)招聘面试方案设计与研究毕业论文设计
- 调休单、加班申请单
- 肉制品生产企业名录296家
- 规划设计收费标准
评论
0/150
提交评论