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

下载本文档

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

文档简介

国家三级(网络技术)机试模拟试卷16(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编写函数countValue(),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件OUT11.DAT中。例如,若n为1000时,函数值应为s=153.909064。注意:部分源程序已给出。请勿改动主函数main()和输入输出函数progReadWrite()的内容。试题程序:#include<conio.h>#include<math.h>#include<stdio.h>doublecountValue(intn){}main(){clrscr();printf("自然数之和的平方根=%f\n",countValue(1000));progReadWrite();}progReadWrite(){FILE*wf;inti,n;floats;wf=fopen("OUTll.DAT","w");s=countValue(1000);fprintf(wf,"%f\n",s);fclose(wf);}标准答案:doublecountValue(intn){doublexy=0.0;inti;for(i=1;i<n;i++)if(i%3==0&&i%7==0)xy+=i;/*求n以内(不包括n)同时能被3与7整除的所有自然数之和*/xy=sqrt((double)xy);/*再对总和求平方根*/returnxy;}知识点解析:本题的解题思路是:利用一个for循环依次从n个自然数当中取数,对当前取出的数进行条件判断。判断条件为:既能被3整除同时也能被7整除,因此,用“&&”运算符来连接两个条件表达式,当某数满足判断条件时,就把该数累加到变量xy中(xy的初始值为0.0),当所有满足条件的数都被找完后,对累加求得的变量xy的值进行求平方根的计算,并把所求得的结果作为函数值返回。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是;求出满足千位数上的值减百位数上的值减十位数上的值减个位数上的值大于零且此四位数是奇数的数,并按照从小到大的顺序存人数组outBuf[]中,并用count记录下符合条件的数的个数。函数WriteData()负责将outBuf[]中的数输出到文件OUT.DAT中并且在屏幕上显示出来。注意;部分源程序已给出。程序中已定义数组;inBuf[NUM],outBuf[NUM],已定义变量;count。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#defineNUM200intinBuf[NUM],outBuf[NUM],count=0;voidReadData();voidWriteData();voidfindValue(){}voidmain(){inti;ReadData();findValue();WriteData();printf("count=%d\n",count);for(i=0;i标准答案:voidfindValue(){inti,j,k,d[4],temp,flag;for(i=0;i%NUM;i++){for(j=0;j<4;j++){temp=inBuf[i];//将要进行分解的数据存入temp中for(k=0;k0&&d[3]%2!=0){outBuf[count]=inBuf[i];count++;}}for(i=0;ioutBuf[j])/*如果第i位比它后面的数大则将两者进行交换,也即将更小的值放到第i位*/{temp=outBuf[i];outBuf[i]=outBuf[j];outBuf[j]=temp;}}知识点解析:本题主要考查数位分解及排序。数位分解就是将n位数上各个数位上的数值单独分离出来。解决此问题的方法是;将n位数对10求余可以将个位上的数值分离出来。将这个n位数除以10以后得到一个n-1位数,则此时n位数原来的十位就变成了n-1位数的个位,再将此n-1位数对10求余便可得到原n位数的十位。依此类推,按照同样的方法便可将n位数各个数位上的数值分离出来。程序步骤;1.将数值送入temp中。2.由temp%10得到个位数;(temp/10)%10得到十位数……如此可得到各位上的数值。3.按照题目所给的条件选出数据。4.对选出的数据进行排序,排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有300个四位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是;求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数count,再求出所有满足此条件的四位数平均值averagel,以及所有不满足此条件的四位数平均值average2,最后调用函数WriteData()把结果count、averagel、average2输出到OUT.DAT文件中。注意;部分源程序已给出。程序中已定义数组;inBuf[NUM],已定义变量;count,averagel,average2。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#defineNUM300intinBuf[NUM],count=0;doubleaverage1=0,average2=0;voidReadData();voidWriteData();voidfindValue(){}voidmain(){ReadData();findValue();WriteData();printf("count=%d\naverag1=%7.21f\naverag2=%7.21f\n",count,average1,average2);}voidReadData(){FILE*fp;inti;fp=fopen("IN.DAT","r");for(i=0;i标准答案:voidfindValue(){inti,j,k,d[4],temp,count_no=0;for(i=0;i知识点解析:本题主要考查数位分解及数据平均值的求法。程序步骤;1.将数值送入temp中。2.数位分解;由temp%10得到个位数;(temp/10)%10得到十位数……如此可得到各位上的数值。3.按照题目所给的条件选出数据。4.对选出的数据求平均值;由于本题中的数据量比较大,若采用先将各个值加起来再除以总个数来取平均的话,变量不能存储那么大的数据而导致溢出。本题的程序采用的方法是;N个数的平均值=[前(N-1)个数的平均值*(N-1)+第N个数]/N,采用这种递推的方法就避免了将大的数据存入变量中而产生溢出。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、对10个候选人进行选举,现有一个100条记录的选票文件IN84.DAT,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位候选人的记录内容均为字符0或1,1表示此人被选中,0表示此人未被选十,若一张选票选中人数大于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CoutRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中,最后调用函数WriteDat()把结果yy输出到文件OUT84.DAT中。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>charxx[100][11];intyy[10];intReadDat(void);voidWriteDat(void);voidCoutRs(void){}voidmain(){inti;for(i=0;i<10;i++)yy[i]=0;if(ReadDat()){printf("数据文件IN84.DAT不能打开!\n\007");return;}CoutRs();WriteDat();}intReadDat(void){FILE*fp;inti;chartt[13];if((fp=fopen("IN84.DAT","r"))==NULL)return1;for(i=0;i<lO0;i++){if(fgets(tt,13,fp)==NULL)return1;memcpy(xx[i],tt,10);xx[i][10]=0;}fclose(fp);return0;}voidWriteDat(){FILE*fp;inti;fp=fopen("OUT84.DAT","w");for(i=0;i<10;i++){fprintf(fp,"%d\n",yy[i]);printf("第%d个人的选票数=%d\n",i+1,yy[i]);}fclose(fp);}标准答案:voidCoutRs(void){inti,count,j;char*pf;for(i=0;i<l0;i++)yy[i]=0;for(i=0;i<l00;i++){pf=xx[i];/*指针pf指向字符串的第一个字符*/count=0;while(*pf)if(*pf==’1’){count++;/*统计每条记录中1的个数*/pf++;}elsepf++;if(count<=5)/*如果每条记录中1的个数小于等于5则为有效票*/{pf=xx[i];/*指针pf指向字符串的第一个字符*/j=0;while(*pf)/*统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中*/if(*pf==’1’){yy[j]+=l;j++;pf++;}elseif(*pf==’0’){j++;pf++;}}}}知识点解析:本题考查的知识点如下:(1)二维数组的操作。(2)指向数组的指针。在本题中,要先判断选票是否有效。因为记录存放在一个二维数组中,为了简便我们为数组的—组元素定义一个指向该数组每一行数据的指针,例如,char*P=xx[2]。初始时该指针指向该行的第一个元素,指针地址每加1,则指向下一个元素。这样就可以轻松地统计每一个选票。设一变量标记每一个选票中1的个数,若其不大于5,则选票有效。若选票有效,则依次查看哪一个元素为1,在数组yy相应的元素上加l。使用循环实现对所有记录的访问。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义整型循环变量i、.j。②在第一层for循环中,循环变量i从0开始,依次递增直到其值等于maxline,实现对文章每行的处理。第二层for循环中,循环变量j从0开始,依次递增直到其值大于或等于strlen(xx[i]),在循环体中,利用if条件语句判断如果xx[i]D]的值为字符’a’,则把xx[i]嘲的值设置为字符’z’。否则如果xx[i][j]的值在小写字符’a’与’z’之间,则把xx[i][j]的值减1,把其值变成其前一个字符的ASCII码。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:根据题意,本程序中要统计每条记录中的有效票数,因此需要先判断该记录是否有效,然后再对有效的记录做进一步处理,即统计每个人的得票情况。①首先定义两个循环变量i、j和一个计数变量cnt。②指定第一个for循环的循环条件,循环变量i从0开始,等于100时结束,每循环一次,变量i的值加1。③在for循环中,从第一条记录开始,每执行一次循环则处理一条记录是否满足要求。for循环语句执行流程大致如下:先将计数变量cnt赋值0(每执行一次循环时,都将重新赋初值0);然后通过一个for循环判断当前记录的10个数字是否为1,每次判断1个数字,如果数字等于1,则计数变量cnt的值加1,当第二个for循环执行完毕后,如果计数变量cm的值小于等于5,则再通过一个for循环重新判断哪些位置上的数等于1,并将相应位置上的数值累加1。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义整型循环变量i、j、k和局部整型变量value,hum。②在第一层for循环中,循环变量i从0开始,依次递增直到其值等于10,结束循环,实现对数组a[10][9]中每一行数据按照题目的要求进行处理。在循环体中,把第i行的第一个数a[i][0]赋给value。在第二层for循环中,循环变量i从0开始,依次递增直到其值等于或大于9,用if语句判断,如果数组元素a[i][j]的值小于value,则把a[i][j]的值赋给num,在第三层for循环中,循环变量k从j开始,依次递减直到其值等于或小于0,把a[i][k-1]的值赋给a[i][k],实现把a[i][j]前面的值向后移动一位,退出第三层for循环后,把num的值赋给a[i][0]。第二层循环依次执行,便实现了对i行的数据的处理,再依次执行第一层for循环,就可以完成对数组a[10][9]的每行数据的处理。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①首先定义两个循环整型变量i、j和一个用于数据交换的整型变量ab。②然后在for循环语句中,先指定循环变量i从0开始,依次递增到MAX-5(到MAX-5的原因是因为从倒数第5个数开始,其后面的数都不满5个数,与题目要求不符,因此可以省略最后5个数),接着对每个数组元素a[i]判断其是否为偶数且小于其后面连续的5个数,然后把满足此条件的数组元素a[i]赋给数组元素b[cnt],同时数组的下标变量cnt加1。③最后,用双重for循环语句对数组b中的数组元素两两比较大小,如果前一个数组元素大于后一个数组元素,则两者进行互换,实现对数组b进行升序或降序的排列。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编写函数countValue()其功能是;计算出自然数SIX和NINE,他们满足的条件是SIX+SIX+SIX=NINE+NINE+NINE的个数,以及满足此条件的所有SIX与NINE的和sum。最后调用函数WriteData()把结果count和sum输出到文件OUT.DAT中。其中,S,I,X,N,E各代表一个十进制数。注意;部分源程序已给出。请勿改动主函数main()和写函数WriteData()的内容。试题程序;#include

温馨提示

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

评论

0/150

提交评论