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

下载本文档

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

文档简介

国家三级(网络技术)机试模拟试卷30(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是对四位数的筛选条件有所不同,体现在两个方面:第一是判断新组合的两个两位数都为偶数;第二是两数相减后所要求的值域范围稍有不同,本题要求的是大于等于10小于等于20。参考答案的第10条语句,集中修改该语句即可。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个销售记录,每个记录均由产品代码ID(字符型4位)、产品名称name(字符型10位)、单价price(整型)、数量amount(整型)、金额value(长整型)几部分组成。其中;金额一单价×数量,函数ReadData()负责将IN.txt中的数据读到结构数组sell[]中。请编制函数sortData(),将各个记录按金额从大到小进行排列,若金额相同,则按产品名称从小到大进行排列,并将排列后的结果存放到sell[]中。函数WriteData()负责将sell[]中的数据输出到文件OUT.txt中。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#include#include#defineMAX100typedefstruct{charID[5];//产品代码charname[11];//产品名称intprice;//单价intamount;//数量longvalue;//金额}PRODUCT;PRODUCTsell[MAX];voidReadData();voidWriteData();voidsortData(){}voidReadData(){FILE*fp;charstr[80],ch[11];inti;fp=fopen("IN.DAT","r");for(i=0;i标准答案:voidsortData(){PRODUCTtemp;inti,j;memset(&temp,0,sizeof(temp));for(i=0;iO)){memcpy(&temp,&sell[i],sizeof(temp));/*将以&sell[i]为起始地址大小为sizeof(temp)的内存中内容复制到以&temp为起始地址的内存中*/memcpy(&sell[i],&selll,j],sizeof(temp));memcpy(&sell[j],&temp,sizeof(temp));}}知识点解析:本题主要考查结构数组排序的问题。所谓结构数组排序就是以结构某一元素为依据对结构数组进行排序。排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。由于结构不像变量那样可以通过简单的赋值来交换变量(如果要赋值的话需要对结构里的所有元素进行赋值替换,比较麻烦),所以在进行两个相邻结构交换时,用到内存拷贝函数来对内存的内容整体进行操作。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、设有n个人坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,若报到第m个人,则此人出圈,再从他的下一个人重新开始从1到m报数,如此进行下去,直到所有的人都出圈为止。请编制函数Josegh(),给出这n个人的顺序表。函数WriteData()负责把编号按照出圈顺序输出到文件OUT.DAT中。设n=100,s=1,m=10进行编程。注意;部分源程序已给出。请勿改动主函数main()和写函数WriteData()的内容。试题程序;#include#defineN100#defineS1#defineM10intsequence[N]={0},n,s,m;voidWriteData(void);voidJosegh(void){}voidmain(){m=M;n=N;s=S;Josegh();WriteData();}voidWriteData(void){inti;FILE*fp;fp=fopen("OUT.DAT","w");for(i=0;i标准答案:voidJosegh(void){inti,j,k=0,flag,out_num=0;//k用来标记每圈中已进行到第几个while(1){for(i=1;i<=100;i++){flag=0;for(j=0;j知识点解析:本题是一个实际问题。解决该问题的主要思路是;用k来记录每圈中已进行到第几个,如果k==m,则该同学出局。并用数组sequence[]来记录出圈者的编号。在进行下一圈的报数时,如果所到的编号已存在于sequence[]中,则跳过此人。如此下去,直到所有的人都出局,这时sequence[]中记录的就是出圈者的次序。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个销售记录,每个记录均由产品代码ID(字符型4位)、产品名称name(字符型10位)、单价price(整型)、数量amount(整型)、金额value(长整型)几部分组成。其中;金额一单价×数量,函数ReadData()负责将IN.txt中的数据读到结构数组sell[]中。请编制函数sortData(),将各个记录按金额从大到小进行排列,若金额相同,则按产品名称从小到大进行排列,并将排列后的结果存放到sell[]中。函数WriteData()负责将sell[]中的数据输出到文件OUT.txt中。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#include#include#defineMAX100typedefstruct{charID[5];//产品代码charname[11];//产品名称intprice;//单价intamount;//数量longvalue;//金额}PRODUCT;PRODUCTsell[MAX];voidReadData();voidWriteData();voidsortData(){}voidReadData(){FILE*fp;charstr[80],ch[11];inti;fp=fopen("IN.DAT","r");for(i=0;i标准答案:voidsortData(){PRODUCTtemp;inti,j;memset(&temp,0,sizeof(temp));for(i=0;iO)){memcpy(&temp,&sell[i],sizeof(temp));/*将以&sell[i]为起始地址大小为sizeof(temp)的内存中内容复制到以&temp为起始地址的内存中*/memcpy(&sell[i],&selll,j],sizeof(temp));memcpy(&sell[j],&temp,sizeof(temp));}}知识点解析:本题主要考查结构数组排序的问题。所谓结构数组排序就是以结构某一元素为依据对结构数组进行排序。排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。由于结构不像变量那样可以通过简单的赋值来交换变量(如果要赋值的话需要对结构里的所有元素进行赋值替换,比较麻烦),所以在进行两个相邻结构交换时,用到内存拷贝函数来对内存的内容整体进行操作。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN24.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT24.DAT文件中。例如:6712,6+2=7+1,则该数满足条件,存入数组b中,且个数cnt=cnt+1。8129,8+9≠1+2,则该数不满足条件,忽略。注意:部分源程序已给出。程序中已定义数组:a[300],b[300],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include〈stdio.h>inta[300],b[300],cnt=0;voidjsValue(){}main(){inti;readDat();jsValue();writeDat();printf("cnt=%d\n",cnt);for(i=0;i〈cnt;i++)printf("b[%d]=%d\n",i,b[i]);}readDat(){FILE*fp;inti;fp=fopen("IN24.DAT","r");for(i=0;i〈300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("OUT24.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i〈cnt;i++)fprintf(fp,"%d,\n",b[i]);fclose(fp);}标准答案:voidjsValue(){inti,thou,hun,ten,data,j;for(i=0;i〈300;i++){thou=a[i]/1000;/*求四位数的千位数字*/hun=a[i]%1000/100;/*求四位数的百位数字*/ten=a[i]%100/10;/*求四位数的十位数字*/data=a[i]%10;/*求四位数的个位数字*/if(thou+data==hun+ten)/*如果千位数加个位数等于百位数加十位数*/{b[cnt]=a[i];/*将满足条件的数存入数组b中*/cnt++;/*统计满足条件的数的个数cnt*/}}for(i=0;i〈cnt-1;i++)/*用选择法对数组b的4位数按从小到大的顺序进行排序*/for(j=i+1;j〈cnt;j++)if(b[i]>b[j]){data=b[i];b[i]=b[j];b[j]=data;}}知识点解析:根据题意可知,函数jsValue()将实现两个功能:一是找出满足条件的那些数,并存放在数组b中;二是对数组b中的数进行从小到大的排序。首先来实现找出“千位数上的数加上个位数上的数等于百位数上的数加上十位数上的数”的4位数的功能。利用一个for循环来不断从数组a中取出4位数,并对取出的数进行条件判断。由于这里涉及到要对4位数的每一位进行判断,因此,“thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;”这4条语句就可以得到当前被判断的4位数的千位数、百位数、十位数及个位数。之后,执行条件判断语句“if(thou+data==hun+ten)”,并把满足条件的4位数放到数组b中。用变量cnt来统计满足条件的数的个数。将所有满足条件的数取出后利用选择法对其进行排序,即用当前元素依次和它后面的元素进行比较,发现有小于该数的,这两数就进行交换。最终数组b的元素就是有序存放的。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义整型变量s,i,x,n,e,six,nine。②在第一层for循环中,因为s的值不能为0,所以循环变量s从1开始,依次递增直到其值等于10,退出循环。在第二层for循环中,循环变量i从0开始,依次递增直到其值等于10,退出循环。在第三层for循环中,循环变量x从0开始,依次递增直到其值等于10,退出循环。在第四层for循环中,因为n的值不能为0,所以循环变量n从1开始,依次递增直到其值等于10,退出循环。在第五层for循环中,循环变量e从0开始,依次递增直到其值等于10。③设置完所有for循环条件后,在循环体中,由变量s的值乘以100,变量i的值乘以10,以及变量x组成一个三位数赋给变量six,由变量n的值乘以1000,变量i的值乘以100,变量n的值乘以10,以及变量e组成一个四位数赋给变量nine,再用if条件语句判断,如果三倍的six等于两倍的nine,则计数变量cnt加1,把six与nine的和累加到变量sum,同时在屏幕上,输出six与nine的值。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个整数,函数read_dat(intinBuf[MAX])负责将这200个数读到数组inBuf[]中。请编制程序,要求;求出数组inBuf[]中奇数的个数count1和偶数的个数count2,以及数组inBur下标为偶数的元素值的算术平均值average(保留2位小数),结果输出到OUT.DAT中。部分程序、读函数read_dat(intinBuf[MAX])及输出格式已给出。试题程序;#include#include#defineMAX200voidread_dat(intinBuf[MAX]){inti,j;FILE*fp;fp=fopen("IN.DAT","r");for(i=0;i<20;i++){for(j=0;j<10;j++){fseanf(fp,"%d,",&inBuf[i*10+j]);printf("%d",inBuf[i*10+j]);}printf("\n");}fclose(fp);}voidmain(){intcount1,count2,inBuf[MAX];floataverage;FILE*fw;inti,k=0;longj;system("CLS");fw=fopen("OUT.DAT","w");read_dat(inBuf);average=0;count1=0;count2=0;printf("\n\ncount1=%d,count2=%d,average=%6.2f\n",countl,count2,average);fprintf(fw,"%d\n%d\n%6.2f\n",eountl,count2,average);fclose(fw);}标准答案:for(i=0;i知识点解析:本题主要考查依据数组下标对数据进行筛选及平均值的求法。程序步骤;1.如果inBuf[i]是奇数,则countl加1;否则,count2加1。如果下标符合条件,则k加1,并将inBuf[i]加到average上。2.所有数都判断完后average=average/k得到平均值。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编制一个函数arrangeValue(intinBuf[10][9]),其功能是;将一正整数序列{K1,K2,…,K9)重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比K1大的数都在K1的右面(后续的再向右存放),从K1向右扫描。函数WriteData()负责将outBuf[]中的数据输出到文件OUT.DAT中。说明;在程序中已给出了10个序列,每个序列中有9个正整数,并存人数组inBuf[10][9]中,分别求出这10个新序列。例如;序列排序前{3,5,8,9,1,2,6,4,7)序列排序后{2,l,3,5,8,9,6,4,7)注意;部分源程序已给出。请勿改动主函数main()和写函数WriteData()的内容。试题程序;#includevoidWriteData();intinBuf[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),};voidarrangeValue(){}voidmain(){inti,j;arrangeValue();for(i=0;i<10;i++){for(j=0;j<9;j++){printf("%d",inBuf[i][j]);if(j<=7)printf(",");}printf("\n");}WriteData();}voidWriteData(){FILE*fp;inti,j;fp=fopen("OUT.DAT","w");for(i=0;i<10;i++){for(j=0;j<9;j++){fprintf(fp,"%d",inBuf[i][j]);if(j<=7)fprintf(fp,",");}fprintf(fp,"\n");}fclose(fp);}标准答案:voidarrangeValue(){inti,j,temp[9],num_low,num_high;for(i=0;i%10;i++)//对10行数据进行扫描{num_low=0,num_high=8;for(j=8;j>=0;j--)//从最后一列向前扫描{if(inBuf[i][j]>inBuf[i][0])//如果当前数据比首位数据大{temp[num_high]=inBuf[i][j];//将当前数据放到temp中的第hum_high位num_high;//将存放比首位数据大的数据的下标前移,以指定下次存放的位置}else{temp[num_low]=inBuf[i][j];//将当前数据放到temp中的第num_low位num_low++;//将存放比首位数据小的数据的下标后移,以指定下次存放的位置}}temp[num_high]=inBuf[i][0];//将最后留下的位置上存放原数组的首位数据for(j=0;j<9;j++)inBuf[i][j]=temp[j];//将temp中的内容复制到inBuf中}}知识点解析:本题主要考查数组中数据按指定要求重新排序的方法。从左边开始扫描时,不管是比第一个大的还是小的,都以第一个元素所在的位置来定起始位置,由于第一个元素的位置不确定,所以比第一个元素大的和小的元素的起始存放位置也不能确定。若从右侧开始扫描,则比第一个元素大的和小的元素的起始存放位置是数组的两侧,起始位置固定。程序步骤;1.从右侧开始查找,如果当前元素比第一个元素大,则从数组temp的右侧起存放,反之,则从数组temp的左侧起存放。最后将第一个元素存放在剩下的位置。2.将temp中的值赋给数组inBuf。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN60.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数JsVal(),其功能是:把千位数字和十位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数和百位数组成另一个新的十位数cd(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数ab<cd,ab必须是奇数且不能被5整除,cd必须是偶数,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat()把结果ont及数组b中符合条件的4位数输出到OUT60.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILErfp;fp=fopen("IN60.DAT","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&aIi]);fclose(fp);}main(){inti;readDat();jsVal();printf("满足条件的数=%d\n",cnt);for(i=0;i<cnt;i++)printf("%d\n",b[i]);printf("\n");writeDat();}writeDat(){FILE*fp;inti;fp=fopen

温馨提示

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

评论

0/150

提交评论