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

下载本文档

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

文档简介

国家三级(网络技术)机试模拟试卷8(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义循环变量i和字符数组before[80]、after[80]及字符指针变量p。②在for循环语句中,循环变量i从0开始,依次递增直到其值等于maxline,在循环体中,利用while循环语句一直执行如下的操作,调用库函数strchr()定位字母0在字符串xx[i]嘲中第一次出现的位置p。如果p非空,说明在此字符串中找到了字母o,对于xx[i]有字母0的情况,从字符串xx[i]的第xx[i]+(p.xx[i]+1)字符开始,直到字符的结尾,调用字符串拷贝函数strcpy()把字母。后面的字符串拷贝到字符数组after[80]中,然后把*p的值设置为0,删除字母0,调用字符串拷贝函数strcpy()把字符串xx[i]拷贝到字符数组before[80]中,调用字符串拷贝函数strcpy()把字符数组after[80]中的值拷贝到xx[i],再调用字符串连接函数strcat()把xx[i]与before[80]相连接,实现字母o前后字符串的互换。如果p为空,说明在Xx[i]中没有字母0,则退出while循环。进入下一行字符串的处理。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN77.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果一个4位数的干位数字上的值加十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且此4位数是偶数,则统计㈩满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT77.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN77.DAT","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);}main(){inti;readDat();jsVal();printf("满足条件的数=%d\n",cnt)for(i=0;i<cnt;i++)printf("%d",b[i]);printf("\n");writeDat();}writeDat(){FILE*fp;inti;fp=fopen("OUT77.DAT","w");fprintf(fp,"%od\n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}标准答案:voidjsVal(){inti,thou,hun,ten,data,j;intab,cd;for(i=0;i<MAX;i++){thou=a[i]/1000;/*求四位数的千位数字*/hun=a[i]%1000/100;/*求四位数的百位数字*/ten=a[i]%100/10;/*求四位数的十位数字*/data=a[i]%10;/*求四位数的个位数字*/if((thou+ten==hun+data)&&a[i]%2!=1){/*如果千位数加十位数等于百位数,并且此数是偶数*/b[cnt]=a[i];/*则将满足条件的数存入数组b中*/cnt++;/*统计满足条件的数的个数*/}}for(i=0;i<cnt-1;i++)/*将数组b中的数按从小到大的顺序排列*/for(j=i+1;j<cnt;j++)if(b[i]>b[j]){data=b[i];b[i]=b[j];b[j]=data;}}知识点解析:本题考查的知识点如下:(1)将一个4位整数各位上的数转变成单独的个位数。(2)判断结构中多个条件的布尔运算。(3)数据的排序。在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数字。这里借助特殊运算符号“%”(取余)和“/”(整除)。将一们位数整除1000则可得到其千位上的数字,除以1000取余再整除100则可得百位上的数字,除以100取余再整除10则可得—卜位上的数字,除以10取余则得个位上的数字。若一个数除以2取余为0,则这个数是偶数。题目中的两个条件必须同时满足,所以两条件之间用“与”运算。先将满足条件的数存入数组b中,再对数组中的数据进行排序。最后的排序采用“选择排序法”。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadDat()的功能是实现从文件IN8.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrCharJP(),该函数的功能是:以行为单位把字符串中的所有字符的ASCII值右移4位,然后把右移后的字符的ASCII值再加上原字符的ASCII值,得到新的字符,并存入原字符串对应的位置上。最后把已处理的字符串按行重新存入字符串数组xx中,并调用函数WriteDat()把结果xx输出到文件OUT8.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio,h>charxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidStrCharJR(void){}main(){clrscr(;if(ReadDat()){printf("数据文件IN8.DAT不能打开!\n\007");return;}StrCharJR();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN8.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(void){FILE*fp;inti;clrscr();fp=fopen("OUT8.DAT","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}标准答案:voidStrCharJR(void){inti,i,strl;for(i=0;i<maxline;i++){str1=strlen(xx[i]);/*计算各行字符串的长度*/for(j=0;i<str1;j++)xx[i][j]+=xx[i][j]>>4;/*字符的ASCII值右移4位再加—卜原字符的ASCII值,得到新字符*/}}知识点解析:本题考查对二维字符数组元素的操作。注意:字符也可以参与数学运算,只不过用的是其ASCII码值。我们可以利用双重循环按照先行后列的顺序逐个取得数组中的字符(前提是我们需要求得各行字符的总个数),外层循环用来控制行数,内层循环用宋依次取得各行中的每一个字符。之后对当前所取得的字符进行右移4位的运算(用到了“>>”右移运算符),然后把右移后得到的字符累加到原来字符中去,这样原来字符就被新的字符所覆盖。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第6行,修改if条件语句的设置即可。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第8行进行修改即可。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知文件IN16.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价由(整型)、数量s1(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT16.DAT中。注意:部分源程序已给出。请勿改动主函数main()、渎函数ReadDat()和写函数WriteDat()的内容。试题程序:#include〈stdio.h>#include〈mem.h>#include〈string.h>#include〈conio.h>#include〈stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/charmc[11];/*产品名称*/intdj;/*单价*/ints1;/*数量*/longje;/*金额*/}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("IN16.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);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].s1=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].s1;}fclose(fp);}voidWriteDat(){FILE*fp;inti;fp=fopen("OUT16.DAT","w");for(i=0;i〈100;i++){fprintf(fp,"%s%s%4d%5d%101d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].s1,sell[i].je);}felose(fp);}标准答案:voidSortDat(){inti,j;PROxy;for(i=0;i〈MAX-1;i++)for(j=i+1;j〈MAX;j++)if(strcmp(sell[i].mc,sell[j].mc)<0)/*按产品名称从大到小进行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}elseif(strcmp(sell[i].mc,sell[i].mc)==0)/*若产品名称相同,则按金额从大到小进行排列*/if(sell[i].je〈sell[j].je){xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}知识点解析:本题是有关结构体数组的排序问题。可以用选择法来实现,即用第一个元素的产品名称依次和它后面的元素的产品名称进行比较,如果发现当前元素的产品名称比后面的某个元素的产品名称的对应位置的字符的ASCII码小(这里用到了字符串比较函数strcmp()),则交换这两个元素的位置,继续和后面的其他元素进行比较,最终在第一个元素中存放的是产品名称最大的元素。以此类推,就实现了从大到小排序的功能。注意:这里要进行交换的是两个结构体变量,而不是它们的某一个域,因此,要借助第三个结构体变量来充当中间容器。若发现产品名称是相同的,则要按照金额从大到小进行排序。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存放有100条对10个候选人进行选举的记录,数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数大于5个人时被认为无效的选票。函数ReadData()负责将IN.DAT中的内容读人数组inBuf[]中。请编制函数calculate()来统计每个人的选票数并把得票数依次存人outBuf[0]~outBuf[9]中,最后调用函数WriteData()把结果outBuf[]输出到文件OUT.DAT中。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include(memory.h>#defineLINE100#defineCOL10charinBuf[LINE][COL];intoutBuf[COL];intReadData(void);voidWriteData(void);voidcalculate(void){}voidmain(){inti;for(i=0;i<10;i++)outBuf[i]=0;if(ReadData()){printf("IN.DATcan’tbeopened\007\n");return;}calculate();writeData();}intReadData(void){FILE*fp;inti;chartt[COL+1];if((fp=fopen("IN.DAT","r"))==NULL)return1;for(i=0;i标准答案:voidcalculate(void){inti,j,k,sum,use_i;intuseful[LINE]={-1};k=0;for(i=0;i知识点解析:本题主要考查如何将读入的字符型的数字转换成对应的整型数字。由于数字O~9的ASCII码是连续增加的,故可用0~9的ASCII码值减去0的ASCII码值而得到数字0~9。本题的另一个难点是如何在除去无效选票之后再进行统计。在程序中选用的是一个数组useful[]来记录有效选票的号码,将该数组中的值作为选票数组inBuf[][]的行下标,从而实现了对无效选票的排除。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编制一函数findData(),其功能是;依次从数组inBuf中取出一个四位数,如果该四位数连续小于该四位数以前的5个数且该数是偶数(该四位数以前不满5个数的,则不统计),则按照从大到小的顺序存人数组outBuf[]中,并用count记录下符合条件的数的个数。函数WriteData()负责将outBuf[]中的数输出到文件OUT.DAT中并且在屏幕上显示出来。注意;部分源程序已给出。程序中已定义数组;inBuf[200],outBuf[200],已定义变量;count。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#defineMAX200intinBuf[MAX],outBuf[MAX],count=0;voidfindData(){}voidReadData(){Int1;FILE*fp;fp=fopen("IN.DAT","r");for(i=0;i标准答案:voidfindData(){inti,j,temp,flag;for(i=5;i=inBuf[j])flag=1;//如果当前数据比前5个数中的一个要大,则将标志置1,以示不满足要求if(flag==0){outBuf[count]=inBuf[i];//将满足要求的数据存人outBuf中count++;//将计数器加1}}for(i=0;i%count-1;i++)//以下是将数据进行从大到小排序的程序for(j=i+1;j知识点解析:本题主要考查数据的奇偶判断、数组中数据的比较及排序程序步骤;1.查找符合要求的项;利用条件inBuf[i]%2!=0找出数值是奇数的项。用该项与其前面的连续5项相比较,如果有一项不符合要求(大于或等于前面的项),则可将该项排除,程序中的flag变量即是为此目的而设的。这样一来便可找出所有符合要求的项。2.排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件in38.dat中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:若一个4位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且此4位数是偶数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到out38.dat文件中。注意:部分源程序已给出。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("in38.dat","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);}voidmain(){inti;readDat();jsVal();printf("满足条件的数=%d\n",cnt);for(i=0;i<cnt;i++)printf("%d\n",b[i]);writeDat();}writeDat(){FILE*fp;inti;fp=fopen("out38.dat","w");fprintf(fp,"%d\n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}标准答案:已知数据文件in38.dat中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:若一个4位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数

温馨提示

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

评论

0/150

提交评论