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

下载本文档

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

文档简介

国家三级(网络技术)机试模拟试卷7(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数readData()负责将IN.DAT中的数据读到数组inBuf[]中。请编制一函数findData(),该函数的功能是;依次从数组inBuf中取出一个四位数,如果四位数连续大于该四位数前的5个数且该数是奇数(该四位数以前不满5个数,则不统计),该数必须能被7整除,则按照从小到大的顺序存人outBuf[]中,并用count记录下符合条件的数据的个数。函数writeData()负责将outBuf[]中的数据输出到文件OUT.DAT中,并且在屏幕上输出。注意;部分源程序已给出。程序中已定义数组;inBuf[200],outBuf[200],已定义变量;count。请勿改动主函数main()、读函数readData()和写函数writeData()的内容。试题程序;#include#defineMAX200intinBuf[MAX],outBuf[MAX],count=0;voidfindData(){}voidreadData(){inti;FILE*fp;fp=fopen("IN.DAT","r");for(i=0;i标准答案:voidfindData(){inti,j,temp,flag;count=0;for(i=5;ioutBuf[j])//如果第i位比它后面的数大{//则将两者进行交换,也即将更小的数放到第i位temp;outBuf[i];outBuf[i]=outBuf[j];outBuf[j]=temp;}}知识点解析:本题考查的主要是数据的奇偶性判断及数据的排序。基本思想是;1.查找符合要求的,利用条件inBuf[i]%2!=0找出奇数。用该数与其前面的连续5个数相比较,如果有一个数不符合要求(小于或等于后面的数),则可将该数排除,这样便可找出所有符合要求的项。2.将当前数与其后的各个数相比较,如果当前数比其后的数大,则将两数据进行交换,从而使得前面的数小于后面的数,最终达到从小到大排序的目的。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编写函数countValue(),其功能是;计算500~800之间素数的个数Count,并按所求素数的值从小到大排序,再计算其间隔加、减之和,即第1个素数~第2个素数+第3个素数一第4个素数+第5个素数……的值sum。函数WriteData()负责把结果输出到OUT.DAT文件中。注意;部分源程序已给出。请勿改动主函数main()和写函数WriteData()的内容。试题程序;#includeintcount,sum;voidWriteData();voidcountValue(){}voidmain(){count=sum=0;countValue();printf("count=%d\n,sum=%d\n",count,sum);WriteData();}voidWriteData(){FILE*fp;fp=fopen("OUT.DAT","w");fprintf(fp,"%d\n%d\n",count,sum);fclose(fp);}标准答案:voidcountValue(){inti,j,flag,temp;intoutBuf[300];for(i=500;i<800;i++){flag=0;for(j=2;joutBuf[j])/*如果第i位比它后面的数大则将两者进行交换,也即将更小的值放到第i位*/{temp=outBuf[i];outBuf[i]=outBuf[j];outBuf[j]=temp;}for(i=0;i知识点解析:本题主要考查素数的判断、排序和数组中指定下标元素的求和问题。1.判断是否为素数;素数的定义是;若一个数除了其自身和1再没有其他的除数,则该数就是素数。故用其定义可以很容易判断。在2到所判断数之间的数进行扫描,若有一个除数,则该数就不是素数。2.排序;排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大.则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。3.计算其间隔加、减之和;判断下一位数的标号是奇数还是偶数,若下标为偶数(即第奇数个)则加,否则则减。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个整数,函数read_dat(intinBuf[MAX])负责将这200个数读到数组inBuf[]中。请编制程序,要求;求出数组inBuf[]中奇数的个数countl和偶数的个数count2,以及数组inBuf下标为奇数的元素值的算术平均值average(保留2为小数),结构输出到OUT.DAT中。部分程序、读函数read_dat(intinBuf[MAX])及输出格式已给出。试题程序;#include#include#defineMAX200voidread_dat(intinBuf[MAX]){inti,j;FILE*fp;fp=fopen("IN.DAT","rf");for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fp,"%d,",&inBuf[i*10+j]);printf("%d",inBuf[i*10+j]);}printf("\n");}fclose(fp);}voidmain(){intcountl,count2,inBuf[MAX];floataverage;FILE*fw;inti,k=0;longj;system("CLS");fw=fopen("OUT.DAT","w");readdat(inBuf);average=0;count1=0;count2=0;printf("\n\ncount1=%d,count2=%d,average=%6.2f\n",count1,count2,average);fprintf(fw,"%d\n%d\n%6.2f\n",count1,count2,average);fclose(fw);}标准答案:for(1=0;i知识点解析:本题主要考查依据数组下标对数据进行筛选及平均值的求法。程序基本步骤是;1.对200个数进行遍历,如果inBuf[i]是奇数,则countl加1;否则,count2加1。如果当前下标是奇数,则k加1,并将inBuf[i]累加到average上。2.所有数都判断完成后average=average/k得到平均值。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义循环整型变量i和用于保存数组xx中的能被3整除或能被7整除的元素的个数变量cnt1,并把其值设置为0。把全局变量max、cnt的初值设置为0;把变量pj的初值设置为0.0。②采用for循环语句,循环变量i从0开始,依次递增到N-1,对数组xx中的每一个数组元素xx[i]用if条件语句判断其值是否能被3整除或能被7整除,如果xx[i]满足上述条件,则把其值累加到变量pj,同时变量cnt1的值加1。再判断数组元素xx[i]与max的大小,如果xx[i]大于max,则xx[i]的值赋给max,同时把变量cnt的值赋为1,如果xx[i]等于max,则变量cnt的值加1。③退出循环后,用变量pj的值除以cnt1的值就得到满足条件的数的算术平均值。在for循环语句对200个整数逐个进行扫描,判断其能被3整除或能被7整除的数,并把这些数累加到变量pj,并统计这些数的个数,用这些数的和除以它们的个数,就得到这些数的平均值。对于求出数组xx中的最大数max及最大数的个数cnt的问题,把数组xx中的第一个数赋给变量max,对于能被3整除或能被7整除的数与max的值比较大小,如果此数比max的值大,则把这个数赋值给max,如果此数等于max的值,则最大数的个数cnt加1。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、在文件in75.dat中有200组数据,每组有3个数,每个数均为3位数。函数readDa(()是读取这200组数存放到结构数组aa中。请编制函数JsSort(),其函数的功能是:要求在200组数据中找出条件为每组数据中的第一个数大于第二个数加第三个数之和,其中满足条件的个数作为函数JsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数按照每组数据的第一个数加第三个数之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中。最后调用函数writeDat()把结果bb输出到文件out75.dat。注意:部分源程序已给出。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>typedefstruct{intxl,x2,x3;}Data;Dataaa[200],bb[200];intjsSort(){}voidmain(){intcount;readDat();count=jsSort();writeDat(count);}readDat(){FILE*in;inti;in=fopen("in75.dat","r");for(i=0;i<200;i++)fscanf(in,"%d%d%d",&aa[i].x1,&aa[i].x2,&aa[i].x3);fclose(in);}writeDat(intcount){FILE*out;inti;clrscr();out=fopen("out75,dat","w");for(i=0;i<count;i++){printf("%d,"%d,"%d,第一个数+第三个数=%d\n",bb[i].x1,bb[i].x2,bb[i].x3,bb[i].x1+bb[i].x3);fprintf(out,"%d,%d,%d\n",bb[i].x1,bb[i].x2,bb[i].x3);}fclose(out);}标准答案:intjsSort(){inti,j,count=0;Dataval;for(i=0;i<200;i++)if(aa[i].xl>aa[i].x2+aa[i].x3)/*如果每组数据中的第一个数大于第二、三个数之和*/{bb[count].xl=aa[i].x1;/*把满足条件的数据存入结构数组bb中*/bb[count].x2=aa[i].x2;bb[count].x3=aa[i].x3;count++;/*统计满足条件的数据的组数*/}for(i=0;i<count-1;i++)/*对bb中的数按照每组数据的每一个数加第三个数之和的大小进行升序排列*/for(j=i+l;j<count;j++)if(bb[i).x1+bb[i].x3>bb[j].x1+bb[j].x3){val=bb[i);bb[i]=bb[j];bb[j]=val;}returncount;/*满足条件的数据的组数*/}知识点解析:本题考查的知识点如下:(1)结构体及结构数组。(2)数据的排序。(3)函数的返回值。本题中,定义了结构类型和结构数组,这就要涉及到结构体和结构数组的访问。相同类型的结构体变量之间可以直接赋值,也可以依次对结构体中的每个变量进行赋值或访问。排序使用“选择排序法”。函数的值通过return语句返回,格式为:return表达式或return(表达式)或return,当函数没有返回值时用第3种格式。在本题中,要用第1种或第2种格式。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN78.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果一个4位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值人于等于个位数字上的值,并且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT78.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("IN78.DAT","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);}main(){ihti;readDat();jsVal();printf("满足条件的数=%d\n",cnt);for(i=0;i<cnt;i++)printf("%d",b[i]);printf("\n");writeDat();}wrlteDat(){*fp;FILEinti;fp=fopen("OUT78.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}标准答案:voidjsVal(){inti,thou,hun,ten,data,j;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>=hun)&&(hun>=ten)&&(ten>=data)&&a[i]0/2!=O){/*如果千位数大于等于百位数,百位数大于等于十位数,十位数大于等于个位数,并且此数是奇数*/b[ont]=a[i];/*则将满足条件的数存入数组b中*/cnt++;/*统计满足条件的数的个数*/}}for(j=i+l;j<cnt;j++)/*将数组b中的数按从小到大的顺序排列*/if(b[i]>b[j]){data=b[i];b[i]=b[j];b[j]=data;}}知识点解析:本题考查的知识点如下;(1)将一个4位整数各位上的数转变成单独的数。(2)判断结构中多个条件的布尔运算。(3)数据的排序。在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数字。这里借助特殊运算符号“%”(取余)和“/”(整除)。将一个4位数整除1000则可得到其千位上的数字,除以1000取余再整除100则可得百位上的数字,除以100取余再整除10则可得十位上的数字,除以10取余则得个位上的数字。若.一个数除以2取余为1,则这个数是奇数。题目中的所有条件必须同时满足,所以各条件之间用“与”运算。先将满足条件的数存入数组b中;再对数组中的数据进行排序。最后的排序采用“选择排序法”。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN34.DAT中存有100个产品销售记录,每个产品销售记录由产品代Cadm(字符型4位)、产品名称me(字符型10位)、单价dj(整型)、数量sl(整型)、金额(长整型)几部分组成。其中,金额=单价X数量可计算得出。函数ReadDat()的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT34.DAT中。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDaq)的内容。试题程序:#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];charmc[ll];intdj;intsl;longje;}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[ll];inti;fp=fopen("IN34.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].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(){FILE*fp;inti;fp=fopen("OUT34.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].sl,sell[i].je);}fclose(fp);}标准答案:voidSortDat(){ihti,j;PROxy;for(i=0;i<99;i++)for(j=i+l;j<100;j++){if(strcmp(sell[i].dm,sell[j].dm)<0)/*按产品代码从大到小排列*/{xy=sell[i];sell[ii=sell[j];sell[j]=xy;}elseif(strcmp(sell[i].dm,sell[j].dm)==O)/*若产品代码相同*/if(sell[i].je/*则按金额从大到小进行排列*/{xy=sell[i];sell[ii=sell[j];sell[j]=xy;}知识点解析:本题考查的知识点如下;(1)结构体及结构数组。(2)结构数组的排序。(3)字符型数组的比较。本题着重考查结构体变量的访问、赋值,包括结构体本身及结构体中各个成员的访问和赋值。根据题意要求,我们首先要比较产品代码。因为产品代码为字符型,所以不能使用简单的比较运算符进行比较。在这里,我门使用了字符串处理函数strcmp(char*strll,char*strl2,unsignedintcout)对其进行比较。对于比较结果,若是代码相同,则要按照金额进行新的比较,否则可直接存入数组。因为已定义了结构数组,就可以使用循环进行比较排序。排序同样采用前面介绍的“选择排序法”。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN86.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:把千位数字和十位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新十位数字均不为0,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT86.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("IN86.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("OUT85.DAT","w");fprintf(fp,"%d\n",cnt)for(i=0;i<cnt;i++)fprintf(fp,"%d\n

温馨提示

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

评论

0/150

提交评论