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

下载本文档

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

文档简介

国家三级(网络技术)机试模拟试卷9(共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码值),如果计算后Y的值小于等于32或y对应的字符是小写字母,则字符保持不变,否则用Y对应的字符代替。注意;部分源程序已给出。原始数据文件存放的格式是;每行的宽度均小于80个字符。请勿改动主函数main()、读函数readData()和写函数writeData()的内容。试题程序;#include#include#include#include#defineLINE50#defineCOL80charinBuf[LINE][COL+1];inttotleLine=0;//文章的总行数intreadData(void);voidwriteData(void);voidreplaceChar(){}voidmain(){system("CLS");if(readData()){printf("IN.DATcan’tbeopen!\n\007");return;}replaceChar();writeData();}ilitreadData(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN.DAT","r"))==NULL)return1;while(fgets(inBuf[i],COL+1,fp)!=NULL){p=strchr(inBuf[i],’\n’);if(p)*p=’\0’;i++;}totleLine=i;fclose(fp);return0;}voidwriteData(void){FILE*fp;inti;fp=fopen("OUT.DAT","w");for(i=0;i标准答案:voidreplaceChar(){inti,j,str;chary;for(i=0;i=’a’&&y<=’Z’))continue;//若符合条件,不进行转换elseinBuf[i][j]=y;//否则进行转换}}}知识点解析:本题考查的主要是字符与其对应的ASCII码之间的转换及对ASCII码进行操作。首先计算出每行字符串的长度,再根据替换规则进行相应的替换。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第6行,修改if条件语句的设置即可。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存放有字符数据,函数ReadData()负责从中读取50行数据存放到字符串数组inBuf中(每行字符串的长度均小于80)。请编制函数arrangeChar(),该函数的功能是;以行为单位对字符串变量的下标为奇数位置上的字符按其ASCII码值从小到大的顺序进行排序,对字符串变量的下标为偶数位置上的字符按其ASCII码值从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组inBuf中,并且奇数位还存在奇数位上,偶数位还存在偶数位上。函数WriteData()负责把结果inBuf输出到文件OUT.DAT中。例如;位置01234567源字符串ahCfedgb则处理后字符串gbedCfah注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#include#include#defineLINE50#defineCOL80charinBuf[LINE][COL+1];inttotleLine=0;//文章的总行数intReadData(void);voidWriteData(void);voidarrangeChar(){}voidmain(){system("CLS");if(ReadData()){printf("IN.DATcan’tbeopen!\n\007");retUrn;}arrangeChar();WriteData();}intReadData(void){FILE*fp;inti=0;char*P;if((fp=fopen("IN.DAT","r"))==NULL)return1;while(fgets(inBuf[i],COL+1,fp)!=NULL){P=strchr(inBuf[i],’\n’);if(p)*p=’\0’;i++;}totleLine=i;fclose(fp);return0;}voidWriteData(void){FILE*fp;inti;fp=fopen("OUT.DAT","w");for(i=0;i标准答案:voidarrangeChar(){inti,j,k,col[LINE];unsignedchartemp;for(i=0;iinBuf[i][k]&&((j+1)%2==0)&&((k+1)%2==0))/*如果下标为奇数的字符的ASCII码值比其后一个奇数位下标字符的ASCII码值大,则进行交换*/{temp=inBuf[i][j];inBuf[i][j]=inBuf[i][k];inBuf[i][k]=temp;}if(inBuf[i][j]知识点解析:本题主要考查字符串的排序问题。1.分别对数组中下标为偶数和下标为奇数的数据进行排序,因此,在循环时应将奇数和偶数通过下标求余来区分开,以对其分别进行排序。2.排序的思想是(以从小到大为例);将当前数与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个四位整型数,函数ReadData()负责将IN.DAT中的数读到数组inBuf[]中。请编写函数findValue(),其功能是;求出千位数字上的值加十位数字上的值等于百位数字上的值减上个位数字上的值,并且此四位数是偶数的数,用count记录下符合条件的数的个数并按照从小到大的顺序存人数组outBuf[]中。函数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;ioutBuf[j])/*如果第i位比它后面的数大,则将两者进行交换,也即将更小的值放到第i位*/{temp=outBuf[i];outBuf[i]=outBuf[j];outBuf[j]=temp;}}知识点解析:本题主要考查数位分解及排序。数位分解就是将n位数上各个位上的数值单独分离出来。解决此问题的方法是;将n位数对10求余可以将个位上的数值分离出来。将这个n位数除以10以后得到一个n-1位数,则此时n位数原来的10位就变成了n-1位数的个位,再将此n-1位数对10求余便可得到原n位数的10位。依此类推,按照同样的方法便可将n位数各个位上的数值分离出来。程序步骤;1.将数值送入temp中。2.由temp%10得到个位数;(temp/10)%10得到十位数……如此可得到各位上的数值。3.按照题目所给的条件选出数据。4.对选出的数据进行排序,排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、请编制程序,要求:将文件IN91.DAT中的200个整数读入数组xx中,求出数组xx中奇数的个数cnt1和偶数的个数cnt2,以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数),结果cnt1,cnt2,pj输出到out91.dat中。部分程序、读函数read_dat(intxx[200])及输出格式已给出。试题程序:#include<conio.h>#include<stdio.h>#defineN200voidread_dat(intxx[N]){inti,j;FILE*fp;fp=fopen("IN91.DAT","r");for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fp,"%d,",&xx[i*10+j]);printf("%d",xx[i*10+j]);}printf("\n");}fclose(fp);}voidmain(){intcnt1,cnt2,xx[N];floatpj;FILE*fw;inti,k=0;longj;clrscr();fw=fopen("out91.dat","w");read_dat(xx);printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);fclose(fw);标准答案:voidmain(){intcnt1,cnt2,xx[N];floatpj;FILE*fw;inti,k=0;longj;clrscr();fw=fopen("out91.dat","w");read_dat(xx);for(i=0,j=0,cnt1=0,cnt2=0;i<N;i++){if(xx[i]%2)/*求出数组XX中奇数的个数cnt1*/cnt1++;elsecnt2++;/*求出数组xx中偶数的个数cnt2*/if(i%2==0){j+=xx[i];/*求数组xx下标为偶数的元素值的总和*/k++;}}Pj=(float)(j*100/k)/100;/*求数组xx下标为偶数的元素值的算术平均值pj*/printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);fclose(fw);}[解析]本题考查的知识点如下:(1)运算符“%”的使用。(2)强制类型转换和小数位数的保留;一个数除以2取余所得的数为1,则它是奇数,否则是偶数,取余使用运算符“%”。在本题中,要求算术平均值保留两位小数。使用的方法是:将和乘以100除以个数强制类型转换后再除以100。为了保证和有效,我们定义一个长整型变量来记录和。因为个数也为整型,运算符“/”在这里的含义是整除,而我们要保留小数,所以要使用强制类型转换将和乘以100的结果转换为浮点类型,这样就可以实现保留两位小数。使用循环对所有数据进行访问。知识点解析:暂无解析国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①首先定义循环变量i,并对全局变量cnt1、cnt2和pj赋初值0。②在for循环语句中,将数组xx中的每个数组元素xx[i]对2求余数,如果余数非零,则说明xx[i]是奇数,奇数的个数变量cnt1加1,否则,偶数的计数变量cnt2加1;接着将数组xx下标i对2求余,如果余数等于0,则把xx[i]的值累加到变量pj。③退出循环时,变量pj的值除以100.0就得到数组xx下标i为偶数的元素值的算术平均值pj(因为数组中共有200个数组,下标为奇偶数的元素各占一半,因此直接将累加变量pj的值直接除100即可得到这些数的平均值)。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN23.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制函数JsVal(),其功能是:依次从数组a中取出一个4位数,如果4位数连续大于该4位数以前的5个数且该数是奇数,该数必须能被7整除,则统计出满足此条件的数的个数cnt,并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT23.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include〈stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN23.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("OUT23.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i〈cnt;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}标准答案:voidjsVal(){inti,j,flag=0;for(i=5;i〈MAX;i++)/*如果4位数连续大于该数以前的5个数,则置flag为1,否则取下一个数*/{for(j=i-5;j〈i;j++){if(a[i]>a[j])flag=1;else{flag=0;break;}}if(flag==1&&a[i]%2==1&&a[i]%7==0)/*如果flag为1且该数是奇数,该数能被7整除,则将该数存入数组b中,并统计满足条件的数的个数*/{b[cnt]=a[i];cnt++;}}for{i=0;i〈cnt-1;i++)/*将数组b中的数按从大到小的顺序排列*/for(j=i+1;j〈cnt;i++)if(b[i]〈b[j]){flag=b[i];b[i]=b[j];b[j]=flag;}}知识点解析:根据题意可知,要编制函数的功能有两部分:一是找出满足条件的4位数,二是对找出的数进行从大到小排序。首先利用一个for循环来依次从数组中取得4位数,接着拿当前得到的4位数与该数前面的连续的5个数依次进行比较。如果该数比它前面的5个数都大,则给标志变量flag赋值1,接着对flag进行判断,如果不为1,则该数肯定不符合条件,直接去取下一个数。若flag值为1,再来判断该数是否是奇数,如果恰好该数又能被7整除,则把该数添加到数组b中。这样就可以依次取出符合条件的数。然后利用选择法对数组b中的元素进行从大到小的排序。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件IN15.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续小于该4位数以后的5个数且该数是偶数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT15.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include〈Stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN15.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("In");writeDat();}writeDat(){FILE*fp;inti;fp=fopen("OUT15.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i〈cnt;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}标准答案:voidjsVal(){inti,j,flag=0;for(i=0;i〈MAX-5;i++)/*如果该4位数连续小于该4位数以后的5个数*/{for(j=i+1;j〈=i+5;j++){if(a[i]〈a[j])flag=l;/*则置flag为1*/elseflag=0;/*否则置flag为0*/if(a[i]%2!=0)/*如果该数是奇数则置flag为0*/flag=0;if(flag==0)/*如果flag为0,则退出循环*/break;}if(flag==1)/*如果flag为土,则将该数存入数组b中,并统计满足条件的数的个数*/{b[cnt]=a[i];cnt++;}}for(i=0;i〈cnt-1;i++)/*将数组b中的数按从小到大的顺序排序*/for(j=i+1;j〈cnt;j++)if(b[i]>b[j]){flag=b[i];b[i]=b[j];b[j]=flag;}}知识点解析:根据题意可知,要编制函数的功能有两部分:一是找出满足条件的4位数;二是对找出的数进行从小到大排序。首先利用一个for循环来依次从数组中取得4位数,接着用当前得到的4位数与该数后面的5个数(可以用循环次数来控制)依次进行比较,如果该数比它后面的5个数都小,则给标志变量flag赋值1。接着对flag进行判断,如果不为1,则该数肯定不符合条件,直接去取下一个数;若flag值为1,再来判断该数是否是偶数,如果恰好该数又是偶数,则把该数加入到数组b中。这样就可以依次取出符合条件的数,然后利用选择法对b数组中的元素进行从小到大的排序。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有一篇英文文章,函数ReadData()负责将IN.DAT中的数据读到数组inBuf[]中。请编制函数replaceChar(),该函数的功能是按照指定规则对字符进行替换。变换后的值仍存入inBuf[]中。函数WriteData()负责将inBuf[]中的数据输出到文件OUT.DAT中并且在屏幕上打出。替换规则为;先对字符的A

温馨提示

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

评论

0/150

提交评论