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

下载本文档

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

文档简介

国家三级(网络技术)机试模拟试卷32(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编制函数intfindValue(intoutBuf[]),其功能是;在三位整数(100~999)中寻找符合下面条件的整数,并依次从小到大存人数组b中;它既是完全平方数,又有两位数字相同,例如144,676等。满足该条件的整数的个数通过所编制的函数返回。最后调用函数WriteData(intnum,intb[])把结果输出到文件OUT.DAT中。注意;部分源程序已给出。请勿改动主函数main()和写函数WriteData()的内容。试题程序;#includevoidWriteData(int,intb[]);intfindValue(intoutBuf[]){}voidmain(){intb[20],hum;num=findValue(b);WriteData(hum,b);}voidWriteData(intnum,intb[]){FILE*out;inti;out=fopen("OUT.DAT","w");printf("num=%d\n",num);fprintflout,"num=%d\n",num);for(i=0;i标准答案:intfindValue(intoutBuf[]){inti,dl,d2,d3,count=0;for(i=10;i*i<1000;i++){dl=i*i/100;//求该平方数的百位数字d2=i*i/10%10;//求该平方数的十位数字d3=i*i%10;//求该平方数的个位数字if(d1==d2||d2==d3||d3==d1)outBuf[count++]=i*i;}returncount;}知识点解析:本题主要考查数位分解及排序。基本思路是;由于最小的三位数100是10的平方,因此可以从10开始,判断每个数的平方值是否有两位数字相同,直到找到数的平方值大于999,这样既可遍历100~999中所有的平方数,循环中将满足条件的数存入数组outBuf中,由于遍历是从小到大的,因此数组outBuf中的元素已经按升序排列。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN61.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量s1(整型)、金额je(长整型)几部分组成。其中,金额二单价X数量可计算得出。函数ReadDat()的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最、终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT61.DAT中。注意:部分源程序己给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#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("IN61.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+l8,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);voidWriteDat(){FILE*fp;ihti;fp=fopen("OUT61.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(sell[i].je>sell[j].je)/*按金额从小到大进行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}elseif(sell[i].je==sell[j].je)/*若金额相同*/if(strcmp(sell[i].dm,sell[j].dm)<O)/*则按产品代码从大到小进行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}}知识点解析:本题考查的知识点如下:(1)结构体及结构数组的相关操作。(2)结构数组的排序。(3)字符型数组的比较。本题着重考查结构体变量的访问、赋值,包括结构体本身及结构体中各个成员的访问和赋值。根据题目要求,我们首先要按照金额对记录从小到大进行排列。若金额相同,则要比较产品代码。因为产品代码为字符型,所以不能使用简单的比较运算符进行比较。在这里,我们使用了字符串处理函数strcmp(char*strll,char*strl2,unsignedinttout)对其进行比较。因为已定义了结构数组,就可以使用循环进行比较排序。排序采用前面介绍的“选择排序法”。出本层循环结构,所以不能使用break语句。则指向数组的第3个元素。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(intm,intk,intxx[])实现程序的要求,最后调用函数readwriteDAT()把结果输出到out31.dat文件中。例如,若输入17,5,则应输出19,23,29,31,37。注意:部分源程序已给出。请勿改动主函数main()和输入输出函数readwriteDAT()的内容。试题程序:#include<conio.h>#includeVoidreadwriteDAT();Voidnum(intm,intk,,intXX[]){}main(){intm,n,xx[1000];Clrscr();printf(“\nPleaseentertWOintegers:”)‘scanf(“%d,%d”,&m,&n);num(m,n,XX);for(m=0;m<n;m++)printf(“%d”,XX[m]);printf(”\n”);readwriteDAT();)VOidreadwriteDAT(){intm,n,xx[1000],i;FILE*rf.,*Wf;rf=fopen(“in31.Dat”,r”);Wffopen(“ou1t31.Dat”/”w”);。for(i=0;i<10;i++){fscanf(rf,%d,”%d”,&m,&n);num(m,n,XX);for(m=0;mfprintf(wf,%d”,xx[m]);fprintf(wf,“\n”);}fclose(rf);fclose(wf);}标准答案:voidnum(intm,intk,intxxl)){intdata=m+l;/*从大于整数m的数开始找*/inthalf,I,n=0;while(1){half=data/2;for(I=2;I<=half;I++)/*如果该数依次除以从2到一半的整数,余数都不是0,则该数是素数*/if(]if(data%I==O)break;/*如果余数为0,则退循环,取下一个数判断*/if(I>half){xx[n]=data;n++;/*判断该数为素数后,将该数存入数组xx中,并累计素数的个数*/}if(n>=k)break;/*如果累计素数的个数超过了要求的个数,则退出循环*/data++;/*如果累计素数的个数小于要求的个数,则继续取下一个数*/}}知识点解析:本题考查的知识点如下:(1)循环结构与选择结构的嵌套使用。(2)强行退出循环结构。(3)特殊运算符"%"的使用。素数是除了1和它本身之外不能被其他数整除的数(1除外)。在本题中,首先要结合相关数学知识找出判定一个数是否为素数的方法,从而对数据进行筛选。如果数据a依次除以从2到a/2的整数,余数都不是0,则该数是素数。因为所给的数据是连续的数,而且最终所求的数据的个数一定,所以这里可以使用循环结构对数据依次筛选。同时嵌套选择结构对筛选的数据进行不同的处理。在a依次除以从2到a/2的整数的过程中,只要有一次余数为0,则可退出这一层循环,即退出整除取余的循环,进入下一个数的判断中。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、某级数的前两项A1=1,A2=1,以后各项具有如下关系;An=n-2+2An-1请编制Find_n()函数,其功能是;要求依次对于整数M=100,1000和10000求出对应的n值,使其满足;Snintb[3];voidWriteData();voidFindn(){}voidmain(){Find_n();printf("M=i00,n"%d\nM=1000,n=%d\nM=10000,n=%d\n",b[0],b[1],bE2]);WriteData();}voidWriteData(){FILE*fp;fp=fopen("0UT.DAT","w");fprintf(fp,"%d\n%d\n%d\D",b[0],b[1],b[2]);fclose(fp);}标准答案:voidFind_n(){intn=1;//定义计数器变量,保存求得的项数inta1=1,a2=1,an;//用来保存级数的值intsum0,sum;//用来存储级数的和的变量sumO=a1+a2;//计算前两项的级数和while(1)//无条件循环,循环体内有控制是否结束循环的语句{an=a1+a2*2;//求下一个级数sum=sum0+an;//求级数和al=a2;//将a2赋给a1a2=an;//将an赋给a2n++;if(sum0<100&&sum>=100)//如果满足Sn<100且Sn+1>=100b[0]=n//则将n存人数组单元b[0]中if(sum0<1000&&sum>=1000)//如果满足Sn<100且Sn+1>=1000b[1]=n;//则将n存人数组单元b[1]中if(sum0<10000&&sum>=10000)//如果满足Sn<100且Sn+1>=10000{b[2]=n;//则将n存人数组单元b[2]中break;//并强行退出循环}sum0=sum;//将sum赋给sum0,为下一次循环的求和作准备}}知识点解析:本题主要考查的是利用循环求级数。由级数的表达式可以看出,级数中的各项可以由循环依次求得。当级数的和达到要求的条件时即可退出循环结构。因为退出循环的两个条件Sn国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义局部字符变量ch和字符指针变量p,并使其指向字符串s。②当p所指的字符非空时,把字符*p赋给字符ch,当字符ch不是字母’z’或者’Z’时,把字符ch的ASCII码值加1,变成其下一个字符的ASCII码,并把这个值赋给字符*p,否则,如果字符ch是字符’z’,则把字符*p的设置为字符’a’,否则,如果字符ch是字符’Z’,则把字符*p的设置为字符’A’,字符指针变量加1,使其指向字符串s的下一个字符,在下一次循环中处理。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知IN7.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇数,则统计出满足此条件的数的个数ont,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT7.DAT文件中。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidwriteDat();voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN7.DAT","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);close(fp);}main(){inti;readDat();jsVal();printf("满足条件的数=%d\n",cnt);for(i=0;i<cnt;i++)printf("%d",b[i]);printf("\n");writeDat();}voidwriteDat(){FILE*fp;inti;fp=fopen("OUT7.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}标准答案:voidjsVal(){inti,i,flag=O;intk;for(i=0;i<MAX-5;i++){for(j=i+1;j<=i+5;j++)/*如果当前数比后面的5个数都大,则给标志变量flag赋值1*/{if(a[i]>a[i])flag=1;else{flag=O;break;}/*否则给标志变量flag赋值0并退出循环*/if(a[i]%2==0)/*如果该数是偶数,也给标志变量flag赋值0*/flag=0;}if(flag==1)/*将满足条件的数存入数组b中,并统计满足条件的数的个数*/{b[cnt]=a[i];cnt++;)}for(i=O;i<cnt-;i++)/*利用选择法对b数组中的元素进行从小到大的排序*/for(i=i+1;;j<cnt;i++)if(b[i]>b[i]){k=b[i];b[i]=b[j];b[j]=k;)}知识点解析:根据题意可知,要编制函数的功能有两部分:一是找出满足条件的4位数,二是对找出的数进行从小到大排序。首先利用一个for循环来依次从数组中取得4位数,接着用当前得到的4位数与该数后面的5个数依次进行比较,如果该数比后面的5个数都大,则给标志变量flag赋值1,接着对flag进行判断,如果不为1,则该数肯定不符合条件,直接去取下一个数。若flag值为1,再来判断该数是否是奇数,如果该数又是奇数,则把该数加入到数组b中。这样就可以依次取出合条件的数。然后利用选择法对b数组中的元素进行从小到大的排序。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件in37.dat中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价×数量可计算得出。函数ReadDat()的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件out37.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;intsl;longje;}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell,0,sizeof(sell));ReadDat()SortDat()WriteDat(;}voidReadDat(){FILE*fp;charstr[80],ch[11];inti;fp=fopen("IN37.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("OUT37.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(){inti,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[i]=sell[j];sell[j]=xy;}elseif(strcmp(sell[i].dm,sell[j].dm)==0)/*若产品代码相同*/if(sell[i].je<sell[j].je)/*则按金额从大到小的进行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}}知识点解析:本题考查的知识点如下:(1)结构体及结构数组的相关操作。(2)结构数组的排序。(3)字符型数组的比较。本题着重考查结构体变量的访问、赋值,包括结构体本身及结构体中各个成员的访问和赋值。结构数组的操作与一般数组的区别不大,只要注意其中的元素是结构体,以及对结构体操作的方法。根据题意要求,我们首先要比较产品代码。因为产品代码为字符型,所以不能使用简单的比较运算符进行比较。在这里,我们使用了字符串处理函数strcmp(char*strl1,char*strl2,unsignedintcout)对其进行比较。对于比较结果,还要按情况进行新的操作——存入结构数组或者再进行比较。因为已定义了结构数组,就可以使用循环进行比较排序。排序采用前面介绍的“选择排序法”。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现仅有一个不同点,即判断符合条件的四位数是“千位+个位=百位+十位”,参考答案的第8条语句,修改if条件语句的判断条件即可。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN23.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制函数JsVal(),其功能是:依次从数组a中取出一个4位数,如果4位数连续大于该4位数以前的5个数且该数是奇数,该数必须能被7整除,则统计出满足此条件的数的个数cnt,并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT23.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include〈stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){

温馨提示

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

评论

0/150

提交评论