2022年计算机等级考试上机练习系统部分程序调试题答案 .pdf
计算机等级考试上机练习系统部分程序调试题答案1、该程序功能:输入1 个字符串,输出其中所出现过的大写英文字母。如运行时输入字符串FONTNAME and FILENAME,应输出 F O N T A M E I L。#include void main() char x80,y26; int i,j,ny=0; gets(x); for(i=0;xi!=0;i+) if(xi=A&xi=Z) for(j=0;jny;j+) /* 1 */ if(yi=xj) continue; if(yj=xi) break; if(j=ny) yny=xi; ny+; /* 2 */ for(i=0;i26;i+) for(i=0;iny;i+) printf(%c ,yi); printf(n); 2、该程序功能:输入x 和正数 eps,计算多项式1-x+x*x/2!-x*x*x/3!+.的和直到末项的绝对值小于eps为止。#include #include void main() float x,eps,s=1,t=1,i=1; scanf(%f%f,&x,&eps); do /* 1 */ t=-t*x/+i; t=-t*x/i+;s+=t; /* 2 */ while(fabs(t)=eps) while(fabs(t)=eps);printf(%fn,s); 3、 该 程 序 功 能 : 运 行 时 若 输 入a、 n 分 别 为3、 6 , 则 输 出 下 列 表 达 式 的 值 :3+33+333+3333+33333+333333 #include void main() int i,a,n; long t=0; /* 1 */ s=0; long s=0;scanf(%d%d,&a,&n); for(i=1;i=n;i+) /* 2 */ t=t*10+i; t=t*10+1;s=s+t; s=s*a; printf(%ldn,s); 4、该程序功能:输出61000 之间的完数(1 个数的因子和等于其自身的数:6=1+2+3 、28=1+2+4+7+14 ,则 6、28 都是完数)。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 6 页#include void main() int i,j,s; for(i=6;i=1000;i+) _1_ s=1;for(j=2;_2_;j+) if(i%j=0) s+=j; j=i/2if(s=i) printf(%dn,s); 5、 该程序功能:数列的第1、2 项均为1,此后各项值均为该项前二项之和。计算数列第30 项的值。#include _1_ long f(int n);void main() printf(%ldn,f(30); long f(int n) if( _2_ ) n=1 | n=2 return 1; else return f(n-1)+f(n-2); 6、该程序功能:输入三个整数,按由小到大的顺序输出这三个数。#include void swap(_1_) int *pa,int *pb /* 交换两个数的位置*/ int temp; temp = *pa; *pa = *pb; *pb = temp; void main() int a,b,c,temp; scanf(%d%d%d,&a,&b,&c); if(ab) swap(&a,&b); if(bc) swap(&b,&c); if(_2_) ab swap(&a,&b); printf(%d,%d,%d,a,b,c); 7、该程序功能:将输入的十进制正整数n通过函数Dec2Bin 转换为二进制数,并将转换结果输出。#include void Dec2Bin(int m) int bin32,j; for(j=0;m!=0;j+) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 6 页binj= _1_; m%2m=m/2; for(;j!=0;j-) printf(%d, _2_ ); binj-1 void main() int n; scanf(%d,&n); Dec2Bin(n); 8、该程序功能:对x=1,2,.,10,求 f(x)=x*x-5*x+sin(x) 的最大值。#include #include #define f(x) x*x-5*x+sin(x) void main() int x; float max; _1_ max=f(1);for(x=2;xmax) max=f(x) ;printf(%fn,max); 9、该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。#include #include void main() char a80; int n5=0,i; gets(a); for(i=0; ai!=0; i+) /* 1 */ switch(toupper(ai) switch(tolower(ai) case a: n0+; break; case e: n1+; break; case i: n2+; break; case o: n3+; break; /* 2 */ case U: n4+; case u: n4+; for(i=0;i5;i+) printf(%dn,ni); 10、该程序功能:调用函数f 计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x当 x=1.7 时的值。#include float f(float,float*,int); void main() float b5=1.1,2.2,3.3,4.4,5.5; printf(%fn,f(1.7,b,5); float f( _1_ ) float f( float x,float *a,int n ) float y=a0,t=1; int i; for(i=1;in;i+) t=t*x; y=y+ai*t; _2_return y; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 6 页11、 该程序功能: 将一个 char 型数的高 4 位和低 4 位分离,分别输出,如 22(二进制 :00010110)输出为 1 和 6。#include void main() char a,b1,b2,c; scanf(%d,&a); /* 1 */ b1=a4;c=(04); /* 2 */ b2=a|c; /*b2 存放低 4 位*/ b2=a&c; printf(%d,%d,b1,b2); 12、程序功能:输入n 以及小于n 个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。#include #include #include void main() int n,i; /* 1 */ char str; char *str;scanf(%dn,&n); str=(char*)malloc(n); gets(str); /* 2 */ for(i=1;istrlen(str);i+) for(i=0;i=a& stri=z) stri=stri-(a-A); puts(str); 13、该程序功能:输入n,再输入 n 个点的平面坐标,然后输出那些距离坐标原点不超过5的点的坐标值。#include #include #include void main() int i,n; /* 1 */ struct axy float x,y; a; struct axy float x,y; *a;scanf(%d,&n); a=(float*) malloc(n*2*sizeof(float); for(i=0;in;i+) /* 2 */ scanf(%f%f,ai.x,ai.y); scanf(%f%f,&ai.x, &ai.y);for(i=0;in;i+) if(sqrt(ai.x*ai.x+ai.y*ai.y)=5) printf(%f,%fn,ai.x,ai.y); 14、该程序功能:求输入的整数各位数字之和,如输入234 则输出 9,输入 -312 则输出 6。#include #include void main() 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 6 页int n,s=0; scanf(%d,&n); _ 1 _ n=fabs(n);while(n!=0) _ 2 _ s=s+n%10;n=n/10; printf(%dn,s); 15、该程序功能:输入1 个整数后,输出该数的位数(若输入3214 则输出 4,输入 -23156则输出 5) 。#include void main() int n,k=0; scanf(%d,&n); while( _1_ ) nk+; _2_; n=n/10 printf(%dn,k); 16、程序功能:运行时输入n,输出 n 的所有质数因子(如n=13860,则输出2、2、3、 3、5、7、11) 。#include void main() int n,i; scanf(%d,&n); /* 1 */ i=1; i=2;while(n1) if(n%i=0) printf(%dt,i); n/=i; else /* 2 */ n-; i+; 17、该程序功能:输入的一个小写字母,将字母循环后移5 个位置后输出, 如a变成 f, w变成 b 。#include void main() char c; c=getchar(); if(_1_) if(c=a&c=v & c=z) _2_ c=c+5-26;putchar(c); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 6 页18、该程序功能:调用函数f,从字符串中删除所有的数字字符。#include #include #include void f(char *s) int i=0; while(si!=0) if(isdigit(si) _1_(s+i,s+i+1); strcpy_2_ i+; else void main() char str80; gets(str); f(str); puts(str); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 6 页