国家三级(网络技术)机试模拟试卷1(共9题)_第1页
国家三级(网络技术)机试模拟试卷1(共9题)_第2页
国家三级(网络技术)机试模拟试卷1(共9题)_第3页
国家三级(网络技术)机试模拟试卷1(共9题)_第4页
国家三级(网络技术)机试模拟试卷1(共9题)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家三级(网络技术)机试模拟试卷1(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadDat()的功能是实现从文件IN32.DAT中读取一篇英文文章存入到字符串数组xx中。请编数StrOR(),该函数的功能是:以行为单位把字符串中所有小写字母。左边的字符串内容移至该串的右边存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放,最后把已处理的字符串仍按行重新存入字符串数组xx中。最后调用函数WriteDat()把结果输出到文件OUT32.DAT中。例如,原文:Youcancreateanindexonanyfieldyouhavethecorrectrecord结果:nanyfieldYucancreateanindexrdyuhavethecrrectrec原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.注意:部分源程式序已给出请勿改动主函main(),读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<string,h>#include<conio,h>charxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidStrOR(void){}voidmain(){clrscr();if(ReadDat()){printf("数据文件IN32.DAT不能打开!\n\007");return;}StrOR();WriteDat();}intReadDat(void){FILE*fp;ihti=0;char*p;if((fp=fopen("IN32.DAT","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],’In’);if(p)*p=0;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;clrscr();fp=fopen("OUT32.DAT","w");for(i=0;i{printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}标准答案:voidStrOR(void){intI,j,k,index,strl;charch;for(I=O;I<maxline;I++){Strl=s’trlen(xx[I]);/*求各行的长度*/index=strl;for(j=O;j<strl;j++)/*将一行中所以小写字母o右边的字符依次向左移一位,并删除字母.*/if(xx[I][j]==’o’){for(k=j;kxx[I][k]=xx[I][k+l];xx[I][strl-1]=’’;index=j;/*记录下最后一个o所在的位置*/}for(j=strl-1;j>=index;j--)/*最后一个o右侧的所有字符都移到已处理字符串的左边*/ch=xx[I][strl-1];for(k=strl-1;k>O;k--)xx[I][k]=xx[I][k-l];xx[I][O]=ch;}}}知识点解析:本题考查的知识点如下:(1)循环结构与选择结构的嵌套使用。(2)字符数组中的元素的移动。(3)字符串处理函数的使用。在本题中,以行作为字符串处理的基本单位。首先,要确定该行字符串的长度。然后使用循环结构依次对字符进行处理。先找到字符o,将o右侧的字符依次向左移。这个操作同时能够删除字符o。记录下最后一个。所在的位置,在这个。右侧的所有字符都要移到已处理字符串的左边,这个过程也是使用循环来完成的。最后,对文章中的每一行都进行这一操作即可。`国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编制程序,要求:将文件IN91.DAT中的200个整数读入数组xx中,求出数组xx中奇数的个数cnt1和偶数的个数cnt2,以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数),结果cnt1,cnt2,pj输出到out91.dat中。部分程序、读函数read_dat(intxx[200])及输出格式已给出。试题程序:#include<conio.h>#include<stdio.h>#defineN200voidread_dat(intxx[N]){inti,j;FILE*fp;fp=fopen("IN91.DAT","r");for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fp,"%d,",&xx[i*10+j]);printf("%d",xx[i*10+j]);}printf("\n");}fclose(fp);}voidmain(){intcnt1,cnt2,xx[N];floatpj;FILE*fw;inti,k=0;longj;clrscr();fw=fopen("out91.dat","w");read_dat(xx);printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);fclose(fw);标准答案:voidmain(){intcnt1,cnt2,xx[N];floatpj;FILE*fw;inti,k=0;longj;clrscr();fw=fopen("out91.dat","w");read_dat(xx);for(i=0,j=0,cnt1=0,cnt2=0;i<N;i++){if(xx[i]%2)/*求出数组XX中奇数的个数cnt1*/cnt1++;elsecnt2++;/*求出数组xx中偶数的个数cnt2*/if(i%2==0){j+=xx[i];/*求数组xx下标为偶数的元素值的总和*/k++;}}Pj=(float)(j*100/k)/100;/*求数组xx下标为偶数的元素值的算术平均值pj*/printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);fclose(fw);}[解析]本题考查的知识点如下:(1)运算符“%”的使用。(2)强制类型转换和小数位数的保留;一个数除以2取余所得的数为1,则它是奇数,否则是偶数,取余使用运算符“%”。在本题中,要求算术平均值保留两位小数。使用的方法是:将和乘以100除以个数强制类型转换后再除以100。为了保证和有效,我们定义一个长整型变量来记录和。因为个数也为整型,运算符“/”在这里的含义是整除,而我们要保留小数,所以要使用强制类型转换将和乘以100的结果转换为浮点类型,这样就可以实现保留两位小数。使用循环对所有数据进行访问。知识点解析:暂无解析国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:根据题意,本程序涉及10个候选人共100条记录,其中,100条记录的选票文件采用二维数组存储其数据,第一维表示100条记录,第二维表示每条记录中10个候选人的选中情况。可以通过两个for循环对100条记录逐个比对,在第一层for循环中,对100条记录的每条记录情况进行扫描,在第二层for循环语句中,判断数组元素xx[i][j]的值是否等于字符1,如果等于字符1,说明第j个人得了一票,则数组元素yy[j]加1。①先定义两个循环变量i和j。②指定第一个for循环的循环条件,循环变量i从0开始,等于100时结束,每循环一次,变量i的值加1。③在for循环中首先判断记录值不等于1111111111的记录,然后计算10个候选人的得票数,可以通过一个for循环,对满足条件的记录中的每个数字再次比对,当数字等于1时,将第i个人的票数加1。注意,本程序中由于只有数值1才会被计算到最后的结果中,因此,可以省去判断记录全为0时记录无效的情况,因为,即使将0参与到计算中,其计算结果也还是0,不会影响到最终结果,只需判断记录为全1时无效即可。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadDat()的功能是实现从文件IN88.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数SortCharA(),该函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数WriteDat()把结果xx输出到文件OUT88.DAT中。例如,原文:dAe,BfCCCbbAA结果:,ABCdefAACCbb原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<string.h>include<conio.h>charxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidSortCharA(){}voidmain(){clrscr();if(ReadDat()){printf("数据文件IN88.DAT不能打开!\n\007");return;}SortCharA();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN88.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("OUT88.DAT","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}标准答案:voidSortCharA(){inti,j,k,strl;charch;for(i=0;i<maxline;i++)strl=strlen(xx[i]);/*求该行的字符个数*/for(j=0;j<strl-1;j++)/*对字符按从小到大的顺序进行排序*/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)字符的大小比较。(3)字符排序。本题以行为单位对文章进行处理,首先要确定每一行中字符的个数。这个操作可使用字符串处理函数strlen(char*str)来完成。对字符从小到大排序依据的是字符的ASCII码,在C语言中,字符量可参与任何整型运算,所以可以直接使用比较运算符进行比较。排序使用前面介绍的“选择排序法”。最后使用循环结构对文章中的每一行都进行以上的操作。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、下列程序的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。xn+1=cos(xn)迭代步骤如下:(1)取x1初值为0.0。(2)x0=x1,把x1的值赋给x0。(3)x1=cos(x0),求出一个新的x1。(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2)。(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。请编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果输出到文件out41.dat中。注意:部分源程序已给出。请勿改动主函数main()和写函数writeDAT()的内容。试题程序:#include<conio.h>#include<math.h>#include<stdio.h>floatcountValue(){}main(){clrscr();printf("实根=%f\n",countValueprintf("%f\n",cos(countValue())-countValue());writeDAT();}writeDAT(){FILE*wf;wf=fopen("out41.dat","w");fprintf(wf,"%f\n",countValuefclose(wf);}标准答案:floatcountValue{){floatx0,x1=0.0;while(1){x0=x1;/*将x1赋值给x0*/x1=cos(x0);/*求出新的x1*/if(fabs(x0-x1)<1e-6)break;/*若x0—x1的绝对值小于0.000001,则结束循环*/}returnx1;}知识点解析:本题考查的知识点如下:(1)数学函数doublecos(doublex)及doublefabs(doublex)的使用。(2)使用循环结构实现迭代。在本题中,因为要求一个实数的余弦值,在结束迭代的时候要判断绝对值,所以这里要用到数学函数cos(doublex)和fabs(doublex)。先设一个条件永远为真的while循环结构,按照步骤提示,要先为x1取初值,将x1的值赋给x0,使x1=cos(x0),判断x0-x1的绝对值将其作为强行退出循环的条件。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编制程序,要求:将文件IN94.DAT中的200个整数读入数组xx中,求出数组xx中奇数的个数cnt1和偶数的个数cnt2,以及数组xx下标为奇数的元素值的算术平均值pj(保留两位小数),结果cnt1,cnt2,pj输出到OUT94.DAT中。部分程序、读函数read_dat(intxx[200])及输出格式已给出。试题程序:#include<conio.h>#include<stdio.h>#defineN200voidread_dat(intxx[N]){inti,j;FILE*fp;fp=fopen("IN94.DAT","r");for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fp,"%d,",&xx[i*10+j]);printf("%d",xx[i*10+j]);}printf("\n");}fclose(fp);}voidmain(){intcnt1,cnt2,xx[N];floatpj;FILE*fw;clrscr();fw=fopen("out94.dat","w");read_dat(xx);printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);fclose(fw);}标准答案:voidmain(){intcnt1,cnt2,xx[N];floatpj;FILE*fw;inti,k=0;longj=0;cnt1=0;cnt2=0;pj=0.0;clrscr();fw=fopen("out94.dat","w");read_dat(xx);for(i=0;i<N;i++){if(xx[i]%2)cnt1++;/*求出数组xx中奇数的个数cnt1*/elsecnt2++;/*求出数组xx中偶数的个数cnt2*/if(i%2==1){j+=xx[i];/*求数组xx下标为奇数的元素值的总和*/k++;}}pj=(float)(j*100/k)/100;/*求数组xx下标为奇数的元素值的算术平均值pj*/printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);fclose(fw);}[解析]本题考查的知识点如下:(1)运算符“%”的使用。(2)强制类型转换和小数位数的保留。一个数除以2取余所得的数为1,则它是奇数,否则是偶数,取余使用运算符“%”。在本题中,要求算术平均值保留两位小数。使用的方法是:将和乘以100除以个数强制类型转换后再除以100。为了保证和有效,我们定义了一个长整型变量来记录和。因为个数也为整型,运算符“/”在这里的含义是整除,而我们要保留小数,所以要使用强制类型转换将和乘以100的结果转换为浮点类型,这样就可以实现保留两位小数。使用循环对所有数据进行访问。知识点解析:暂无解析国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数readData()负责从文件IN.DAT中读取1000个十进制整数到数组inBuf[]中。请编制函数Compute()分别计算出inBuf[]中奇数的个数odd、奇数的平均值avel、偶数的平均值ave2及所有奇数的方差tot_v的值。函数WriteData()负责把结果输出到OUT.DAT文件中。计算方差的公式如下;设N为奇数的个数,inBuf[i]为奇数,avel为奇数的平均值。原始数的存放格式是;每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#include#defineMAX1000intinBuf[MAX],odd=0,even=0;doubleavel=0.0,ave2=0.0,tot_v=0.0;voidWriteData(void);intReadData(void){FILE*fp;inti,j;if((fp=fopen("IN.DAT","r"))==NULL)return1;for(i=0;i<100;i++){for(j=0;j<10;j++)fscanf(fp,"%d,",&inBuf[i*10+i]);fscanf(fp,"\n");if(feof(fp))break;}fclose(fp);return0;}voidCompute(void){}voidmain(){inti;for(i=0;i标准答案:voidCompute(void){inti;for(i=0;i知识点解析:本题考查的主要是平均值和方差的计算问题。基本思路是;1.求均值;由于本题中的数据量比较大,若采用先将各个值加起来再除以总个数来取平均值的话,会因为变量不能存储那么大的数据而导致溢出。本程序采用的方法是N个数的平均值=[前(N-1)个数的平均值*(N-1)+第N个数]/N,采用这种递推的方法就避免了将大的数据存入变量中而产生溢出。2.求方差,按照所给公式,将数值代入计算即可。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义循环整型变量i,对变量*n赋初值0。②在for循环语句中,循环变量i从7开始,依次递增到1000,对7~1000之内的每一个数,用表达式(i%7)=0‖(i%11)=0)&&(i%77!=0)来判断i是否满足能被7或11整除但不能同时被77整除的条件,如果i满足上述条件,则把i赋给数组元素a[(*n)],同时数组下标变量(*n)加1。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN.DAT中存有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论