全国计算机三级网络技术上机题库_及答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算机等级考试1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(intm,intk,intxx[])实现函数的要求,最后调用函数readwriteDAT()把结果输出到文件out.dat中。例如:若输入17,5,则应输出:19,23,29,31,37。注意:部分源程序已给出。请勿改动主函数main()和函数readwriteDAT()的内容。---------类型:素数。voidnum(intm,intk,intxx[])/*标准答案*/{intdata=m+1;inthalf,n=0,I;while(1){half=data/2;for(I=2;I=half;I++)if(data%I==0)break;if(Ihalf){xx[n]=data;n++;}if(n=k)break;data++;}}或者:voidnum(intm,intk,intxx[]){inti,j,s=0;for(i=m+1;k0;i++){for(j=2;ji;j++)if(i%j==0)break;/*注:素数为只能被自己和1整除的数.如果i%j等于0,说明i不是素数,跳出本层循环*/if(i==j){xx[s++]=i;k--;}}}或者:voidnum(intm,intk,intxx[]){inti=0;for(m=m+1;k0;m++)if(isP(m)){xx[i++]=m;k--;}}原程序如下:#includeconio.h#includestdio.hvoidreadwriteDAT();intisP(intm){inti;for(i=2;im;i++)if(m%i==0)return0;return1;}计算机等级考试voidnum(intm,intk,intxx[]){}main(){intm,n,xx[1000];clrscr();printf(\nPleaseentertwointegers:);scanf(%d,%d,&m,&n);num(m,n,xx);for(m=0;mn;m++)printf(%d,xx[m]);printf(\n);readwriteDAT();system(pause);}voidreadwriteDAT(){intm,n,xx[1000],i;FILE*rf,*wf;rf=fopen(in.dat,r);wf=fopen(out.dat,w);for(i=0;i10;i++){fscanf(rf,%d%d,&m,&n);num(m,n,xx);for(m=0;mn;m++)fprintf(wf,%d,xx[m]);fprintf(wf,\n);}fclose(rf);fclose(wf);}2:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:cnt请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容-------------------------voidjsVal()/*标准答案*/{intbb[4];intI,j,k,flag;for(I=0;I200;I++)计算机等级考试{bb[0]=a[I]/1000;bb[1]=a[I]%1000/100;bb[2]=a[I]%100/10;bb[3]=a[I]%10;for(j=0;j4;j++){if(bb[j]%2==0)flag=1;else{flag=0;break;}}if(flag==1){b[cnt]=a[I];cnt++;}}for(I=0;Icnt-1;I++)for(j=I+1;jcnt;j++)if(b[I]b[j]){k=b[I];b[I]=b[j];b[j]=k;}}原程序如下:#includestdio.h#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen(in.dat,r);for(i=0;iMAX;i++)fscanf(fp,%d,&a[i]);fclose(fp);}voidmain(){inti;readDat();jsVal();printf(满足条件的数=%d\n,cnt);for(i=0;icnt;i++)printf(%d,b[i]);printf(\n);writeDat();system(pause);}writeDat(){FILE*fp;inti;计算机等级考试fp=fopen(out.dat,w);fprintf(fp,%d\n,cnt);for(i=0;icnt;i++)fprintf(fp,%d\n,b[i]);fclose(fp);}3:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中.例如:原文:Youcancreateanindexonanyfield.youhavethecorrectrecord.结果:nanyfield.Youcancreateanindexrd.yuhavethecrrectrec原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.--------------类型:字符串(单词)的倒置和删除。voidStrOR(void)/*标准答案*/{intI,j,k,index,strl;charch;for(I=0;Imaxline;I++){strl=strlen(xx[I]);index=strl;for(j=0;jstrl;j++)if(xx[I][j]=='o'){for(k=j;kstrl-1;k++)xx[I][k]=xx[I][k+1];xx[I][strl-1]='';index=j;}for(j=strl-1;j=index;j--){ch=xx[I][strl-1];for(k=strl-1;k0;k--)xx[I][k]=xx[I][k-1];xx[I][0]=ch;}}}或者:voidStrOR(void){inti;chara[80],*p;for(i=0;imaxline;i++){p=strchr(xx[i],'o');while(p){memset(a,0,80);memcpy(a,xx[i],p-xx[i]);计算机等级考试strcpy(xx[i],p+1);strcat(xx[i],a);p=strchr(xx[i],'o');}}}或者:voidStrOR(void)/*我的非指针解法*/{inti,righto,j,k;chartem[80];for(i=0;imaxline;i++){k=0;righto=0;memset(tem,0,80);for(j=strlen(xx[i])-1;j=0;j--){if(xx[i][j]=='o'){righto=j;break;}}for(j=righto+1;jstrlen(xx[i]);j++)tem[k++]=xx[i][j];for(j=0;jrighto;j++){if(xx[i][j]!='o')tem[k++]=xx[i][j];}strcpy(xx[i],tem);}}或者:注:该题要求的字符串中所有小写字母o左边的字符串内容移到该串的右边存放,即将串中“最后”一个字母o左右两侧的内容互换。题中第一个while()特环的作用是让p1指向最后一个字母'o'。第一个ctrcat()函数的作用是将p1以后的字符都放到新串t中,第二个strcat()函数的作用是将p1以前的字符连接到新串t的后面(注意:在些之前要让p1所指的单元成为p1前面字符串的结束位置*p1='\0')。这时完成左右互换。最后一个while()循环的作用是删除新串中的所有小写字母'o',采用的删除方法是不是'o'的字母一律留下,否则不留(即相当于删除。)voidStrOR(void){inti;char*p1,*p2,t[80];for(i=0;imaxline;i++){t[0]='\0';p2=xx[i];while(*p2){if(*p2=='o')p1=p2;p2++;}strcat(t,p1+1);*p1='\0';strcat(t,xx[i]);p1=xx[i];p2=t;while(*p2){if(*p2!='o')*p1++=*p2;p2++;}*p1='\0';}}或者:计算机等级考试注:该题的主要算法是先让两字符指针都指向串尾,然后使一指针(p1)往前移动,当出现不是字母时则表示在p1+1与p2之间是一个单词,并将该单词存入一变量(t1),最后将t1连接到新串中(t);接着再往前找第二个单词,依次类推直到字符串头。由此可知新串就是原串中各单词的倒排。voidStr0L(void){inti,k;char*p1,*p2;chart[80],t1[80];for(i=0;imaxline;i++){p2=p1=strchr(xx[i],'\0')-'\0';t[0]=t1[0]='\0';k=1;while(k){while(isalpha(*p1)==0&&p1!=xx[i]){p1--;p2=p1;}while(isalpha(*p1)&&p1=xx[i])p1--;memcpy(t1,p1+1,p2-p1);t1[p2-p1]=0;strcat(t,t1);strcat(t,);if(p1xx[i])k=0;}strcpy(xx[i],t);}}原程序如下:#includestdio.h#includestring.h#includeconio.hcharxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidStrOR(void){}voidmain(){clrscr();if(ReadDat()){printf(Can'topenthefile!\n);return;}StrOR();计算机等级考试WriteDat();system(pause);}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen(in.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;fp=fopen(out.dat,w);for(i=0;imaxline;i++){printf(%s\n,xx[i]);fprintf(fp,%s\n,xx[i]);}fclose(fp);}4:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进

1 / 157
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功