2011年3月汇编全国计算机等级考试(南开100题三级网络技术上机试题汇编)_第1页
2011年3月汇编全国计算机等级考试(南开100题三级网络技术上机试题汇编)_第2页
2011年3月汇编全国计算机等级考试(南开100题三级网络技术上机试题汇编)_第3页
2011年3月汇编全国计算机等级考试(南开100题三级网络技术上机试题汇编)_第4页
2011年3月汇编全国计算机等级考试(南开100题三级网络技术上机试题汇编)_第5页
已阅读5页,还剩175页未读 继续免费阅读

下载本文档

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

文档简介

1、全国计算机等级考试三级网络技术上机试题汇编 2011年版 1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(int m,int k,int xx)实现函数的要求 ,最后调用函数readwritedat()把结果输出到文件out.dat中。例如:若输入17,5,则应输出:19,23,29,31,37。注意:部分源程序已给出。请勿改动主函数main()和函数readwritedat()的内容。 -类型:素数。 void num(int m,int k,int xx) /*标准答案*/ int data=m+1; int half,n=0,i; while(1) h

2、alf=data/2;for(i=2;ihalf) xxn=data;n+; if(n=k)break; data+; 或者: void num(int m,int k,int xx) int i,j,s=0; for(i=m+1;k0;i+) for(j=2;j0;m+) if(isp(m) xxi+=m; k-; 原程序如下: #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

3、 m,int k,int xx) main() int m, n, xx1000 ; clrscr() ; printf(nplease enter two integers:) ; scanf(%d,%d, &m, &n ) ; num(m, n, xx) ; for(m = 0 ; m n ; m+) printf(%d , xxm) ; printf(n) ; readwritedat() ; system(pause); void readwritedat() int m, n, xx1000, i ; file *rf, *wf ; rf = fopen(in.dat, r) ; w

4、f = fopen(out.dat, w) ; for(i = 0 ; i 10 ; i+) fscanf(rf, %d %d, &m, &n) ; num(m, n, xx) ; for(m = 0 ; m n ; m+) fprintf(wf, %d , xxm) ; fprintf(wf, n) ; fclose(rf) ; fclose(wf) ; 2:已知数据文件in.dat中存有200个四位数, 并已调用读函数readdat()把这些数存入数组a中,请考生编制一函数jsval(),其功能是: 如果四位数各位上的数字均是0或2或4或6或8, 则统计出满足此条件的个数cnt, 并把这些

5、四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writedat( )把结果cnt以及数组b中符合条件的四位数输出到out.dat文件中。注意: 部分源程序存在文件prog1.c文件中。 程序中已定义数组: a200, b200, 已定义变量: cnt 请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readdat()和写函数writedat()的内容 void jsval() /*标准答案*/ int bb4; int i,j,k,flag; for (i=0;i200;i+) bb0=ai/1000; bb1=ai%1000/100; bb2=ai%1

6、00/10; bb3=ai%10; for (j=0;j4;j+) if (bbj%2=0) flag=1; else flag=0;break; if (flag=1) bcnt=ai; cnt+; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if (bibj) k=bi;bi=bj;bj=k; 原程序如下: #include #define max 200 int amax, bmax, cnt = 0; void jsval() void readdat() int i ; file *fp ; fp = fopen(in.dat, r) ; for(i

7、= 0 ; i max ; i+) fscanf(fp, %d, &ai) ; fclose(fp) ; void main() int i ; readdat() ; jsval() ; printf(满足条件的数=%dn, cnt) ; for(i = 0 ; i cnt ; i+) printf(%d , bi) ; printf(n) ; writedat() ; system(pause); writedat() file *fp ; int i ; fp = fopen(out.dat, w) ; fprintf(fp, %dn, cnt) ; for(i = 0 ; i cnt

8、; i+) fprintf(fp, %dn, bi) ; fclose(fp) ; 3:函数readdat()实现从文件in.dat中读取一篇英文文章存入到字符串数组xx中;请编制函数 stror(),其函数功能是:以行为单位把字符串中的所有小写字母o左边的字符串内容移到该串的右边存放,然后并把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writedat()把结果xx输出到文件out.dat中. 例如:原文:you can create an index on any field. you have the cor

9、rect record. 结果: n any field.you can create an index rd.yu have the crrect rec 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格. -类型:字符串(单词)的倒置和删除。 void stror(void) /*标准答案*/ int i,j,k,index,strl; char ch; for(i=0;imaxline;i+) strl=strlen(xxi); index=strl; for(j=0;jstrl;j+) if(xxij=o) for(k=j;k=index;j-) ch=xxist

