资源描述
计算机等级考试上机练习系统部分程序调试题答案
1、该程序功能:输入1个字符串,输出其中所出现过的大写英文字母。如运行时输入字符串"FONTNAME and FILENAME",应输出"F O N T A M E I L"。
#include <stdio.h>
void main()
{ char x[80],y[26]; int i,j,ny=0;
gets(x);
for(i=0;x[i]!='\0';i++)
if(x[i]>='A'&&x[i]<='Z') {
for(j=0;j<ny;j++)
/***** 1 *****/
if(y[i]==x[j]) continue; if(y[j]==x[i]) break;
if(j==ny) { y[ny]=x[i]; ny++; }
}
/***** 2 *****/
for(i=0;i<26;i++) for(i=0;i<ny;i++)
printf("%c ",y[i]);
printf("\n");
}
2、该程序功能:输入x和正数eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于eps为止。
#include <stdio.h>
#include <math.h>
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("%f\n",s);
}
3、该程序功能:运行时若输入a、n分别为3、6,则输出下列表达式的值: 3+33+333+3333+33333+333333
#include <stdio.h>
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("%ld\n",s);
}
4、该程序功能:输出6~1000之间的完数(1个数的因子和等于其自身的数:6=1+2+3、 28=1+2+4+7+14,则6、28都是完数)。
#include <stdio.h>
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/2
if(s==i) printf("%d\n",s);
}
}
5、 该程序功能:数列的第1、2项均为1,此后各项值均为该项前二项之和。计算数列第30项的值。
#include <stdio.h>
_______1______ long f(int n);
void main()
{
printf("%ld\n",f(30));
}
long f(int n)
{
if( ______2______ ) n==1 || n==2
return 1;
else
return f(n-1)+f(n-2);
}
6、该程序功能:输入三个整数,按由小到大的顺序输出这三个数。
#include <stdio.h>
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(a>b)
swap(&a,&b);
if(b>c)
swap(&b,&c);
if(______2______) a>b
swap(&a,&b);
printf("%d,%d,%d",a,b,c);
}
7、该程序功能:将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。
#include <stdio.h>
void Dec2Bin(int m)
{
int bin[32],j;
for(j=0;m!=0;j++)
{
bin[j]= ______1______; m%2
m=m/2;
}
for(;j!=0;j--)
printf("%d", ______2______ ); bin[j-1]
}
void main()
{
int n;
scanf("%d",&n);
Dec2Bin(n);
}
8、该程序功能:对x=1,2,...,10,求f(x)=x*x-5*x+sin(x)的最大值。
#include <stdio.h>
#include <math.h>
#define f(x) x*x-5*x+sin(x)
void main()
{ int x; float max;
______1______ max=f(1);
for(x=2;x<=10;x++)
______2______ if((f(x))>max) max=f(x) ;
printf("%f\n",max);
}
9、该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。
#include <stdio.h>
#include <ctype.h>
void main()
{ char a[80]; int n[5]={0},i; gets(a);
for(i=0; a[i]!='\0'; i++)
/***** 1 *****/
switch(toupper(a[i])) { switch(tolower(a[i]))
case 'a': n[0]++; break;
case 'e': n[1]++; break;
case 'i': n[2]++; break;
case 'o': n[3]++; break;
/***** 2 *****/
case 'U': n[4]++; case 'u': n[4]++;
}
for(i=0;i<5;i++) printf("%d\n",n[i]);
}
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 <stdio.h>
float f(float,float*,int);
void main()
{ float b[5]={1.1,2.2,3.3,4.4,5.5};
printf("%f\n",f(1.7,b,5));
}
float f( _______1________ ) float f( float x,float *a,int n )
{ float y=a[0],t=1; int i;
for(i=1;i<n;i++) { t=t*x; y=y+a[i]*t; }
_____2_____ return y;
}
11、该程序功能:将一个char型数的高4位和低4位分离,分别输出,如22(二进制:00010110)输出为1和6。
#include <stdio.h>
void main()
{
char a,b1,b2,c;
scanf("%d",&a);
/****** 1 ******/
b1=a<<4; /*b1存放高4位*/ b1=a>>4;
c=~(~0<<4);
/****** 2 ******/
b2=a|c; /*b2存放低4位*/ b2=a&c;
printf("%d,%d",b1,b2);
}
12、程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{ int n,i;
/***** 1 *****/
char str; char *str;
scanf("%d\n",&n); str=(char*)malloc(n); gets(str);
/***** 2 *****/
for(i=1;i<strlen(str);i++) for(i=0;i<strlen(str);i++)
if(str[i]>='a'&& str[i]<='z') str[i]=str[i]-('a'-'A');
puts(str);
}
13、该程序功能:输入n,再输入n个点的平面坐标,然后输出那些距离坐标原点不超过5的点的坐标值。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
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;i<n;i++)
/***** 2 *****/
scanf("%f%f",a[i].x,a[i].y); scanf("%f%f",&a[i].x, &a[i].y);
for(i=0;i<n;i++)
if(sqrt(a[i].x*a[i].x+a[i].y*a[i].y)<=5)
printf("%f,%f\n",a[i].x,a[i].y);
}
14、该程序功能:求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。
#include <stdio.h>
#include <math.h>
void main()
{
int n,s=0;
scanf("%d",&n);
______ 1 ______ n=fabs(n);
while(n!=0) {
______ 2 ______ s=s+n%10;
n=n/10;
}
printf("%d\n",s);
}
15、该程序功能:输入1个整数后,输出该数的位数(若输入3214则输出4,输入-23156则输出5)。
#include <stdio.h>
void main()
{ int n,k=0;
scanf("%d",&n);
while( _____1_____ ){ n
k++;
_____2_____; n=n/10
}
printf("%d\n",k);
}
16、程序功能:运行时输入n,输出n的所有质数因子(如n=13860,则输出2、2、3、3、5、7、11)。
#include <stdio.h>
void main()
{ int n,i;
scanf("%d",&n);
/****** 1 ******/
i=1; i=2;
while(n>1)
if(n%i==0) {
printf("%d\t",i);
n/=i;
}
else
/******** 2 *******/
n--; i++;
}
17、该程序功能:输入的一个小写字母,将字母循环后移5个位置后输出, 如’a’变成’f’, ‘w’变成’b’。
#include <stdio.h>
void main()
{
char c;
c=getchar();
if(______1______) if(c>='a'&&c<='u')
c=c+5;
else
if (c>='v' && c<='z')
______2______ c=c+5-26;
putchar(c);
}
18、该程序功能:调用函数f,从字符串中删除所有的数字字符。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void f(char *s)
{ int i=0;
while(s[i]!='\0')
if(isdigit(s[i])) ____1____(s+i,s+i+1); strcpy
___2___ i++; else
}
void main()
{ char str[80];
gets(str); f(str); puts(str);
}
展开阅读全文