2009年12月C语言程序设计等级考试大题参考答案
一、改错题
#include
/**/ int f; /**/ 改为:float f; clrscr();
printf(\
scanf(\ 改为:&a, &b
f=/**/ a/b; /**/ 改为:(float)a/b; 或1.0*a/b; c=(int)((f-(int)f)*10);
printf(\ %d\\n\ getch(); }
#include
void find(/**/ n /**/) 改为:int n { int a1,a2;
a1=m; a2=m/10;
if(m%3==0 &&(/**/ a1==4 && a2==4 /**/)) 改为:a1= = 4 || a2= = 4 printf(\}
void main() { int k;
for(k=10;k<=99;k++)
/**/ fun( k ) /**/; 改为:find( k ) getch(); }
#include
void main()
{ /**/ int a,Tag; /**/ 改为:int a,tag; int num1=0,num2=0; clrscr();
printf(\
scanf(\ 改为:&a tag=a;
while(a)
{ scanf(\
/**/ if(a) /**/ continue; 改为:if (a==0) else if(a
printf(\ getch(); }
#include
long int k;
if(n==1)
/**/ k=0 /**/; 改为:k=1 else
k=n*fsum(n-1);
return (/**/ 1 /**/); 改为:k }
void main() { int i;
long int sum; sum=0;
for(i=1;i<=9;/**/ i++;i++ /**/) 改为:i++,i++ 或i=i+2 sum+=fsum(i);
printf(\ getch(); }
#include
{ int i,a=0;
/**/ c1,c2; /**/ 改为:char c1,c2; clrscr();
printf(\ c2=getchar();
/**/ for(i=1,i<=7;i++) /**/ 改为:for(i=1;i<=7;i++) { c1=getchar(); a=a*2+c1-'0'; }
/**/ If (c2) /**/ a=(-1)*a; 改为:if (c2) printf(\ getch(); }
#include
void main( ) { int i,n;
/**/ n = 1; /**/ 改为:n=0 for(i=10;i<=100;i++) if(i/10==i) {printf(\
n++;
if(/**/ n%9=0 /**/) 改为:n%9==0 printf(\ }
for(i=100;i<=999;i++)
if(/**/ i/100==i/10 /**/) 改为:i/100==i {printf(\ n++;
if(n%9==0) printf(\ } getch(); }
#include
{ /**/ int a(10); /**/ 改为:int a[10]; int i,j,k,x;
printf(\
scanf(\ 改为:&x a[0]=x;
for(k=1;k<=9;k++) { scanf(\ for(i=0;i
if(i for(j=k;j>i;j--) a[j]=a[j-1]; a[i]=x; } /**/ for(i=1;i<=10;i++) /**/ 改为:for(i=0;i<=9;i++) printf(\ \ printf(\ getch(); } #include #include int fun( /**/ float a, b, c /**/) 改为:float a, float b, float c { float t; int mk = 0; if(c { t = a; a = c; c = t; } if(c { t = b; b = c; c = t; } if( fabs( c*c - (a*a+b*b)) < 1.0e-8) mk = 1; /**/ return (1); /**/ 改为:return (mk); } main() { float a,b,c; printf(\ scanf(\ if(/**/ fun(a b c) /**/== 1) 改为:fun(a, b, c) printf(\es\\n\ else printf(\ getch(); } #include { int a[10]={0}; /**/ int i, j, k,temp, /**/ 改为: int i, j, k,temp; printf(\ /**/ for(k=1;k<10;k++) /**/ 改为:for(k=0;k<10;k++) scanf(\ for(i=0;i<9;i++) { k=i; for(j=i+1;j<10;j++) { if(a[k]>a[j]) k=j; } if(k!=i) /**/ {temp=a[i];a[k]=a[i];a[i]=temp;} /**/ 改为:{temp=a[k];a[k]=a[i];a[i]=temp;} } for(i=0;i<10;i++) printf(\ \ printf(\ getch(); } #include float a,b,c,max; float fmax(float,float,float); printf(\ scanf(\ max=/**/ fmax(a;b;c) /**/; 改为:fmax(a, b, c) printf(\ getch(); } /**/float fmax(float x, y, z) /**/ 改为:float fmax(float x, float y, float z) { float m1,m2; m1=(y>z)?y:z; m2=/**/ (x>y)?x:y; /**/ 改为:(x>m1)?x:m1; return(m2); } #include void main() { int a[20]={1,3,7,9,12,14,23,26,34,43,45,47,49,56,58,59,78,79,87,89}; int left,right,mid,q,count; left=0 ; /**/ right = 19 /**/ 改为:right = 19; printf(\ scanf(\ 改为:&q count=1; while(left<=right) { mid= ( left + right)/2 ; if(q==a[mid]) break; else if(q /**/ count--; /**/ 改为:count++; } if(left<=right) printf(\ %d\\n\ else printf(\ \\n\ getch();