10、rl-1; for(k=strl-1;k0;k-) xxik=xxik-1; xxi0=ch; 或者: void stror(void) int i; char a80,*p; for(i=0;imaxline;i+) p=strchr(xxi,o); while(p) memset(a,0,80); memcpy(a,xxi,p-xxi); strcpy(xxi,p+1); strcat(xxi,a); p=strchr(xxi,o); 或者: void stror(void) /*我的非指针解法*/ int i,righto,j,k; char tem80; for(i=0;i=0;j-)

11、 if(xxij=o) righto=j;break; for(j=righto+1;jstrlen(xxi);j+) temk+=xxij; for(j=0;jrighto;j+) if(xxij!=o) temk+=xxij; strcpy(xxi,tem); 或者:注:该题要求的字符串中所有小写字母o左边的字符串内容移到该串的右边存放,即将串中“最后”一个字母o左右两侧的内容互换。题中第一个while()特环的作用是让p1指向最后一个字母 o。第一个ctrcat()函数的作用是将p1以后的字符都放到新串t中,第二个strcat()函数的作用是将p1以前的字符连接到新串t的后面(注意:在些

12、之前要让p1所指的单元成为p1前面字符串的结束位置*p1=0)。这时完成左右互换。最后一个while()循环的作用是删除新串中的所有小写字母o,采用的删除方法是不是o的字母一律留下,否则不留(即相当于删除。) void stror(void) int i; char *p1,*p2,t80; for(i=0;imaxline;i+) t0=0;p2=xxi; while(*p2) if(*p2=o) p1=p2; p2+; strcat(t,p1+1); *p1=0;strcat(t,xxi); p1=xxi;p2=t; while(*p2) if(*p2!=o) *p1+=*p2; p2+;

13、 *p1=0; 或者:注:该题的主要算法是先让两字符指针都指向串尾,然后使一指针(p1)往前移动,当出现不是字母时则表示在p1+1与p2之间是一个单词,并将该单词存入一变量(t1),最后将t1连接到新串中(t);接着再往前找第二个单词,依次类推直到字符串头。由此可知新串就是原串中各单词的倒排。 void str0l(void) int i,k; char *p1,*p2; char t80,t180; for(i=0;i=xxi) p1-; memcpy(t1,p1+1,p2-p1); t1p2-p1=0; strcat(t,t1); strcat(t, ); if(p1xxi) k=0; s

14、trcpy(xxi,t); 原程序如下: # includestdio.h # includestring.h # includeconio.h char 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=

15、0;char *p; if(fp=fopen(in.dat,r)=null) return 1; while(fgets(xxi,80,fp)!=null) p=strchr(xxi,n); if(p) *p=0; 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); 4:函数readdat( )实现从文件in.dat中

16、读取一篇英文文章存入到字符串数组xx中; 请编制函数strol( ), 其函数的功能是: 以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排,同时去除标点符号,之后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中。最后main()函数调用函数writedat()把结果xx输出到文件out6.dat中。例如: 原文: you he me i am a student. 结果: me he you student a am i 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含标点符号和空格。 -类型:字符串(单词)的倒置和删除。 void strol(void)

17、/*标准答案*/ int i,j,k,strl,l;char c; for(i=0;imaxline;i+) for(j=0;j=a&c=a&c=z)|c= ) ; else xxij= ; for(l=0;l=a&xxli=a&xxli=0) for(j=k;j=0;j-) ppj+1=ppj; pp0=xxli; k+;i-; strcat(ch,pp);strcpy(pp, );k=1; if(i=-1)break; while(xxliz)&i=0) for(j=k;j=0;j-) ppj+1=ppj; pp0=xxli; k+; i-; strcat(ch,pp); strcpy(p

18、p,); k=0; if(i=-1)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+; else for(m=1; m=k; m+) yyn+=xxij+m; k=0; if(xxij= ) yyn+= ; for(m=1; m=k; m+) yyn+=xxij+m; yyn=0; strcpy(xxi,yy); 原程序如下: # includestdio.h # includestring.h # includeconi

19、o.h # includectype.h char 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=0;char *p; if(fp=fopen(in.dat,r)=null) return 1; whi

20、le(fgets(xxi,80,fp)!=null) p=strchr(xxi,n); if(p) *p=0; 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

