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

下载本文档

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

文档简介

国家三级(网络技术)机试模拟试卷33(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个销售记录,每个记录均由产品代码ID(字符型4位)、产品名称name(字符型10位)、单价price(整型)、数量amount(整型)、金额value(长整型)几部分组成。其中;金额=单价×数量,函数ReadData()负责将IN.DAT中的数据读到结构数组sell[]中。请编制函数sortData(),将各个记录按产品代码从小到大进行排列,若产品代码相同,则按金额从大到小进行排列,并将排列后的结果存放到sell[]中。函数WriteData()负责将sell[]中的数据输出到文件OUT.DAT中。注意;部分源程序已给出。请勿改动主函数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||(strcmp(sell[i].ID,sell[j].ID)==0&&sell[i]value知识点解析:本题考查的主要是结构数组排序的问题。所谓结构数组排序就是以结构某一元素为依据对结构数组进行排序。本题排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,最终达到从小到大排序的目的。但是由于结构不像变量那样可以通过简单的赋值来交换变量(如果要赋值的话需要对结构里的所有元素进行赋值替换,比较麻烦),所以在进行两个相邻结构交换时,要用到内存拷贝函数memcpy()来对内存的内容整体进行操作。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①首先定义变量并赋值,包括表示级数的整型变量a1、a2,赋初值1,表示级数前n项的和s,其初值为2,表示级数的第n项t,循环变量i,级数n项赋初值1。②采用for循环,循环变量i从0开始依次递增到2。在循环体中对m的值扩大10倍,当级数前n项的和s小于m时,根据级数的第n项等于第n-2项与2倍的第n-1项的和,把表达式a1+2*a2的值赋给变量t。然后把级数前n-1项的和s加上第n项的值t赋给变量s,求得级数前n项的和赋给变量s。把n的值加1,在下次循环中计算级数第n+1项的值,把变量当前级数第n-1项的值a2赋给第n-2项a1,把当前的第n项t的值赋给第n-1项a2。当级数前n项的和s大于或等于m时,退出while循环。在屏幕上输出变量m和n的值,并把求的n值赋给数组元素b[i],进入下一次for循环。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN82.DAT中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数isValue(),其功能是:求出这些4位数是素数的个数cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2,输出到out82.dat文件中。例如:5591是素数,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。9812是非素数,则该数不满足条件,计算平均值pjz2。注意:部分源程序已给出。程序中已定义数组:a[300],b[300],已定义变量:cnt,pjz1,pjz2。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>inta[300],cnt=0;doublepjz1=0.0,pjz2=0.0;intisP(intm){inti;for(i=2;i<m;i++)if(m%i==0)return0;return1;}voidjsValue(){}main(){inti;readDat();jsValue();writeDat();printf("cnt=%d\n满足条件的平均值pjz1=%7.21f\n不满足条件的平均值pjz2=%7.21f\n",cnt,pjz1,pjz2);}readDat(){FILE*fp;inti;fp=fopen("in82.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("out82.dat","w");fprintf(fp,"%d\n%7.21f\n%7.21f\n",cnt,pjz1,pjz2);fclose(fp);}标准答案:voidjsValue(){inti;for(i=0;f<300;i++)if(isP(a[i]))/*如果该数为素数*/{pjz1+=a[i];/*将满足条件的数求和*/cnt++;/*统计满足条件的数的个数*/}elsepjz2+=a[i];/*将不满足条件的数求和*/pjz1=pjz1/cnt;/*求满足条件的数的平均值*/pjz2=pjz2/(3OO-cnt);/*求不满足条件的数的平均值*/}知识点解析:本题考查的知识点如下:(1)循环结构的使用。(2)判断结构的使用。在本题中,已给出判断素数的函数isP(),只要依次将数据带入即可。300个数据依次存入数组中,可以使用循环实现对数据的访问。当数是素数时,求其和pjz1,并统计素数的个数。不是素数时,求和pjz2。最后将和除以个数,即可得其平均值。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN76.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:把个位数字和千位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的千位数字),以及把百位数和十位数组成另一个新的十位数cd(新十位数的十位数字是原4位数的百位数字,新十位数的个位数字是原4位数的十位数字),如果新组成的两个十位数必须是一个奇数,另一个为偶数且两个十位数中至少有一个数能被17整除,同时两个新十位数字均不为0,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数wfiteDat()把结果cnt及数组b中符合条件的4位数输出到OUT76.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a[200],b[200],己定义变量:cnt。请勿改动主函数main()、读函数madDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN76.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("OUT76.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;intab,cd;for(i=0;i<200;i++){thou=a[i]/1000;/*求四位数的千位数字*/hun=a[i]%1000/100;/*求四位数的百位数字*/ten=a[i]%100/10;/*求四位数的十位数字*/dsta=a[i]%10;/*求四位数的个位数字*/ab=data*10+thou;/*把个位数和千位数组合成一个新的十位数ab*/cd=hun*10+ten;/*把百位数和十位数组成另一个新的十位数cd*/if((ab%17==0||cd%17==0&&((ab%2!=l&&cd%2==1)||(ab%2==1&&cd%2!=1))&&ab!=0&&cd!=0){/*如果新组成的两个十位数必须是一个奇数,另一个为偶数且两个十位数中至少有一个数能被17整除,同时两个新十位数字均不为0*/b[cnt]=a[i];/*则将满足条件的数存入数组b中*/cnt++;/*统计满足条件的数的个数*/}}for(i=0;i<cnt-1;i++)/*将数组b中的数按从大到小的顺序排列*/for(j=i+l;j<cnt;j++)if(b[i]<b[j]){data=b[i];b[i]=b[j];b[j]=data;}}知识点解析:本题考查的知识点如下:(1)将一个4位整数各位上的数转变成单独的个位数。(2)判断结构中多个条件的布尔运算。(3)循环的使用。(4)数据的排序。在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数字。这里借助特殊运算符号“%”(取余)和“/”(整除)。将—个4位数整除1000则可得到其千位—卜的数字,除以1000取余再整除100则可得百位。上的数字,除以100取余再整除10则可得十位卜的数字,除以10取余则得个位上的数字。若一个数除以2取余为0,则这个数是偶数,否则为奇数。两个数必须一个为奇数,另一个为偶数,这就有两种情况;ad为奇数,cd为偶数;或者ab为偶数,cd为奇数。两者满足一种即可,所以这两种情况间用“或”运算。两个数中至少有1个能被17整除,ab能被17整除与cd能被17整除两个条件满足一个即可,所以这两个条件之间用“或”运算。但这个条件与其他条件必须同时满足,所以此条件与其他条件之间用“与”运算。先将满足条件的数存入数组b中,再对数组中的数据进行排序。最后的排序采用“选择排序法”。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共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。依次求得符合条件的数的和及其平均值。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编写函数findValue(int*result,int*amount),其功能是;求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组result中,并通过amount返回这些数的个数。注意;部分源程序已给出。请勿改动主函数main()和写函数writeData()的内容。试题程序;#include#includevoidwriteData();voidfindValue(int*result,int*amount){}voidmain(){intresult[1000],amount,k;system("CLS");findValue(result,&amount);printf("amount=%d",amount);for(k=0;k标准答案:voidfindValue(int*result。int*amount){inti;*amount=0;//将计数器清零for(i=1;i<=1000;i++)//在1~1000中循环if((i%7==0&&i%11!=0)||(i%11==0&&i%7!=0))//如果满足条件{result[*amount]=i;//将数据放人数组result中的第*amount位(*amount)++;//计数器加1}}知识点解析:若一个数m能被n整除,则有m%n==0。另外本题也考查了通过指针传递数据的方法。主函数将所要求子函数返回的变量的指针*result,*amount传给子函数,子函数通过对指针的操作直接将数据传到变量当中,这也为子函数返回多值提供了一种方法。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①首先定义循环变量i、j和表示字符串长度的整型变量strl。②在第一层for循环中,循环变量i从0开始,依次递增直到其值等于或大于maxline,在循环体中,首先用函数strlen(original[i])计算字符串original[i]的长度,把这个值赋给整型变量strl。在第二层for循环中,循环变量j从0开始,依次递增直到其值等于或大于strl,利用表达式original[i][j]+=original[i][j]>>4实现对字符original[i][j]的ASCII码值右移4位后所得到值与原字符0riginal[i][j]的ASCII码值相加,仍存入原字符串对应的位置上的功能。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①首先,本题要定义多个变量,包括两个循环变量循环i、j,一个用于数据交换的整型变量ab,以及分别用来存放四位数分解之后各位数的变量qw(千位)、bw(百位)、sw(十位)和gw(个位)。②通过flor循环依次对数组中的每个四位数进行分解,每分解一个四位数,根据题目要求,判断其“千位<=百位<=十位<=个位”的条件是否满足,并通过a[i]%2=0表达式判断该四位数是否为偶数,各判断表达式之间用&&运算符进行连接,当满足条件时,则将a[i]的值赋给数组变量b[cnt],同时数组下标变量cnt的值加1。循环结束后,所有满足条件的四位数都将保存到数组b[cnq中。③将所有的四位数判断完毕后,最后通过两个for循环,对b[cnt]数组中的元素按从小到大的顺序排序。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有N个实数(N<200),函数ReadData()负责将这N个实数读人数组inBuf[]中。请编制程序calculate(),其功能要求;(1)求出这N个实数的平均值aver。(2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数WriteData()把所求的结果输出到文件OUT.DAT中。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadDat

温馨提示

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

评论

0/150

提交评论