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

下载本文档

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

文档简介

国家三级(网络技术)机试模拟试卷17(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有一篇英文文章,函数ReadData()负责将IN.DAT中的数据读到数组inBuf[][]中。请编制函数ReplaceChar(),该函数的功能是按照指定规则对字符进行替换。变换后的值仍存人数组inBuf[]中。函数WriteData()负责将inBuf[]中的数据输出到文件OUT.DAT中,并且在屏幕上输出。替换规则为;先对字符的ASCII码值按公式y=(a*11)mod256进行运算(a为某一字符的ASCII码值,y为变换后的ASCII码值),如果原字符的ASCII码值是偶数或计算后Y的值小于等于32,则字符保持不变,否则用y对应的字符代替。注意;部分源程序已给出。原始数据文件存放的格式是;每行的宽度均小于80个字符。请勿改动主函数main()、读函数ReadData和写函数WriteData()的内容。试题程序;#include#include#include#includeusingnedcharstr[50][80];intmaxline=0;intReadData(void);intWriteData(void);voidReplaceChar(){}voidmain(){If(ReadData()){printf("数据文件In.dat不能打开!\n\007");return;}ReplaceChar();WriteData();}intReadData(void){FILE*fp;inti=0;unsignedchar*P;if((fp=open("In.dat","r")==NULL)return1;while(fet(str[i],80,fp)!=NULL){p=strchr(str[i],’\n’);if(p)*p=0;i++;}maxline=i;fclose(fp);return0;}voidWriteData(void){FILE*fp;inti;fp=fopen("Out.dat","w");for(i=0;i标准答案:voidencryptChar(){inti;char*fp;for(i=0;i知识点解析:本题考查ASCII码,在for循环中对字符串str中的每个字符用逻辑表达式(*fp>=’A’&&*fp<=’Z’)||*fp*11%256<=32进行判断,然后根据要求求出其要替代的字符的ASCII值,最后进行替代。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、下列程序的功能是:在3位整数(100至999)中寻找符合下面条件的整数,并依次从小到大存入数组b中:它既是完全平方数,又有两位数字相同,例如144,676等。请编制函数intjsValue(intbb[])实现此功能,满足该条件的整数的个数通过所编制的函数返回。最后调用函数wfiteDat()把结果输出到文件OUTl2.DAT中。注意:部分源程序已给出。请勿改动主函数main()和写函数wnteDat()的内容。试题程序:#include<stdio.h>intjsValue(intbb[]{}main(){intb[20],num;num=jsValue(b);writeDat(num,b);}writeDat(intnum,intb[]){FILE*out;inti;out=fopen("OUT12.DAT","w");fprintf(out,"%d\n",num);for(i=0;i<num;i++)fprintf(out,"%d\n",b[i]);fclose(out);}标准答案:intisValue(intbb[]){inti,j,k=0;inthun,ten,data;for(i=100;i<=999;i++){j=10;while(i*j<=i){if(i==i*j)/*如果该数是完全平方数*/}hun=i/100;/*求该数的百位数字*/data=i-hun*100;/*得到后两位数*/ten=data110;/*求该数的十位数字*/data=data-ten*10;/*求该数的个位数字*/if(hun==ten||hun==data||ten==data)/*有两位数字相同*/{bb[k]=i;/*则把该数存入数组bb中*/k++;}/*统计满足条件的数的个数*/}j++;}}returnk;/*返回满足该条件的整数的个数*/}知识点解析:解答本题,首先应该考虑用一个for循环来依次取得100到999之间的各个数,并对当前所取得的数进行两个条件判断:一是判断该数是否是完全平方数:二是判断该数是否有两位数字相同。如果以上两个条件同时满足,则把该数存放到b数组中,尽管题目要求所存的数必须从小到大,但我们取数的过程本身就是从小到大取得,因此,排序工作是没有必要做的,按照取数的顺序,把满足条件的数值存放到数组b中就可以了。判断某个数是否是完全平方数的方法是看该数是否可以拆成完全相同的两个数的积(当然要拆成的两个数一定是两位数),因此,我们再利用一个循环用10以上的两位数逐个去拆被判断的数,如果被判断的数恰好可以被完全拆分,则第一个条件成立,接着就开始依次取得被判断的数的百位、十位、个位上的数字值,看是否有两位数字相同。取得每一位上的数字值可以用“hun=i/100;data=i-hun*100:ten=data/10;data=data-ten*10:”几条语句来实现,hun变量得到的是百位上的数字,ten变量得到的是十位上的数字,data变量得到的是个位上的数字。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是;求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数,按照从大到小的顺序存人数组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],temp;for(i=0;i知识点解析:本题主要考查数位分解及排序。数位分解就是将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.对选出的数据进行排序,排序的思想是(以从大到小为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据小,则将两数据进行交换,从而使得前面的数据大于后面的数据,达到从大到小排序的目的。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义整型循环变量i、j和局部变量tmp。②在for循环语句中,循环变量i从0开始,依次递增直到其值等于或大于MAX,用if条件语句判断如果a[i]和b[i]同时为奇数,由a[i]的十位数字为新数的千位数字,个位数字为新数的个位数字,b[i]的十位数字为新数的百位数字,个位数字为新数的十位数字,把这个新组成的数存入数组元素c[cn],同时数组下标变量cn加1。③在第一层for循环语句中,循环变量i从0开始,依次递增直到其值等于或大于cnt,在第二层循环中,循环变量j从i+1开始,依次递增直到其值等于cnt,用if条件语句判断如果数组元素c[i]大于c[j],则两者进行互换,实现数组c中的数按从小到大的顺序进行排序。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①因为方程sos(x)-x=0的根为实数,所以定义两个双精度型变量x0,x1。并把变量x1的初值设为0.0。②根据题目中给出的求方程一个实根的迭代算法,在while循环中,首先把变量x1的值赋给x0,然后利用表达式cos(x0)求出一个值x1,再调用vc6.0的求绝对值的库函数fabs(),判断如果x0与x1差的绝对值小于0.000001,就认为x1的值是方程cos(x)-x=0的一个实根,此时退出循环,把x1的值返回。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个销售记录,每个记录均由产品代码ID(字符型4位)、产品名称name(字符型10位)、单价price(整型)、数量amount(整型)、金额value(长整型)几部分组成。其中;金额=单价×数量,函数ReadData()负责将IN.DAT中的数据读到结构数组sell[]中。请编制函数sortData(),将各个记录按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,并将排列后的结果存放NUsell[]中。函数WriteData()负责将sell[]中的数据输出到文件OUT.DAT中。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#include#include#defineMAX200typedefstruct{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;i0||(strcmp(sell[i].ID,sell[j].ID)==0&&sell[i].value>sell[j].value)){memcpy(&temp,&sell[i],sizeof(temp));/*将以&sell[i]为起始地址大小为sizeof(temp)的内存中的内容复制到以&.temp为起始地址的内存中*/memcpy(&sell[i],&sell[j],sizeof(temp));memcpy(&.sell[j],&temp,sizeof(temp));}}知识点解析:本题主要考查结构数组排序的问题。所谓结构数组排序就是以结构某一元素为依据对结构数组进行排序。排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。但是由于结构不像变量那样可以通过简单的赋值来交换变量(如果要赋值的话需要对结构里的所有元素进行赋值替换,比较麻烦),所以在进行两个相邻结构交换时,用到内存拷贝函数来对内存的内容整体进行操作。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、函数ReadDat()的功能是实现从文件IN73.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数CovertCharD(),该函数的功能是:以行为单位把字符串中的所有小写字母改成该字母的上一个字母,如果是字母a,则改成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WriteDat()把结果XX输出到文件OUT73.DAT中。例如:原文AdbBcdzaabckLLHj结果AcaBbcyz,ZabjLLgi原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>charxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidCovertCharD(){}voidmain(){clrscr();if(ReadDat()){printf("数据文件IN7.DAT不能打开\n\007");return;}CovertCharD();WriteDat();}intReadDat(){FILE*fp;inti=0;char*p;if((fp=fopen("IN73.DAT","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],’\n’);if(p)*p=0;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE;fp;inti:clrscr();fp=fopen("OUT73.DAT","N");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,”%s\n",xx[i]);}fclose(fp);}标准答案:voidCovertCharD(){ihti;char*pf;for(i=0;i<maxline;i++){pf=xx[i];/*指针pf指向各行的首地址*/while(*pf)if(*pf==’a’)/*如果是字母a,则改成字母z*/{*pf=’z’;pf++;/*指向下一个字符*/}elseif(*pf>=’b’&&*pf<=’z’)/*小写字母’b’到’z’,改成该字母的上一个字母*/{*pf-=1;pf++;/*指向下一个字符*/}elsepf++;/*如果不满足条件,则不变字符,指向下一个字符*/}}知识点解析:本题考查的知识点如下:(1)字符串的计算。(2)循环结构的使用。(3)使用指针实现对数组的访问。本题中,将字符存放在二维数组中,以行为字符处理的基本单位,可以定义一个指针,指向每一行字符。初始时,指针指向每一行的第一个元素,增加指针地址就可以实现对一行数据的完全访问。要将所有小写字母改成它的前一个字母,小写字母的ASCⅡ码是连续的,可直接将其ASCⅡ码减1,则得要求的字符。注意;字母a要单独处理,其他字符保持不变。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第6行,修改if条件语句的设置即可。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是;求出各数位上的数字均是0或2或4或6或8的数,按照从大到小的顺序存人数组outBuf[]中,并用count记录下符合条件的数的个数。函数WriteData()负责将outBuf[]中的数输出到文件OUT.DAT中并且在屏幕上显示出来。注意;部分源程序已给出。程序中已定义数组;inBuf[200],outBuf[2

温馨提示

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

评论

0/150

提交评论