21、(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数writedat()把结果bb输出到文件out.dat中。例:处理前 6012 5099 9012 7025 8088 处理后 9012 6012 7025 8088 5099 注意:部分源程序已给出。请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。 void jssort() /*标准答案*/ int i,j,data; for(i=0;i199;i+) for(j=i+1

22、;jaaj%1000) data=aai;aai=aaj;aaj=data; else if(aai%1000=aaj%1000) if(aaiaaj) data=aai;aai=aaj;aaj=data; for(i=0;i10;i+) bbi=aai; 原程序如下: #include #include #include int aa200,bb10; void jssort() void main() readdat(); jssort(); writedat(); system(pause); readdat() file *in; int i; in=fopen(in.dat,r);

23、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+) printf(i=%d,%dn,i+1,bbi); fprintf(out,%dn,bbi); fclose(out); 6:在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数readdat()读取这200个数存放到数组aa中。请编制函数jssort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,

24、然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数writedat()把结果bb输出到文件out.dat中。例:处理前 9012 5099 6012 7025 8088 处理后 5099 8088 7025 6012 9012 注意:部分源程序已给出。请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。 void jssort() /*标准答案*/ int i,j,data; for(i=0;i199;i+) for(j=i+1;j200;j+) if (aai%1000aaj) data

25、=aai;aai=aaj;aaj=data; for(i=0;i10;i+) bbi=aai; 原程序如下: #include #include #include int aa200,bb10; void jssort() void main() readdat(); jssort(); writedat(); system(pause); readdat() file *in; int i; in=fopen(in.dat,r); for(i=0; i200; i+) fscanf(in,%d,&aai); fclose(in); writedat() file *out; int i; c

26、lrscr(); out=fopen(out.dat,w); for(i=0; i10; i+) printf(i=%d,%dn,i+1,bbi); fprintf(out,%dn,bbi); fclose(out); 7:已知在文件in.dat中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数readdat()是读取这100个销售记录并存入结构数组sell中。请编制函数sortdat(),其功能要求:按产品代码从大到小进行排列,若产品代码

27、相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数writedat()把结果输出到文件out10.dat中。注意: 部分源程序存放在prog1.c中。请勿改动主函数main( )、读数据函数readdat()和输出数据函数writedat()的内容。 void sortdat() /*标准答案*/ int i,j; pro xy; for(i=0;i99;i+) for(j=i+1;j100;j+) if(strcmp(selli.dm,sellj.dm)0) xy=selli;selli=sellj;sellj=xy; else if(strcmp(selli

28、.dm,sellj.dm)=0) if(selli.jesellj.je) xy=selli; selli=sellj; sellj=xy; 原程序如下: #include #include #include #include #include #define max 100 typedef struct char dm5; /*产品代码*/ char mc11; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/ pro; pro sellmax; void readdat(); void writedat(); void sortd

29、at() void main() memset(sell,0,sizeof(sell); readdat(); sortdat(); writedat(); void readdat() file *fp; char str80,ch11; 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+14,4);ch4=0; selli.dj=atoi(ch); memcpy(ch,str+18,5);

30、ch5=0; selli.sl=atoi(ch); selli.je=(long)selli.dj*selli.sl; fclose(fp); void writedat(void) file *fp; int i; fp=fopen(out10.dat,w); for(i=0;i100;i+) fprintf(fp,%s %s %4d %5d %101dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je); fclose(fp); 8:函数readdat()实现从文件eng.in中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptc

31、har(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数writedat()把结果xx输出到文件ps1.dat中。替代关系:f(p)=p*11 mod 256 (p是数组中某一个字符的ascii值,f(p)是计算后新字符的 ascii值),如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。 void encryptchar() /

32、*标准答案*/ int i; char *pf; for(i=0;i130|*pf*11%256=32); else *pf=*pf*11%256; pf+; 或者: void encryptchar() int i,j; char *p; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) p=(xxij*11)%256; if(p130) ; else xxij=p; 原程序如下: #include #include #include #include unsigned char xx5080; int maxline=0;/*文章的总行数*/ in

