《全国计算机三级网络技术上机题库及答案.docx》由会员分享,可在线阅读,更多相关《全国计算机三级网络技术上机题库及答案.docx(140页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(int m,intk,intxx)实现函数的要求,最后调用函数readwriteDAT()把结果输出到文件out.dat中。 例如:若输入17,5,则应输出:19,23,29,31,37。注意:部分源程序已给出。请勿改动主函数main()和函数readwriteDAT()的内容。类型:素数。void num(int m,int k,int xx) /*标准答案*/int data=m+l;int half/n=OJ;while(l)half=data/2;for(l=2;lhalf)xxn=data;n+;if
2、(n=k)break;data+;)或者:void num(int mjnt kJ nt xx)int ijzs=O;for(i=m+l;k0;i+)for(j=2;j0;m+)if(isP(m)xxi+=m;原程序如下:#include #include void readwriteDAT();int isP(int m)int i;for(i = 2 ; i m ; i+)if(m % i = 0) return 0;return 1;void num(int mjnt kJ nt xx) main()int m, n, xx1000;clrscr();printf(HnPlease en
3、ter two integers:);scanf(”d,%cT, &m, &n );num(mz nz xx);for(m = 0 ; m n ; m+)printf(n%d,xxm);printf(n);readwriteDAT();system(pauseH);void readwriteDAT()int m, n, xxlOOO, i;FILE *rf, *wf;rf = fopen(in.dat/ nr);wf = fopenCout.dat, w);for(i = 0; i 10 ; i+) fscanf(rf, %d %d”,&m, &n);num(m, n, xx);for(m
4、= 0 ; m n ; m+) fprintf(wf, %d , xxm);fprintf(wfz Hn);fclose(rf);fclose(wf);)2:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则 统计出满足此条件的个数ent,并把这些四位数按从大到小的顺序存入数组b中。最后main() 函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件 中。注意:部分源程序存在文件PR0G1.C文件中。程序中已
5、定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat() 的内容void jsVal() /* 标准答案*/int bb4;int l,j,k,flag;for (l=0;l200;l+)bb0=al/1000; bbl=al%1000/100;bb2=al%100/10; bb3=al%10;for (j=0;j4;j+)if (bbj%2=0)flag=l;elseflag=O;break;if (flag=l)bcnt=al;cnt+;for(l=0;lcnt-l;l+)for(j
6、=l+l;jcnt;j+) if(blbUJ)k=bl;bl=bU;bU=k;原程序如下:#include #define MAX 200int aMAX, bMAXz ent = 0;void jsVal() void readDat()int i;FILE *fp;fp = fopenCin.dat, r);for(i = 0; i MAX ; i+) fscanf(fp, &ai); fclose(fp);)void main()int i;readDat();jsVal();printf(满足条件的数=%dn”, ent);for(i = 0; i ent; i+) printf(%d
7、 , bi);printf(n);writeDat();system(pause);writeDat()FILE *fp;inti;fp = fopenCout.dat, w);fprintf(fpz %dnz ent);for(i = 0; i ent; i+) fprintf(fp, %dnz bi);fclose(fp);3:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制 函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母0左边的字符串内容移 到该串的右边存放,然后并把小写字母0删除,余下的字符串内容移到已处理字符串的左边存
8、 放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDATO把结 果XX输出到文件OUT.DAT中.例如:原文:You can create an index on any field.you have the correct record.结果:n any field.You can create an indexrd.yu have the crrect rec原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.类型:字符串(单词)的倒置和删除。void StrOR(void) /*标准答案*/intindex,strl;char ch;fo
9、r(l=0;lmaxline;l+)strl=strlen(xxl);index=strl;for(j=0;jstrl;j+)if(xxlU=o)for(k=j;k=index;j-)ch=xxlstrl-l;for(k=strl-l;k0;k-)xxlk=xxlk-l;xxl0=ch;或者:void StrOR(void)int i;char a80,*p;for(i=0;imaxline;i+)p=strchr(xxi/o,);while(p)memsetfaASO);memcpy(a/xxi/p-xxi);strcpy(xxizp+l);strcat(xxiza);p=strchr(xx
10、i/o*);或者:void StrOR(void) /*我的非指针解法*/int ijightojk;char tem80;for(i=0;i=0;j-)if(xxij=o) righto=j;break;for(j=righto+l;jstrlen(xxi);j+) temk+=xxij;for(j=0;jrighto;j+)if(xxiU!=o)temk+=xxij;strcpy(xxi,tem);)或者:注:该题要求的字符串中所有小写字母。左边的字符串内容移到该串的右边存放,即将串中 “最后” 一个字母。左右两侧的内容互换。题中第一个while。特环的作用是让pl指向最后 一个字母第一个
11、ctrcat()函数的作用是将pl以后的字符都放到新串t中悌二个strcat() 函数的作用是将pl以前的字符连接到新串t的后面(注意:在些之前要让pl所指的单元成 为pl前面字符串的结束位置*pl=O)。这时完成左右互换。最后一个while。循环的作用是 删除新串中的所有小写字母采用的删除方法是不是。的字母一律留下,否则不留(即相当 于删除。)void StrOR(void)int i;char *pl/*p2/t80;for(i=0;imaxline;i+)t0=0;p2=xxi;while(*p2)if(*p2=o) pl=p2;P2+;)strcat(tzpl+l);*pl=O,;st
12、rcat(t,xxi);pl=xxi;p2=t;while(*p2)if(*p2l=o) *pl+=*p2;p2+;*pl=0;或者: 注:该题的主要算法是先让两字符指针都指向串尾,然后使一指针(pl)往前移动,当出现不是 字母时则表示在pl+l与P2之间是一个单词,并将该单词存入一变量(tl),最后将tl连接到新串中;接着再往前找第二个单词,依次类推直到字符串头。由此可知新串就 是原串中各单词的倒排。void StrOL(void) ( int i,k;char *pl/p2;char t80ztl80;for(i=0;i=xxi) pl-;memcpy(tl,pl+l,p2-pl);tlp
13、2-pl=O;strcat(t,tl);strcat(tzM n);if(plxxi) k=0;strcpy(xxizt); 原程序如下:# include,stdio.h# includestring.h# includeHconio.hchar xx5080;int maxline=O;int ReadDat(void);void WriteDat(void);void StrOR(void) ( void main() clrscr();if(ReadDat()printf(HCant open the file!n);return; StrOR();WriteDat();system(
14、pauseH);int ReadDat(void)FILE *fp;int i=O;char *p;if(fp=fopen(in.dat,r)=NULL) return 1;while(fgets(xxi,80,fp)!= NULL)p=strchr(xx(i;n,);if(p) *P=O;i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen(out.dat,/w);for(i=0;imaxline;i+)printf(n%snzxxi);fprintf(fpz%sn,xxiD;fclose(fp
15、);4:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制 函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行 倒排,同时去除标点符号,之后把己处理的字符串(应不含标点符号)仍按行重新存入字符串数 组xx中。最后main。函数调用函数WriteDat。把结果xx输出到文件OUT6.DAT中。例如:原文:You He MeI am a student.结果:Me He Youstudent a am I原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。类型:字符串(单词)的倒置和删除。void
16、StrOL(void) /*标准答案*/int IJ,k,strl,l;char c;for(l=0;lmaxline;l+)for(j=0;jstrlen(xxl);j+)c=xxljl;if (0=&=a,&c=z,)| |c=* *);else xxlj=1 *;for(l=0;l=a&xxll=A&xxll=0)for(j=k;j=0;j-)ppj+l=ppU; ppO=xxll; k+;l-;)strcat(ch/pp);strcpy(pp/ );k=l;if(l=-l)break;while(xxllz)&l=0)for(j=k;j=0;j-)ppj+l=ppj; ppO=xxll
17、; k+; I-;)strcat(ch/pp); strcpy(pp,M);k=0;if(l=-l)break;strcpy(xxl,ch);)或者:void StrOL(void)int i,j,k,m,n,ll;char yy80;for(i=0; i =0; j-)if(isalpha(xxij) k+;elsefor(m=l; m=k; m+)yyn+=xxij+m; k=0;if(xxiU=)yyn+=for(m=l; m=k; m+) yyn+=xxij+m;yyn=0; strcpy(xxi,yy);)原程序如下:# includestdio.h# includeustring.
18、h# includeconio.h# includectype.hchar xx5080;int maxline=0;int ReadDat(void);void WriteDat(void);void StrOR(void)void main()clrscr();if(ReadDat()printf(Cant open the file!n);return;StrOR();WriteDat();system(pause);int ReadDat(void)FILE *fp;int i=O;char *p;if(fp=fopen(in.dat/r)=NULL) return 1;while(f
19、gets(xxi/80/fp)!=NULL)p=strchr(xxi;n);if(P)*P=O;i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen(out.dat/w);for(i=0;imaxline;i+)printf(%sn“,xxi);fprintf(fp,%sn”,xxi);fclose(fp);5:在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat。读取这 200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的
20、后三位的大小 进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等, 则按原先的数值进行降序排列。最后调用函数WriteDat。把结果bb输出到文件out.dat中。例:处理前 6012 5099 9012 7025 8088处理后 9012 6012 7025 8088 5099注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。void jsSort() /* 标准答案*/ int IJ,data;for(l=0;l199;l+) for(j=l+l;jaaj%1000) data=aal;a
21、al=aaj;aaj=data; else if(aal%1000=aaj%1000) if(aalaaj)data=aal;aal=aaj;aaj=data; for(l=0;l10;l+) bbl=aal; 原程序如下: #include #include #includeint aa200zbb10; void jsSort() ( void main() readDat();jsSort();writeDat(); system(pause); readDatf) FILE *in; int i;in=fopen(,in.dat/r);for(i=0; i200; i+) fscanf
22、(in,”d,”,&aai); fclose(in);)writeDat() FILE *out; int i; clrscr();out=fopen(out.dat/w);for(i=0; i10; i+)printf(i=%d/%dn,i+l/bbi);fprintf(outj%dn,bbij);fclose(out);6:在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat。读取这 200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小 进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后
23、三位的数值相等, 则按原先的数值进行升序排列。最后调用函数WriteDat。把结果bb输出到文件out.dat中。例:处理前 9012 5099 6012 7025 8088处理后 5099 8088 7025 6012 9012注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。void jsSort() /* 标准答案*/int IJdata;for(l=0;l199;l+) for(j=l+l;j200;j+)if (aal%1000aaj)data=aal;aal=aaj;aaj=data; for(l=0;l10;l+
24、) bbl=aal; 原程序如下:#include#include#includeint aa200,bb10;void jsSort()(void main()(readDat();jsSort();writeDat();system(pause);)readDat()FILE *in;int i;in=fopen(in.dat,7,r);for(i=0; i200; i+) fscanf(in,%d,”,&aai);fclose(in);writeDat()FILE *out;int i;clrscr();out=fopen(out.dat/w);for(i=0; i10; i+)prin
25、tf(i=%d,%dn/i+l/bbi);fprintf(out,dn”,bbi);)fclose(out);7:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型 4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其 中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell 中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则 按金额从大到小进行排歹|J,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat(
26、)把 结果输出到文件OUT10.DAT中。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main()、读数据函数ReadDat。和输出数据函数WriteDat()的内容。void SortDat。/*标准答案*/int IJ;PRO xy;for(l=0;l99;l+)for(j=l+l;j100;j+)if(strcmp(selll.dm/sellj.clm)O)xy=selll;selll=sellj;sellj=xy;else if(strcmp(selll.dm/sellj.dm)=O) if(selll.jesellj.je)xy=selll; selll=sellj; se
27、llj=xy;原程序如下:#include#include#include#include#include#define MAX 100typedef structchar dm5; /*产品代码*/char产品名称*/int dj;/*单价*/ int si;/*数量*/ long je;/* 金额 */ PRO;PRO sellMAX;void ReadDat();void WriteDat(); void SortDat() ( ) void main()memsetfselLO,sizeoffsell);ReadDat();SortDat();WriteDat(); void Read
28、Dat() FILE *fp;char str80,chll;int i;fp=fopen(,IN.DAT;r);for(i=0;i100;i+)fgets(str,80,fp);memcpy(selli.dm,str,4);memcpy(selli.mc,str+4,10);memcpy(ch/str+14z4);ch4=0;selli.dj=atoi(ch);memcpy(ch/str+18,5);ch5=0;selli.sl=atoi(ch);selli.je=(long)selli.dj*selli.sl; fclose(fp);void WriteDat(void)FILE *fp;
29、int i;fp=fopen(OUT10.DAT/wH);for(i=0;i100;i+)fprintf(fp;%s %s %4d %5d %101dn,fclose(fp);8:函数ReadDat。实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制 函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应 的位置上,最后调用函数WriteDat()把结果xx输出到文件PS1.DAT中。替代关系:f(p)=p*ll mod 256 (p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值
30、小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符 进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。void encryptChar() /*标准答案*/int I;char *pf;for(l=0;l130| |*pf*ll%256=32);else*pf=*pf*ll%256;pf+;)或者:void encryptChar()int ij;char *p;for(i=0;imaxline;i+)for(j=0;jstrlen(xxi);j
31、+) p=(xxij*ll)%256;if(p130)/else xxij=p;原程序如下:#include#include#include#includeunsigned char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void encryptChar()(void main()clrscr();if(ReadDat()printf(数据文件ENG.IN不能打开! n007);return;encryptChar();WriteDat();systemfpause);int ReadDat(v
32、oid)(FILE *fp;int i=O;unsigned char *p;if(fp=fopen(eng.in/r)=NULL) return 1;while(fgets(xxiz80zfp)!=NULL)p=strchr(xxi/n);if(p)*p=O;i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen(psl.dat;w);for(i=0;imaxline;i+)printf(%sn“,xxi);fprintf(fp,sn”,xxi);)fclose(fp);9:函数ReadDat()
33、实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制 函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后 的结果仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输 出到文件OUT2.DAT中。例:原文:dAe,BfC.CCbbAA结果:fedCBA.,bbCCAA原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。类型:字符串(单词)的倒
34、置和删除。void SortCharD(void) /*标准答案*/int l,j,k,strl;char ch;for(l=0;lmaxline;l+)strl=strlen(xxl);for(j=0;jstrl-l;j+)for(k=j+l;kstrl;k+)if(xxljxxlk)ch=xxlj; xxlj=xxlk; xxlk=ch;原程序如下:#include #include #include char xx5080;int maxline = 0; /*文章的总行数*/int ReadDat(void);void WriteDat(void);void SortCharD(voi
35、d)int IJzk,strl;char ch;for(l=0;lmaxline;l+)strl=strlen(xxl);for(j=0;jstrl-l;j+)for(k=j+l;kstrl;k+)if(xxlUxxlk)ch=xxlj; xxlj=xxlk; xxlk=ch;)void main()(clrscr();if(ReadDat() printf(数据文件IN.DAT不能打开!n007);return;SortCharD();WriteDat();system(pauseH);int ReadDat(void)(FILE *fp;int i = 0 ;char *p;if(fp =
36、 fopen(IN.DATz Hr) = NULL) return 1;while(fgets(xxi, 80, fp) != NULL) p = strchr(xxiz n);if(p) *P = 0;i+;maxline = i;fclose(fp);return 0;|void WriteDat(void)FILE *fp ;inti;clrscr();fp = fopen(OUT2.DAT, wH);for(i = 0; i maxline ; i+) printf(%sn”, xxi);fprintf(fp, %sn, xxi);fclose(fp);10:请编制函数ConvertC
37、harAO,其函数的功能是:以行为单位把字符串中的所有小写字母 改写成该字母的下一个字母,如果是字母z,则改写成字母a,大写字母和其它字符保持不变。 把己处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat。 把结果xx输出到文件OUT3.DAT中。例:原文:Adb.Bcdzaabck.LLhj结果:Aec.Bdeabbcdl.LLik原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。类型:字符串(单
38、词)的倒置和删除。void ConvertCharA(void) /*标准答案*/int l,j,str;for(l=0;lmaxline;l+)str =strlen(xxl);for(j=0;j=a&xxlj=,y)xxlj+=l;原程序如下:#include #include #include char xx5080;int maxline = 0; /*文章的总行数*/int ReadDat(void);void WriteDat(void);void ConvertCharA(void)(void main()clrscr();if(ReadDat() printf(数据文件IN.DAT不能打开!n007);return;)ConvertCharA();WriteDat();system(pause);int ReadDat(void) FILE *fp ; int i