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

下载本文档

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

文档简介

国家三级(网络技术)机试模拟试卷19(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①首先定义两个循环变量i、j;一个用来保存结构体变量长度的计算结果的变量len;一个用于中间转换数据的结构体变量tmp。②计算结构体变量长度,并按结构体变量tmp分配len大小的内存空间。③建立两个for循环,指定第一个for循环的循环变量i从0开始,到100时结束,每循环一次,变量i的值加1;第2个for循环的循环变量j从i+1开始,即从当前行的下一行开始,到100时结束,每循环一次,变量j的值加1。④在循环体中指定排序的条件,分两个步骤指定,第一步通过strcmp()函数判断第i行的产品代码与其后面各行中产品代码的大小关系;第二步,如果比较的两行中产品代码相同的话,则再比较金额的大小。当第i行的产品代码小于后面比较行的产品代码,又或者产品代码相同时,第i行的金额小于后面比较行的金额时,将执行if条件语句后面花括号中的命令,花括号中3条命令的功能就是根据题目要求实现将记录从大到小的排序。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadDat()的功能是实现从文件ENG4.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存入数组xx对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS4.DAT中。替代关系:f(p)=p*11mod256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于,80个字符。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidencryptChar(){main(){clrscr();if(ReadDat()){printf("数据文件ENG4.IN不能打开!\n\007");return;}encryptChar();WriteDat();}intReadDat(void){FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("ENG4.IN","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(void){FILE*fp;inti;fp=fopen("PS4.DAT","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}标准答案:voidencryptChar(){inti;char*pf;for(i=O;i<maxline;i++){pf=xx[i];/*指针pf指向各行的首地址*/while(*pf!=0){if(*pf*11%256>130||*pf*11%256<=32);/*如果广计算后的值小于等于32或大于130*//*则该字符不变*/else*pf=*pf*11%256;/*否则将所对应的字符进行替代*/pf++;/*指针pf指向下一个字符*/}}}知识点解析:本题主要考查用指针变量来控制字符数组,由于要对已有二维字符数组的所有元素逐个处理,因此,需要定义一个字符指针变量来控制原二维数组的各行,当前行如果确定下来,用指针的移动就可以依次扫描该行的所有字符元素,每得到一个字符就对它进行条件判断。根据题意,条件用“if(*pf*11%256>130||*pf*11%256<=32)”语句米实现,如果该字符不满足上述条件,就用一个新的字符来替代,新的字符是当前的字符乘以11的结果再去与256求余数。处理完毕后,指针去取下一个字符。如果该字符满足所给条件,将不做任何操作,指针直接下移,去取下一个字符,对下一个字符进行处理。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有一篇英文文章,函数ReadData()负责将IN.DAT中的数据读到数组inBuf[][]中。请编制函数replaceChar(),该函数的功能是;以行为单位把字符串的最后一个字符ASCII值右移4位后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符的ASCII值右移4位后加最后第三个字符的ASCII值,得到最后第二个新的字符,依此类推,一直处理到第二个字符,第一个字符的ASCII值加最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置上。把已处理的字符串仍按行重新存人字符串数组inBuf[][]中,函数WriteData()负责将inBuf[][]中的数据输出到文件OUT.DAT中并且在屏幕上打出。原始数据文件存放的格式是;每行的宽度均小于80个字符,含标点符号和空格。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#include#include#defineLINE50#defineCOL80charinBuf[LINE-I[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,len,last;chary;for(i=0;i0;j--)inBuf[i][j]=(inBuf[i][j]>>4)+inBuf[i][j-1];/*其他情况下,则将该字符的ASCII码右移4位再加上前一个字符的ASCII码*/inBuf[i][0]+=last;//将整型转换成字符型存入inBuf中}}知识点解析:本题主要考查字符与其对应的ASCII码之间的转换及对ASCII码进行操作。程序步骤;1.计算出每行字符串的长度。2.将字符串中最后一个保存在变量last中。3.按照指定的规则对字符串中除第一个以外的字符进行替代。4.对第一个字符按照指定规则进行替代。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是对字符串左边部分排序时所采用的排序方式不同,参考答案的第11行,修改if条件语句的设置即可。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是对四位数的筛选条件有所不同,即判断新组合的两位数要求第一个为偶数,第二个为奇数,比较两题的第10条语句,只需将新组合的第二个数的判断条件改为奇数判断,即。“newV2%2”。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、下列程序的功能是:把s字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg(char*s)实现程序要求,最后调用函数readwriteDat()把结果输出到out63.dat文件中。例如:s字符串中原有内容为Mn,123xyZ,则调用该函数后,结果为n,123xyZM。注意:部分源程序已给出。请勿改动主函数main()和输入输出函数readwriteDAT()的内容。试题程序:#include<conio.h>#include<stdio.h>#defineN81voidreadwriteDAT();voidchg(char*s){}main(){chara[N];clrscr();printf("Enterastring:");gets(a);printf("Theoriginalstringis:");puts(a);chg(a);printf("Thestringaftermodified:");puts(a);readwriteDAT();}voidreadwriteDAT(){inti;chara[N];unsignedchar*p;FILE*rf,*wf;rf=fopen("in63.dat","r");wf=fopen("out63.dat","w");for(i=0;i<10;i++){fgets(a,80,rf);p=strchr(a,’\n’);if(p)*p=0;chg(a);fprintf(wf,"%s\n",a);}fclose(rf);fclose(wf);}标准答案:voidchg(char*s){inti,strl;charch;strl=strlen(s);/*求字符串的长度*/ch=*s;/*将第一个字符暂赋给ch*/for(i=O;i<strl-1;i++)/*将字符依次左移*/*(s+i)=*(s+i+l);*(s+strl-1)=ch;/*将第一个字符移到最后*/}知识点解析:本题考查的知识点如下:(1)数组中元素的移动。(2)指针的使用。我们可以使用一个循环实现数组中所有字符元素的左移。这里要注意的足第1个字符要移至最后1个字符处,所以首先要将第1个字符保存。在移动时,要从左到右依次移动,否则,左侧的字符会在移动前被其右侧的字符覆盖。在这里使用了指针,初始时,指针指向数组的第1个元素,随着地址的增加指针指向数组后面的元素。例如,若地址加2,国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、设有n个人坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下—个人重新开始从1到m报数,如此进行下去直到所有的人都出圈为止。先要求按出圈次序,每10个人为一组,给出这n个人的顺序表。请编制函数Josegh()实现此功能并调用函数WriteDat()把编设n=100,s=1,m=10进行编程。注意:部分源程序已给出。请勿改动主函数main()和写函数WritsDat()的内容。试题程序:#include<stdio.h>#defineN100#defineS1#defineM10intp[lOO],n,s,m;voidWriteDat(void);voidJosegh(void){}voidmain(){m=M;n=N;s=S;Josegh();WriteDat();}voidWriteDat(void){inti;FILE*fp;fp=fopen("OUT59.DAT","w");for(i=N-1;i>=0;i--){printf("%4d",p[i]);fprintf(fp,"%4d",p[i]);if(i%10==0){printf("\n");fprintf(fp,"\n");}}fclose(fp);}标准答案:voidJosegh(void){inti,j,k,sl,w;s1=s;for(i=l;i<=n;i++)/*给n个人从到n编号*/p[i-1]=i;for(i=n;i>=2;i--){s1=(s1+m-1)%i;/*下一个开始报数的人的编号是(s1+m-1)%i*/if(s1==0)/*若s1为0,则说明要开始报数的是最后一个人*/s1=i;w=p[s1-1];/*将要出圈的人移至数组的最后*/for(j=sl;j<=i-1;j++)p[j-1]=p[j];p[i-1]=w;}}知识点解析:本题考查的知识点如下:(1)将数组建成环。(2)运算符“%”的使用。(3)循环的嵌套使用。此题是著名的“约瑟夫环”问题。首先要将每个人的编号存入数组。因为每次是从s1开始报数,若是直线队则下一个开始报数的人的编号是s1+m-1,但这里要建立一个环,即最后一个人报完数后第一个人接着报数。所以这时下一个开始报数的人的编号足(s1+m-1)%i,i是此时圈中的总人数。若所得的结果为0,则说明要开始报数的是最后一个人。在此人前面的那个人就是要出圈的人,使用循环将要出圈的人移至数组的最后。开始时,总人数为n,以后依次减1,直到最后一个人出圈。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义表示Fibonacci数列中第F(n-2)项的变量f0,第F(n-1)项的变量f1,第F(n)项的变量f2。②当Fibonacci数列中第F(n)项的值f2小于t时,把数列当前第F(n-1)项的值n赋给内,把数列当前第F(n)项的值f2赋给f1,根据。Fibonacci数列的递推关系,第n项的值等于第n-1项的值与第n-2项值的和,计算数列当前第n+1项的值f2=f0+f1依次循环,当f2的值大于t时,退出while循环,把f2的值返回。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共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]);}

温馨提示

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

评论

0/150

提交评论