33、t readdat(void); void writedat(void); void encryptchar() void main() clrscr(); if(readdat() printf(数据文件eng.in不能打开!n007); return; encryptchar(); writedat(); system(pause); int readdat(void) file *fp; int i=0; unsigned char *p; if(fp=fopen(eng.in,r)=null) return 1; while(fgets(xxi,80,fp)!=null) p=strc

34、hr(xxi,n); if(p)*p=0; i+; maxline=i; fclose(fp); return 0; void writedat(void) file *fp; int i; fp=fopen(ps1.dat,w); for(i=0;imaxline;i+) printf(%sn,xxi); fprintf(fp,%sn,xxi); fclose(fp); 9:函数readdat( )实现从文件in.dat中读取一篇英文文章存入到字符串数组xx中; 请编制函 数sortchard( ), 其函数的功能是: 以行为单位对字符按从大到小的顺序进行排序, 排序后的结果仍按行重新存入字

35、符串数组xx中。最后main()函数调用函数writedat()把结果xx输出到文件out2.dat中。例: 原文: dae,bfc. ccbbaa 结果: fedcba., bbccaa 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含标点符号和空格。注意: 部分源程序存放在prog1.c中。请勿改动主函数main( )、读数据函数readdat()和输出数据函数writedat()的内容。 -类型:字符串(单词)的倒置和删除。 void sortchard(void) /*标准答案*/ int i,j,k,strl; char ch; for(i=0;imaxline;i+)

36、strl=strlen(xxi); for(j=0;jstrl-1;j+) for(k=j+1;kstrl;k+) if(xxijxxik) ch=xxij; xxij=xxik; xxik=ch; 原程序如下: #include #include #include char xx5080 ; int maxline = 0 ; /* 文章的总行数 */ int readdat(void) ; void writedat(void) ; void sortchard(void) int i,j,k,strl; char ch; for(i=0;imaxline;i+) strl=strlen(

37、xxi); for(j=0;jstrl-1;j+) for(k=j+1;kstrl;k+) if(xxijxxik) ch=xxij; xxij=xxik; xxik=ch; void main() clrscr() ; if(readdat() printf(数据文件in.dat不能打开!n007) ; return ; sortchard() ; writedat() ; system(pause); int readdat(void) file *fp ; int i = 0 ; char *p ; if(fp = fopen(in.dat, r) = null) return 1 ;

38、while(fgets(xxi, 80, fp) != null) p = strchr(xxi, n) ; if(p) *p = 0 ; i+ ; maxline = i ; fclose(fp) ; return 0 ; void writedat(void) file *fp ; int i ; clrscr() ; fp = fopen(out2.dat, w) ; for(i = 0 ; i maxline ; i+) printf(%sn, xxi) ; fprintf(fp, %sn, xxi) ; fclose(fp) ; 10:请编制函数convertchara(), 其函数

39、的功能是: 以行为单位把字符串中的所有小写字母改写成该字母的下一个字母, 如果是字母z, 则改写成字母a,大写字母和其它字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数writedat()把结果xx输出到文件out3.dat中。例: 原文: adb.bcdza abck.llhj 结果: aec.bdeab bcdl.llik 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含标点符号和空格。注意: 部分源程序存放在prog1.c中。请勿改动主函数main( )、读数据函数readdat()和输出数据函数writedat()的内容。 -类型:

40、字符串(单词)的倒置和删除。 void convertchara(void) /*标准答案*/ int i,j,str; for(i=0;imaxline;i+) str =strlen(xxi); for(j=0;j=a&xxij=y) xxij+=1; 原程序如下: #include #include #include char xx5080 ; int maxline = 0 ; /* 文章的总行数 */ int readdat(void) ; void writedat(void) ; void convertchara(void) void main() clrscr() ; if(

41、readdat() printf(数据文件in.dat不能打开!n007) ; return ; convertchara(); writedat() ; system(pause); int readdat(void) file *fp ; int i = 0 ; char *p ; if(fp = fopen(in.dat, r) = null) return 1 ; while(fgets(xxi, 80, fp) != null) p = strchr(xxi, n) ; if(p) *p = 0 ; i+ ; maxline = i ; fclose(fp) ; return 0 ;

42、 void writedat(void) file *fp ; int i ; clrscr() ; fp = fopen(out3.dat, w) ; for(i = 0 ; i =a&*s=a&*s=y) *s+=1;s+; else s+; 或者: void chg(char *s) int i,k; k=strlen(s); for(i=0;ik;i+) if(si=z|si=z) si-=25; else if(isalpha(si) si+; 原程序如下: #include #include #include #include #define n 81 void readwrite

43、dat(); void chg(char*s) main( ) char an; clrscr(); printf(enter a string : ); gets(a); printf(the original string is : ); puts(a); chg(a); printf(the string after modified : ); puts (a); readwritedat() ; system(pause); void readwritedat() int i ; char an ; file *rf, *wf ; rf = fopen(in.dat, r) ; wf

44、= fopen(out.dat, w) ; for(i = 0 ; i 10 ; i+) fscanf(rf, %s, a) ; chg(a) ; fprintf(wf, %sn, a) ; fclose(rf) ; fclose(wf) ; 12:已知在文件in.dat中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数readdat()是读取这100个销售记录并存入结构数组sell中。请编制函数sortdat(),其功能要求:按产品名称从小到大进行排列, 若产品名称相同, 则按金额从小到大进行排列.最终排列结果仍存入结构数组sell中,最后调用函数writedat()把结果输出到文件out5.dat中。注意: 部

温馨提示

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

评论

0/150

提交评论