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

下载本文档

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

文档简介

国家三级(网络技术)机试模拟试卷23(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义循环变量i、j、k和整型变量len、p。②第一层for循环中,循环变量i从0开始,依次递增直到其值等于20,实现对20行数据的逐行处理。在循环体中,对于i行首先调用函数strlen(xx[i])求得第i行字符串的长度,并把其值赋给变量len,再用len除以2,得到第i行字符串长度的一半,赋给变量p。在第二层for循环中,循环变量j从0开始,依次递过来增直到其值等于(p-1),在第三层for循环中,循环变量k从j+1开始,依次递过来增直到其值等于p,比较字符xx[i][j]ASCII码值与xx[i][k]ASCII码值的大小,如果字符xx[i][j]的ASCII码值小于xx[i][k]的ASCII码值,则两者进行互换实现对第i行字符串左半部分的字符串按降序排列。③用变量len的值对2求余数,如果余数为1,则调用函数字符串拷贝函数strcpy(),把从字符串xx[i]+p+1开始直到字符串xx[i]的结尾的子字符拷贝到字符串变量str中,再调用字符串连接函数stmcat(()把字符串xx[i]的中间字符连接到字符串变量str的后面,再调用字符串连接函数stmcat()把字符串xx[i]的左半部分的子字符串连接到变量str的后面;如果余数不等于1,则调用字符串拷贝函数strcpyl(),把从字符串xx[i]+p开始直到字符串xx[i]的结尾的子字符拷贝到字符串变量str中,再调用字符串连接函数stmcat()把字符串xx[i]的左半部分的子字符串连接到变量str的后面,实现字符串xx[i]左右部分子字符串的交换。④调用字符串拷贝函数strcpy(),把字符串变量str的值拷贝到字符串xx[i],实现把排序后的结果仍按行重新存入字符串数组xx中。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义循环变量i、j和无符号整型变量v。②在for循环语句中,循环变量i从0开始,依次递增直到其值等于MAX。在循环体中,用if语句判断如果a[i]是奇数且b[i]是偶数或者a嘲是偶数且b[i]是奇数,则把a[i]左移八位后与b嘲的和赋给c[cnt],同时cnt加1。③在第一层for循环语句中,循环变量i从0开始,依次递增直到其值等于或大于cnt。在第二层for循环语句中,循环变量j从i+1开始,依次递增直到其值等于或大于cnt。在循环体中,用if语句判断如果c[i]大于c[j],则两者互换,实现数组c中元素从小到大的排序。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个整数,函数read_dat(intinBuf[MAX])负责将这200个数读到数组inBuf[]中。请编制程序,要求;求出数组inBuf[]中最大数max及最大数的个数count和数组inBuf[]中能被3整除或能被7整除的数的算术平均值average(保留2位小数),结果输出列OUT.DAT中。部分程序、读函数read_dat(intinBuf[MAX])及输出格式已给出。试题程序;#include#include#defineMAX200voidreaddat(intinBuf[MAX]){inti,j;FILE*fp;fp=fopen("IN.DAT","r");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);}voidmaln(){intcount,inBuf[MAX],max;floataverage;FILE*fw;inti,k=0;longj;system("CLS");fw=fopen("OUT.DAT","w");readdat(inBuf);average=0;count=0;max=0;j=0;printf("\n\nmax=%d,count=%d,average=%6.2f\n",max,count,average);fprintf(fw,"%d\n%d\n%6.2f\n",max,count,average);fclose(fw);}标准答案:for(i=0;imax)//如果某个数比先前确定的最大值大max;inBuf[i];//则将该数设为新的最大值for(i=0;i知识点解析:本题主要考查依据数组下标对数据进行筛选及平均值的求法。程序基本步骤是;1.对200个整数进行遍历,求出最大值max,再统计出最大值的个数。2.求出能被3或7整除的数,所以两个条件之间用"或"运算,将满足条件的数累加到j中。3.最后用j/k求其平均值。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数ReadData()负责将IN.DAT中的数据读到数组inBuf[]中。请编写一个函数findValue(),其功能是;求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数count,按照从大到小的顺序存人outBuf[]中,并用count记录下符合条件的数据的个数。函数WriteData()负责将outBuf[]中的数据输出到文件OUT.DAT中并且在屏幕上打出。注意;部分源程序已给出。程序中已定义数组;inBuf[200],outBuf[200],已定义变量;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],tempfor(i=0;i0){outBuf[count]=inBuf[i];count++;}}for(i=0;i知识点解析:本题主要考查数位分解及排序。数位分解就是将n位数上各个数位上的数值单独分离出来。解决此问题的方法是;将n位数对10求余可以将个位上的数值分离出来。将这个n位数除以10以后得到一个n-1位数,则此时n位数原来的10位就变成了n-1位数的个位,再将此n-1位数对10求余便可得到原n位数的十位。依此类推,按照同样的方法便可将n位数各个数位上的数值分离出来。程序步骤;1.将数值送入temp中。2.由temp%10得到个位数;(temp/10)%10得到十位数……如此可得到各位上的数值。3.按照题目所给的条件选出数据。4.对选出的数据进行排序,排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadData()负责读取这若干个正整数并存人数组inBuf[]中。请编制函数findValue(),其功能要求;(1)求出该文件中共有多少个正整数totleNum;(2)求这些数右移1位后,产生的新数是偶数的个数totleCnt,以及满足此条件的数(右移前的值)的算术平均值totleAverage。函数WriteData()负责把所求的结果输出到文件OUT.DAT中。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#defineMAX200intinBuf[MAX];inttotleNum=0;/*文件IN.DAT中共有多少个正整数*/inttotleCnt=0;/*符合条件的正整数的个数*/doubletotleAverage=0.0;//平均值intReadData(void);voidWriteData(void);voidfindValue(void){}voidmain(){inti;system("CLS");for(i=0;i标准答案:voidfindValue(void){inti;for(i=0;i知识点解析:本题主要考查数据移位、奇偶判断及平均值求法。1.数据移位;数据左移一位相当于将数据乘以2,数据右移一位相当于将数据除以2。2.奇偶判断;如果一个数对2求余结果为0,则该数为偶数;否则,为奇数。3.求平均值;由于本题中的数据量比较大,若采用先将各个值加起来再除以总个数来取平均的话,变量不能存储那么大的数据而导致溢出。本题的程序采用的方法是;N个数的平均值=[前(N-1)个数的平均值*(N-1)+第N个数]/N,采用这种递推的方法就避免了将大的数据存入变量中而产生溢出。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、下列程序的功能是:将一正整数序列{K1,K2,…,K9}重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比K1大的数都在K1的右面(后续的再向右存放),从K1向右扫描。要求编写函数jsValue()实现此功能,最后调用函数writeDat()把新序列输出到文件out90.dat中。说明:在程序中已给出了10个序列,每个序列中有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。例如:序列排序前{6,8,9,1,2,5,4,7,3}序列排序后{3,4,5,2,1,6,8,9,7}注意:部分源程序已给出。请勿改动主函数main()和写函数writeDat()的内容。试题程序:#include<stdio.h>jsValue(inta[10][9]){}main(){inta[10][9]={{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},{8,2,1,9,3,5,4,6,7},{3,5,1,2,9,8,6,7,4},{4,7,8,9,1,2,5,3,6},{4,7,3,5,1,2,6,8,9},{9,1,3,5,8,6,2,4,7},{2,6,1,9,8,3,5,7,4},{5,3,7,9,1,8,2,6,4},{7,1,3,2,5,8,9,4,6},};inti,j;jsValue(a);for(i=0;i<10;i++){for(j=0;j<9;j++){printf("%d",a[i][j]);if(j<=7)printf(",");}printf("\n");}writeDat(a);}writeDat(inta[10][9]){FILE*fp;inti,j;fp=fopen("out90.dat","w");for(i=0;i<10;i++){for(j=0;j<9;j++){fprintf(fp,"%d",a[i][j]);if(j<=7)fprintf(fp,",");}fprintf(fp,"\n");}fclose(fp);}标准答案:voidjsValue(inta[10][9]){intvalue,i,j,k,num;for(i=0;i<10;i++){value=a[i][0];/*将一行的第一个元素赋给value*/for(j=0;j<9;j++)if(a[i][j]<value)/*若后面的数中有比第1个数据小的数*/{num=a[i][j];/*则把这个数取出,赋给num*/for(k=j;k>0;k--)/*将这个数据左侧的数依次向右移动*/{a[i][k]=a[i][k-1];}a[i][0]=num;/*再将这个数放在最左侧*/}}}[解析]本题考查的知识点如下:(1)二维数组的访问和数组元素的移动。(2)循环结构和判断结构的嵌套使用。数据存放在一个二维数组中,每一行数为数据处理的基本单位。将第1个数取出依次和后面的数比较,若后面的数中有比第1个数据小的数,则将这个数取出。将这个数据左侧的数依次向右移动(包括第1个数),然后将这个数放在最左侧。扫描完一行后,比第1个数小的数就都在第1个数的左侧,而比它大的就在它的右侧。对数的扫描和移动均可以使用循环实现。再使用循环实现对每一行数据的访问。知识点解析:暂无解析国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件in80.dat中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数isValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于0的个数cnt,再求出所有满足此条件的4位数平均值pjz1,以及所有不满足此条件的4位数平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out80.dat文件。例如:1239,9-1-2-3>0,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。8129,9-8-1-2<0,则该数不满足条件,计算平均值pjz2。注意:部分源程序已给出。程序中已定义数组:a[300],b[300],定义变量:cnt,pjz1,pjz2。请勿改动主函数main()、读函数readDat()和写函数writeDa(()的内容。试题程序:#include<stdio.h>inta[300],cnt=0;doublepjzl=0.0,pjz2=0.0;voidjsValue(){}main(){inti;readDat();jsValue();writeDat();printf("cnt=%d\n满足条件的平均值pjz1=%7.2If\n不满足条件的平均值pjz2=%7.2If\n",cnt,pjz1,pjz2);}readDat(){FILE*fp;inti;fp=fopen{"in80.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("out80.dat","w");fprintf(fp,"%d\n%7.21f\n%7.21f\n",cnt,pjzl,pjz2);fclose(fp);}标准答案:voidjsValue(){inti,thou,hun,ten,data,n=0;for(i=O;i<300;i++){thou=a[i]/1000;/*求四位数的千位数字*/hun=a[i]%1000/100;/*求四位数的百位数字*/ten=a[i]%100/10;/*求四位数的十位数字*/data=a[i]%10;/*求四位数的个位数字*/if(data-thou-hun-ten>0)/*如果个位数减千位数减百位数大于0*/{cnt++;/*统计满足条件的数的个数*/pjz1+=a[i];/*将满足条件的数求和*/}else{n++;/*否则统计不满足条件的数的个数*/pjz2+=aIi];/*将不满足条件的数求和*/}pjz1/=cnt;/求满足条件的数的平均值*/pjz2/=n;/*求不满足条件的数的平均值*/}知识点解析:本题考查的知识点如下:(1)特殊运算符“%”及“/”的使用。(2)循环结构及选择结构的使用?在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数字。这里借助特殊运算符号“%”(取余)和“/”(整除),拆分方法略。然后判断“个位数-千位数-百位数-十位数”的值是否大于0。依次求得符合条件的数的和及其平均值。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、补充程序;该程序要求实现的功能是;把S字符串中的所有字符左移一个位置,串中的第一个字符移动到最后。请编写chg(char*s)函数实现以上功能,最后调用函数readWriteData()从IN.DAT文件中读取50组数据,分别得出结果,并把结果输出到OUT.DAT文件中。例如;s字符串中原有内容为;Mn.123xyZ,调用后结果为;n.123xyZM。注意;部分源程序已经给出。请勿改动主函数main()和输出函数readWriteData()的内容。试题程序;#include#include#defineN81voidreadWriteData()voidchg(char*s){}main(){chara[N];printf("Enterastring;");gets(a);printf("Theoriginalstringis;");puts(a);chg(a);printf("Thestringaftermodified;");puts(a);readWriteData();}voidreadWriteData(){inti;chara[N];FILE*rf,*wf;rf=fopen("IN.DAT","r");wf=fopen("OUT.DAT","w");for(i=0;i<50;i++){fscanf(rf,"%S",a);chg(a);fprintf(wf,"%s\n",a);}fclose(rf);fclose(wf);}标准答案:voidchg(char*s){inti,strl;charch;strl=strlen(s);ch=*s;for(i=0;i知识点解析:取s所指的字符串的长度,将其首字母放入ch中,循环遍历第1至倒数第2个字符,再将后一个字符赋给前一个字符。将保存的第一个字符存入最后一个位置即可。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、编写一个函数findStr(),该函数的功能是;统计一个以单词组成的字符串中(各单词之间以空格隔开)所含指定长度单词的个数。例如,输入字符串为"youareverygoodyou",指定要查找的单词的长度为3,则函数返回值是3。函数readWr

温馨提示

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

评论

0/150

提交评论