当前位置:文档之家› 程序改错题

程序改错题

程序改错题
程序改错题

程序改错练习题

/*---------------------------------------------------- 【程序改错】第1题

------------------------------------------------------ 功能:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

----------------------------------------------------*/ #include

main()

{

char c;

int letters=0,space=0,digit=0,others=0;

printf("please input some characters\n");

/**********FOUND**********/

while((c=getchar())=='\n')

{

/**********FOUND**********/

if(c>='a'&&c<='z'&&c>='A'&&c<='Z')

letters++;

/**********FOUND**********/

else if(c=!' ')

space++;

else if(c>='0'&&c<='9')

digit++;

else

others++;

}

printf("all in all:char=%d space=%d digit=%d

others=%d\n",letters,

space,digit,others);

}

答案:

=======(答案1)=======

while((c=getchar())!='\n')

=======(答案2)=======

if( c>='a'&&c<='z' || c>='A'&&c<='Z' )

=========或=========

if( c<='z'&&c>='a' || c>='A'&&c<='Z' )

=========或=========

if( c <= 'z' && c >= 'a' || c >= 'A' && c<='Z' )

=======(答案3)=======

else if(c==' ')

/*---------------------------------------------------- 【程序改错】第2题

------------------------------------------------------ 功能:实现交换两个整数的值。

例如:给a和b分别输入3和6 ,输出为a=6 b=3

----------------------------------------------------*/ #include

/**********FOUND**********/

void fun (int a, b)

{

int t;

/**********FOUND**********/ t=a;

/**********FOUND**********/

a=b;

/**********FOUND**********/

b=t;

}

main()

{

int a,b;

printf("enter a,b:");scanf("%d%d",&a,&b);

fun(&a,&b);

printf("a=%d b=%d\n",a,b);

}

答案:

=======(答案1)=======

void fun (int *a,int *b)

=========或=========

fun (int *a,int *b)

=======(答案2)=======

t=*a;

=======(答案3)=======

*a=*b;

=======(答案4)=======

*b=t;

/*---------------------------------------------------- 【程序改错】第3题

------------------------------------------------------ 功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。

----------------------------------------------------*/ #include

#define N 11

main()

{

int i,number,a[N]={1,2,4,6,8,9,12,15,149,156};

printf("please enter an integer to insert in the array:\n");

/**********FOUND**********/

scanf("%d",&number)

printf("The original array:\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n");

/**********FOUND**********/

for(i=N-1;i>=0;i--)

if(number<=a[i])

/**********FOUND**********/

a[i]=a[i-1];

else

{

a[i+1]=number;

/**********FOUND**********/

exit;

}

if(number

printf("The result array:\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n");

}

答案:

=======(答案1)=======

scanf("%d",&number);

=======(答案2)=======

for(i=N-2;i>=0;i--)

=========或=========

for(i=N-2;0<=i;i--)

=======(答案3)=======

a[ i + 1 ]=a[i];

=======(答案4)=======

break;

/*---------------------------------------------------- 【程序改错】第4题

------------------------------------------------------ 功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。

----------------------------------------------------*/ #include

main()

{

int i,a,n=1;

/**********FOUND**********/

while(n<7)

{

do

{

scanf("%d",&a);

}

/**********FOUND**********/

while(a<1&&a>50);

/**********FOUND**********/

for(i=0;i<=a;i++)

printf("*");

printf("\n");

n++;

}

}

答案:

=======(答案1)=======

while(n<=7)

=========或=========

while(n<8)

=======(答案2)=======

while(a<1||a>50);

=========或=========

while(a>50||a<1);

=======(答案3)=======

for(i=1;i<=a;i++)

/*---------------------------------------------------- 【程序改错】第5题

------------------------------------------------------ 功能:求1到10的阶乘的和。

----------------------------------------------------*/ #include

main()

{

int i;

float s=0;

float fac(int n);

/**********FOUND**********/

for(i=1;i<10;i++)

/**********FOUND**********/

s=fac(i);

printf("%f\n",s);

}

float fac(int n)

{

/**********FOUND**********/

int y=1;

int i;

for(i=1 ;i<=n;i++)

y=y*i;

/**********FOUND**********/

return;

}

答案:

=======(答案1)=======

for(i=1;i<=10;i++)

=========或=========

for(i=1;10>=i;i++)

=========或=========

for(i=1;i<11;i++)

=========或=========

for(i=1;11>i;i++)

=======(答案2)=======

s= s + fac(i) ;

=========或=========

s+=fac(i);

=========或=========

s=fac(i)+s;

=======(答案3)=======

float y=1.0;

=========或=========

float y=1;

=======(答案4)=======

return y;

=========或=========

return(y);

=========或=========

return (y);

/*---------------------------------------------------- 【程序改错】第6题

------------------------------------------------------ 题目:下列给定程序中函数fun的功能是:用选择法对数组中的n个元素进行升序排列。

----------------------------------------------------*/ #include

#define N 20

void fun(int a[], int n)

{

int i, j, t, p;

for (j = 0 ;j < n-1 ;j++)

{

/***********FOUND***********/

p = j

for (i = j;i < n; i++)

if(a[i] < a[p])

/***********FOUND***********/

p = j;

t = a[p] ;

a[p] = a[j] ;

a[j] = t;

}

}

main()

{

int a[N]={9,6,8,3,-1},i, m = 5;

printf("排序前的数据:") ;

for(i = 0;i < m;i++)

printf("%d ",a[i]);

printf("\n");

fun(a,m);

printf("排序后的数据:") ;

for(i = 0;i < m;i++)

printf("%d ",a[i]);

printf("\n");

}

答案:

=======(答案1)=======

p=j ;

=======(答案2)=======

p=i;

/*---------------------------------------------------- 【程序改错】第7题

------------------------------------------------------ 功能:用起泡法对10个整数从小到大排序。

----------------------------------------------------*/ #include

/**********FOUND**********/

void sort(int x,int n)

{

int i,j,t;

for(i=0;i

/**********FOUND**********/

for(j=0;j

/**********FOUND**********/

if(x[i]>x[i+1])

{

t=x[j];

x[j]=x[j+1];

x[j+1]=t;

}

}

main()

{

int i,n,a[100];

printf("please input the length of the array:\n");

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

/**********FOUND**********/ sort(n,a);

printf("output the sorted array:\n");

for(i=0;i<=n-1;i++)

printf("%5d",a[i]);

printf("\n");

}

答案:

=======(答案1)=======

void sort(int *x,int n)

=========或=========

void sort(int x[],int n)

=======(答案2)=======

for(j=0;j< n -1 -i ;j++)

=========或=========

for(j=0; n -1 -i >j;j++)

=========或=========

for(j=0;j

=========或=========

for(j=0;n-( 1 + i )>j;j++)

=========或=========

for(j=0;j<= n -2 -i ;j++)

=======(答案3)=======

if(x[j]>x[ j + 1 ])

=========或=========

if(x[ j + 1]

=======(答案4)=======

sort(a,n);

/*---------------------------------------------------- 【程序改错】第8题

------------------------------------------------------ 功能:在一个一维整型数组中找出其中最大的数及其下标。

---------------------------------------------------*/ #include

#define N 10

/**********FOUND**********/

float fun(int *a,int *b,int n)

{

int *c,max=*a;

for(c=a+1;c

if(*c>max)

{

max=*c;

/**********FOUND**********/

b=c-a;

}

return max;

}

void main()

{

int a[N],i,max,p=0;

printf("please enter 10 integers:\n");

for(i=0;i

/**********FOUND**********/

get("%d",a[i]);

/**********FOUND**********/

m=fun(a,p,N);

printf("max=%d,position=%d",max,p);

}

答案:

=======(答案1)=======

int fun(int *a,int *b,int n)

=======(答案2)=======

*b=c-a;

=======(答案3)=======

scanf("%d",&a[i]);

=========或=========

scanf("%d", a + i );

=======(答案4)=======

max=fun(a,&p,N);

/*---------------------------------------------------- 【程序改错】第9题

------------------------------------------------------ 功能:判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。

----------------------------------------------------*/ #include

#include

#include

/**********FOUND**********/

void fun(char str, char ch )

{

while ( *str && *str != ch )

str++;

/**********FOUND**********/

if ( *str == ch )

{

str [ 0 ] = ch;

/**********FOUND**********/

str[1] = '0';

}

}

main( )

{

char s[81], c ;

printf( "\nPlease enter a string:\n" );

gets ( s );

printf ("\n Please enter the character to search : " );

c = getchar();

fun(s, c) ;

printf( "\nThe result is %s\n", s);

}

答案:

=======(答案1)=======

void fun(char *str, char ch )

=======(答案2)=======

if ( *str == '\0' )

=======(答案3)=======

str[1] = '\0';

/*---------------------------------------------------- 【程序改错】第10题

------------------------------------------------------ 功能:有一数组内放10个整数,要求找出最小数和它的下标, 然后把它和数组中最前面的元素即第一个数对换位置. ----------------------------------------------------*/ #include

main( )

{

int i,a[10],min,k=0; printf("\n please input array 10 elements\n");

for(i=0;i<10;i++)

/***********FOUND***********/

scanf("%d", a[i]);

for(i=0;i<10;i++)

printf("%d",a[i]);

min=a[0];

/***********FOUND***********/

for(i=3;i<10;i++)

/***********FOUND***********/

if(a[i]>min)

{

min=a[i];

k=i;

}

/***********FOUND***********/

a[k]=a[i];

a[0]=min;

printf("\n after eschange:\n");

for(i=0;i<10;i++)

printf("%d",a[i]);

printf("\nk=%d\nmin=%d\n",k,min);

}

答案:

=======(答案1)=======

scanf("%d",&a[i]);

=======(答案2)=======

for(i=1;i<10;i++)

=========或=========

for(i=0;i<10;i++)

=========或=========

for(i=1;i<=9;i++)

=========或=========

for(i=0;i<=9;i++)

=======(答案3)=======

if(a[i]

=======(答案4)=======

a[k]=a[0];

/*---------------------------------------------------- 【程序改错】第11题

------------------------------------------------------ 功能:判断m是否为素数,若是返回1,否则返回0。

----------------------------------------------------*/ #include

/**********FOUND**********/

void fun( int n)

{

int i,k=1;

if(m<=1) k=0;

/**********FOUND**********/

for(i=1;i

/**********FOUND**********/

if(m%i=0) k=0;

/**********FOUND**********/

return m;

}

void main()

{

int m,k=0;

for(m=1;m<100;m++)

if(fun(m)==1)

{

printf("%4d",m);k++;

if(k%5==0) printf("\n");

}

}

答案:

=======(答案1)=======

int fun( int m)

=========或=========

fun( int m)

=======(答案2)=======

for(i=2;i

=========或=========

for(i=2;m>i;i++)

=========或=========

for(i=2;i<=m-1;i++)

=========或=========

for(i=2;m-1>=i;i++)

=======(答案3)=======

if( m%i == 0 ) k=0;

=======(答案4)=======

return k;

/*---------------------------------------------------- 【程序改错】第12题

------------------------------------------------------ 题目:下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。

例如:给字符串s输入:AAaaBBbb123CCcccd,则应输出:upper =6,lower=8。

----------------------------------------------------*/ #include

/***********FOUND***********/

void fun ( char *s, int a, int b )

{

while ( *s )

{

if ( *s >= 'A' && *s <= 'Z' )

/***********FOUND***********/

*a=a+1 ;

if ( *s >= 'a' && *s <= 'z' )

/***********FOUND***********/

*b=b+1;

s++;

}

}

main( )

{

char s[100]; int upper = 0, lower = 0 ; printf( "\nPlease a string : " );

gets ( s );

fun ( s, & upper, &lower );

printf( "\n upper = %d lower = %d\n", upper, lower );

}

答案:

=======(答案1)=======

void fun ( char *s, int *a, int *b ) =======(答案2)=======

*a=*a+1;

=======(答案3)=======

*b=*b+1;

/*---------------------------------------------------- 【程序改错】第13题

------------------------------------------------------ 功能:求两个形参的乘积和商数,并通过形参返回调用程序。例如:输入:61.82 和 12.65,输出为:c = 782.023000

d = 4.886957

----------------------------------------------------*/ #include

#include

/**********FOUND**********/

void fun ( double a, b, double *x, double *y )

{

/**********FOUND**********/

x = a * b;

/**********FOUND**********/

y = a / b;

}

main ( )

{

double a, b, c, d;

printf ( "Enter a , b : ");

scanf ( "%lf%lf", &a, &b );

fun ( a , b, &c, &d ) ;

printf (" c = %f d = %f\n ", c, d );

}

答案:

=======(答案1)=======

void fun ( double a, double b, double *x, double *y ) =======(答案2)=======

*x = a * b;

=======(答案3)=======

*y = a / b;

/*---------------------------------------------------- 【程序改错】第14题

------------------------------------------------------ 功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。max代表最高分,min

代表最低分,avg代表平均分。

----------------------------------------------------*/ #include

main( ){

int i;

/***********FOUND***********/

float a[8],min,max,avg;

printf("input 10 score:");

for(i=0;i<=9;i++) {

printf("input a score of student:");

/***********FOUND***********/

scanf("%f",a);

}

max=min=avg=a[0];

for(i=1;i<=9;i++) {

/***********FOUND***********/

if(min

min=a[i];

if(max

max=a[i];

avg=avg+a[i];

}

avg=avg/10;

printf("max:%f\nmin:%f\navg:%f\n",max,min,avg);

}

答案:

=======(答案1)=======

float a[10] min max avg;

=======(答案2)=======

scanf("%f",&a[i]);

=========或=========

scanf("%f",a+i);

=======(答案3)=======

if (min>a[i])

=========或=========

if (a[i]

/*---------------------------------------------------- 【程序改错】第15题

------------------------------------------------------ 功能:将6个数按输入时顺序的逆序进行排列.

----------------------------------------------------*/ #include

sort(char *p,int m)

{

int i;

char change,*p1,*p2;

for(i=0;i

{

/***********FOUND***********/

*p1=p+i; *p2=p+(m-1-i);

change=*p1;

*p1=*p2;

*p2=change;

}

}

main( )

{

int i;

/***********FOUND***********/

char p,num[6];

for(i=0;i<=5;i++)

/***********FOUND***********/

scanf("%d",num[i]);

p=&num[0];

/***********FOUND***********/

sort(*p,6);

for(i=0;i<=5;i++)

printf("%d",num[i]);

}

答案:

=======(答案1)=======

p1=p+i; p2=p+(m-1-i);

=======(答案2)=======

char *p,num[6];

=======(答案3)=======

scanf("%d",&num[i]); =======(答案4)=======

sort(p,6);

/*------------------------------------------------

【程序改错】第16题

--------------------------------------------------

功能:编写函数fun,求两个整数的最小公倍数,然后用主函数main()调用这个函数并输出结果,两个整数由

键盘输入。

------------------------------------------------*/

#include

int fun(int m,int n)

{

int i;

/**********FOUND**********/

if (m=n)

{

i=m;

m=n;

n=i;

}

for(i=m;i<=m*n;i+=m)

/**********FOUND**********/

if(i%n==1)

return(i);

return 0;

}

main()

{

unsigned int m,n,q;

printf("m,n=");

scanf("%d,%d",&m,&n);

/**********FOUND**********/

q==fun(m,n);

printf("p(%d,%d)=%d",m,n,q);

}

答案:

=======(答案1)=======

if (m

======(答案2)=======

if(i%n==0)

=======(答案3)=======

q=fun(m,n);

/*---------------------------------------------------- 【程序改错】第17题

------------------------------------------------------ 功能:请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。

例如:原来的字符串为CEAedcab,排序后输出为edcbaECA。

----------------------------------------------------*/ #include

#include

#include

void fun(char *s,int num)

{

/**********FOUND**********/

int i;j;

char t;

for(i=0;i

/**********FOUND**********/

for(j=i;j

/**********FOUND**********/

if(s[i]>s[j])

{

t=s[i];

s[i]=s[j];

s[j]=t;

}

}

main()

{

char s[10];

printf("输入8个字符的字符串:");

gets(s);

fun(s,8);

printf("\n%s",s);

}

答案:

=======(答案1)=======

int i,j;

=======(答案2)=======

for(j=i+1;j

=======(答案3)=======

if(s[i]

/*---------------------------------------------------- 【程序改错】第18题

------------------------------------------------------ 功能:求两数平方根之和,作为函数值返回。

例如:输入12和20,输出结果是:y = 7.936238。

----------------------------------------------------*/ #include

#include

#include

/**********FOUND**********/

double fun (double *a, *b)

{

double c;

/**********FOUND**********/

c = sqr(a)+sqr(b) ;

/**********FOUND**********/

return a;

}

main ( )

{

double a, b, y;

printf ( "Enter a & b : ");

scanf ("%lf%lf", &a, &b );

y = fun (&a, &b);

printf ("y = %f \n", y );

}

答案:

=======(答案1)=======

double fun (double *a, double *b)

=======(答案2)=======

c = sqrt(*a)+sqrt(*b) ;

=========或========= c = sqrt(*b)+sqrt(*a) ;

=======(答案3)=======

return c;

=========或=========

return(c);

=========或=========

return sqrt(*b)+sqrt(*a);

=========或=========

return sqrt(*a)+sqrt(*b);

/*---------------------------------------------------- 【程序改错】第19题

------------------------------------------------------ 功能:实现两个字符串的连接。

例如:输入dfdfqe和12345时,则输出dfdfqe12345.

----------------------------------------------------*/ #include

main()

{

char s1[80],s2[80];

void scat(char s1[],char s2[]);

gets(s1);

gets(s2);

scat(s1,s2);

puts(s1);

}

void scat (char s1[],char s2[])

{

int i=0,j=0;

/**********FOUND**********/

while(s1[i]= ='\0')

i++;

/**********FOUND**********/

while(s2[j]= ='\0')

{

/**********FOUND**********/

s2[j]=s1[i];

i++;

j++;

}

/**********FOUND**********/

s2[j]='\0';

}

答案:

=======(答案1)=======

while( s1[i] != '\0' )

=========或=========

while(s1[i])

=========或=========

while( s1[i] != 0 )

=======(答案2)=======

while( s2[j] != '\0' )

=========或=========

while(s2[j])

=========或=========

while( s2[j] != 0 )

=======(答案3)=======

s1[i]=s2[j];

=======(答案4)=======

s1[i]='\0';

=========或=========

*(s1+i)='\0';

=========或=========

s1[i]=0;

/*---------------------------------------------------- 【程序改错】第20题

------------------------------------------------------ 功能:将一个字符串中的大写字母转换成小写字母。

例如:输入aSdFG输出为asdfg。

----------------------------------------------------*/ #include

/**********FOUND**********/

bool fun(char *c)

{

if(*c<='Z'&&*c>='A')*c-='A'-'a';

/**********FOUND**********/

fun= c;

}

main()

{

/**********FOUND**********/

char s[81],p=s;

gets(s);

while(*p)

{

*p=fun(p);

/**********FOUND**********/

puts(*p);

p++;

}

putchar('\n');

}

答案:

=======(答案1)=======

char fun(char *c)

=======(答案2)=======

return *c;

=========或=========

return (*c);

=========或=========

return(*c);

=======(答案3)=======

char s[81],*p=s;

=======(答案4)=======

putchar(*p);

=========或=========

printf("%c",*p);

/*---------------------------------------------------- 【程序改错】第21题

------------------------------------------------------ 功能:求100以内(包括100)的偶数之和.

----------------------------------------------------*/ #include

main()

{

/**********FOUND**********/

int i,sum=1;

/**********FOUND**********/

for(i=2;i<=100;i+=1)

sum+=i; /**********FOUND**********/

printf("Sum=%d \n";sum);

}

答案:

=======(答案1)=======

int i,sum=0;

=======(答案2)=======

for(i=2;i<=100;i+=2)

=======(答案3)=======

printf("Sum=%d \n",sum);

/*---------------------------------------------------- 【程序改错】第22题

------------------------------------------------------ 功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。

例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输出平均成绩为77.9,最低高分为

56,得最低分的人数为1人。

----------------------------------------------------*/ #include

float Min=0;

int J=0;

float fun(float array[],int n)

{

int i;float sum=0,ave;

Min=array[0];

for(i=0;i

{

if(Min>array [i]) Min=array [i];

/**********FOUND**********/

sum=+array [i];

}

/**********FOUND**********/

ave=sum\n;

for(i=0;i

/**********FOUND**********/

if(array [i]=Min) J++;

return(ave);

}

main( )

{

float a[10],ave;

int i=0;

for(i=0;i<10;i++)

scanf("%f",&a[i]);

ave=fun(a,10);

printf("ave=%f\n",ave);

printf("min=%f\n",Min);

printf("Total:%d\n",J);

}

答案:

=======(答案1)=======

sum+=array[i];

=========或=========

sum=sum+array [i];

=======(答案2)=======

ave=sum/n;

=======(答案3)=======

if(array [i]==Min) J++;

/*---------------------------------------------------- 【程序改错】第23题

------------------------------------------------------ 功能:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。

例如:当s所指的字符串的内容为"ABCD"时,t所指数组中的内容为"DCBAABCD"。

----------------------------------------------------*/ #include

#include

#include

/**********FOUND**********/

void fun (char s, char t)

{

int i, d;

/**********FOUND**********/

d = len(s);

/**********FOUND**********/

for (i = 1; i

t[i] = s[d - 1 - i ];

for (i = 0; i

t[ d + i ] = s[i];

/**********FOUND**********/

t[2*d] = '/0';

}

main()

{

char s[100], t[100];

printf("\nPlease enter string S:");

scanf("%s", s);

fun(s, t);

printf("\nThe result is: %s\n", t);

}

答案:

=======(答案1)=======

void fun (char s[],char t[])

=========或=========

void fun (char *s,char *t)

=======(答案2)=======

d = strlen(s);

=======(答案3)=======

for (i = 0; i

=========或=========

for (i = 0; d>i; i++)

=========或=========

for (i = 0; i<=d-1; i++)

=========或=========

for (i = 0; d-1>=i; i++)

=======(答案4)=======

t[ 2 * d ] = '\0';

=========或=========

t[ i + d ] = '\0';

=========或=========

t[ i + d ] =NULL;

=========或=========

t[ 2 * d ] = NULL;

=========或=========

t[ 2 * d ] = 0;

=========或=========

t[ i + d ] = 0; /*---------------------------------------------------- 【程序改错】第24题

------------------------------------------------------ 功能:实现3行3列矩阵的转置,即行列互换。

----------------------------------------------------*/ #include

fun(int a[3][3],int n)

{

int i,j,t;

for(i=0;i

for(j=0;j

/**********FOUND**********/

scanf("%d",a[i][j]);

for(i=0;i

{

for(j=0;j

printf("%4d",a[i][j]);

printf("\n");

}

for(i=0;i

/**********FOUND**********/

for(j=0;j

{

/**********FOUND**********/

a[i][j]=t;

a[i][j]=a[j][i];

/**********FOUND**********/

t=a[j][i];

}

for(i=0;i

{

for(j=0;j

printf("%4d",a[i][j]);

printf("\n");

}

}

main()

{

int b[3][3];

fun(b,3);

}

答案:

=======(答案1)=======

scanf("%d",&a[i][j]);

=========或=========

scanf("%d",(*(a+i)+j));

=======(答案2)=======

for(j=0;j

=========或=========

for(j=0;i>j;j++)

=========或=========

for(j=0;j<=i;j++)

=========或=========

for(j=0;i>=j;j++)

=========或=========

for(j=i+1;j

=========或=========

for(j=i;j

=========或=========

for(j=0;j<=i-1;j++)

=========或=========

for(j=0;i-1>=j;j++)

=========或========= for(j=i+1;j<=n-1;j++) =========或========= for(j=i;j<=n-i;j++) =======(答案3)======= t=a[i][j]; =======(答案4)======= a[j][i]=t; /*---------------------------------------------------- 【程序改错】第25题 ------------------------------------------------------ 功能:以下程序输出前六行杨辉三角形,既 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ………… ………… ----------------------------------------------------*/ #include main( ) { static int a[6][6]; int i,j,k; /***********FOUND***********/ for(i=1;i<=6;i++) { for(k=0;k<10-2*i;k++) printf(" "); for(j=0;j<=i;j++) { /***********FOUND***********/ if(j==0&&j==i) a[i][j]=1; else /***********FOUND***********/ a[i][j]=a[i-1][j-1]+a[i][j-1]; printf(" "); printf("%-3d",a[i][j]); } /***********FOUND***********/ printf("\t"); } } 答案: =======(答案1)======= for(i=0;i<6;i++) =========或========= for(i=0;i<=5;i++) =======(答案2)======= if(j == 0 || j == i) =======(答案3)======= a[i][j]=a[i-1][j]+a[i-1][j-1]; =========或========= a[i][j]=a[i-1][j-1]+a[i-1][j]; =======(答案4)======= printf("\n"); /*---------------------------------------------------- 【程序改错】第26题 ------------------------------------------------------ 功能:输出Fabonacci 数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。 ----------------------------------------------------*/ #include fun() { int i; float f1=1,f2=1,f3; /**********FOUND**********/ printf("%8d",f1); /**********FOUND**********/ for(i=1;i<=20;i++) { f3=f1+f2; /**********FOUND**********/ f2=f1; /**********FOUND**********/ f3=f2; printf("%8.0f",f1); } printf("\n"); } main() { fun(); } 答案: =======(答案1)======= printf("%8.0f",f1); =========或========= printf("%f",f1); =========或========= printf("%8f",f1); =======(答案2)======= for(i=1;i<20;i++) =========或========= for(i=1;20>i;i++) =========或========= for(i=2;i<=20;i++) =========或========= for(i=2;20>=i;i++) =========或========= for(i=1;i<=19;i++) =========或========= for(i=1;19>=i;i++) =======(答案3)======= f1=f2; =======(答案4)======= f2=f3; /*---------------------------------------------------- 【程序改错】第27题 ------------------------------------------------------ 题目:下列给定程序中,函数fun 的功能是:求出数组中的最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和 a[1] 中的数对调。 ----------------------------------------------------*/ #include #include #define N 20

/***********FOUND***********/

void fun(int a,int n);

{

int i, m, t, k;

for(i=0; i

{

/***********FOUND***********/

m=0;

for(k=i+1; k

if(a[k]>a[m])

m=k;

t=a[i];

a[i]=a[m];

a[m]=t;

}

}

main()

{

int b[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;

system("CLS");

for(i=0; i

printf("%d ",b[i]);

printf("\n");

fun(b,n);

for(i=0; i

printf("%d ", b[i]);

printf("\n");

}

答案:

=======(答案1)=======

void fun(int *a, int n)

=======(答案2)=======

m=i;

/*---------------------------------------------------- 【程序改错】第28题

------------------------------------------------------ 功能:以下程序把两个数按由大到小的顺序输出来.

----------------------------------------------------*/ #include

/***********FOUND***********/

swap( int *p1,*p2)

{

int p;

p=*p1;

*p1=*p2;

*p2=p;

}

main( )

{

int a,b, *p,*q;

printf("input a,b:");

/***********FOUND***********/

scanf("%d%d",a,b);

p=&a;

q=&b;

if(a

swap(p,q);

printf("a=%d,b=%d\n",a,b);

/***********FOUND***********/

printf("max=%d,min=%d\n",p,q); }

答案:

=======(答案1)=======

swap( int *p1,int *p2)

=========或=========

void swap( int *p1,int *p2)

=======(答案2)=======

scanf("%d%d",&a,&b);

=======(答案3)=======

printf("max=%d,min=%d\n",*p,*q);

=========或=========

printf("max=%d,min=%d\n",a,b);

/*---------------------------------------------------- 【程序改错】第29题

------------------------------------------------------ 功能:编写函数fun计算下列分段函数的值:

x*x+x x<0且x≠-3

f(x)= x*x+5x 0≤x<10且x≠2及x≠3

x*x+x-1 其它

----------------------------------------------------*/ #include

double fun(float x)

{

/**********FOUND**********/

double y

/**********FOUND**********/

if (x<0 ||x!=-3.0)

y=x*x+x;

else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)

y=x*x+5*x;

else

y=x*x+x-1;

/**********FOUND**********/

return x;

}

main()

{

double f;

float x;

printf("input x=");

scanf("%f",&x);

f=fun(x);

printf("x=%f,f(x)=%f\n",x,f);

}

答案:

=======(答案1)=======

float y;

=======(答案2)=======

if (x<0 && x!=-3.0)

=======(答案3)=======

return y;

/*---------------------------------------------------- 【程序改错】第30题

------------------------------------------------------ 题目:下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。

例如:若给a输入字符串:ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:ABC DEF GHI JK。

----------------------------------------------------*/ #include

void fun(char *p, char *b)

{

int i, k=0;

while(*p)

{

i=1;

while( i<=3 && *p )

{

/***********FOUND***********/

b[k]=p;

k++; p++; i++;

}

if(*p)

{

/***********FOUND***********/

b[k++]=" ";

} }

b[k]='\0';

}

main()

{

char a[80],b[80];

printf("Enter a string: ");

gets(a);

printf("The original string: ");

puts(a);

fun(a,b);

printf("\nThe string after insert space: "); puts(b); printf("\n\n");

}

答案:

=======(答案1)=======

b[k]=*p;

=======(答案2)=======

b[k]=' ';k++;

最新二级C语言考试题库及答案程序改错专项练习 精华版

1 / 4 程序改错题(共15题) 1、在考生文件夹下,给定程序MODI.C 的功能是: 求一维数组a 中所有元素的平均值,结果保留两位小数。 例如,当一维数组a 中的元素为:10,4,2,7,3,12,5,34,5,9 程序的输出应为:The aver is: 9.10 。 #include #include void main() { int a[10]={10,4,2,7,3,12,5,34,5,9},i; int aver,s; s = 0; for ( i=1; i<10; i++) s += a[i]; aver = s / i; printf("The aver is: %.2f\n", aver); } 2、在考生文件夹下,给定程序MODI.C 的功能是: 求二维数组a 中的最大值和最小值。 例如,当二维数组a 中的元素为: 4 4 34 37 3 12 5 6 5 程序的输出应为:The max is: 37 The min is: 3 。 #include #include void main() { int a[3][3]={4,4,34,37,3,12,5,6,5},i,j,max,min; max = min = a[0][0]; for ( i=0; i<3; i++) for ( j=1; j<3; j++) { if ( max < a[i][j] ) max = a[i][j]; /************found************/ if (min < a[i][j]) min = a[i][j]; } printf("The max is: %d\n", max); printf("The min is: %d\n", min); } 3、在考生文件夹下,给定程序MODI.C 的功能是: 求一维数组a 中的最大元素及其下标。 例如,当一维数组a 中的元素为:1,4,2,7,3,12,5,34,5,9, 程序的输出应为:The max is: 34,pos is: 7 。 #include #include void main() { int a[10]={1,4,2,7,3,12,5,34,5,9},i,max,pos; max = a[0]; pos = 0; for ( i=1; i<10; i++) /************found************/ if (max > a[i]) { max = a[i]; /************found************/ i = pos; } printf("The max is: %d ,pos is: %d\n", max , pos); } 4、在考生文件夹下,给定程序MODI.C 的功能是: 求二维数组a 中的最小值。 例如,当二维数组a 中的元素为: 4 2 34 7 3 12 5 6 5 程序的输出应为:The min is: 2 。 #include #include void main() { int a[3][3]={4,2,34,7,3,12,5,6,5},i,j,min; min = a[0][0]; for ( i=1; i<3; i++) for ( j=0; j<3; j++) if (min > a[i][j]) { /************found************/ min == a[i][j]; } printf("The min is: %d\n", min); }

程序改错题

程序改错题 (注意:每小题只有1行有错误,答题时请指出错误位置并给出改正结果)1. 输出计算结果。 main() { int a=b=10; a+=b+5; b*=a+=10; printf("%d%d\n",a,b); } 2. 输出计算结果。 #include main() { float x,y; scanf("%f",x); y=x*56/97; printf("%f\n",y); } 3. 输出计算结果。 main() { int x=2,y=3; z=(x++,y++); printf("%d",z); } 4. 输出运行结果。 main() { float a,b,c,v; a=2.0;b=3.0;c=4.0; v=a*b*c; printf("%f\n" ,v) } 5. 输出运行结果。 #include “stdio.h” main(){ float r,s; r=5.0; s=3.14159*r*r; printf("%d\n",s); }

输出程序运行结果。 #include main() { char ch; scanf("%c",ch); printf("%d\n",ch); } 7. 输入一整数判断是否能被13整除。main() { int i; scanf(“%d”,i); if(i%13==0) printf("yes"); else printf("no"); } 8. 输出程序运行结果。 main() { int a,b; float x,y,z; scanf("%f%f%f",&x,&y,&z); a=b=x+y+z; c=a+b; printf("%d%d%d",a,b,c); } 9. 输出程序运行结果。 #include main() { float x,y; scanf("%f",&x); y=2x+10; printf("%f\n",y); } 10. 输出程序运行结果。 main() { int a,b='B'; scanf("%d",a); printf("%c,",b++); printf("%d\n",b-a); }

程序改错基本题

程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1?2?3?4? ?n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(ia[j]) { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) } *3. 求3+4 int a=3,b=4; main() { int a,c; c=a+b; printf(“c=%d”); } 4.用一个函数求两个数之和。 sum(x,y) { float z; z=x+y; return; }

main() { float a,b; int c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); } 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 swap(int *p1,*p2) { int *p; *p=*p1;*p1=*p2;*p2=*p; } main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; if(a

2012计算机国二C语言等级考试题库(内部资料)程序改错

1.给定程序MODI1.C中函数fun的功能是:根据以下公式求π值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=30140578.。(1)“t=0;”改为“t=1;”。(2)改成“return(2*s);” 2.给定程序MODI1.C中函数fun的功能是:将长整型中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为:7654321时,t中的数为:7531。(1)“void fun (long s, long *t)”(2)“sl = sl*10;” 3.给定程序MODI1.C中函数fun的功能是:用下面的公式求π的近似值,知道最后一项的近似值小于指定数(参数num)为止:例如程序0.0001,则程序输出 3.1414。(1) “while(t>=num)”改为 “while(fabs(t)>=num) ”。(2)“t=s%n;”改为 “t=s/n;”。 4.给定程序MODI1.C中函 数fun的功能是:把主函 数中输入的三个数,最大 的放在a中,最小的放在 c中,中间的放在b中。 例如a=55.0 b=34.0 c=12.0。(1)“float k;”。 (2)“if(*a<*c)”。 5. 给定程序MODI1.C中 函数fun的功能是:为一 个偶数寻找两个素数,这 两个素数之和等于该偶 数,并将这两个素数通过 形参指针传回主函数。(1) “y=1;”。(2)“d=a-i;”。 6. 给定程序MODI1.C中 函数fun的功能是:由形 参给定n个实数,输出平 均值以上(含平均值)的 实数个数。所的平均值为: 195.838745,在平均值以 上的实数个数应为:5。(1) “int j, c=0; double xa=0.0;”。(2)“if (x[j]>=xa)”。 7.例如:当s中的数为: 7654321时,t中的数为: 7531。(1)“*t=0;”(2) “if(d%2!=0)” 8.函数功能是:求出 以下分数序列的前n项 和。 2/1,3/2,5/3,8/5/13/ 8,21/13,…...。和值 通过函数值返回到 main函数。例如,n=5, 则应输出:8.391667。 (1)“fun(int n)”改为 “double fun(int n)”。 (2)“b+=c;”改为“b=c;”。 9.函数fun的功能是: 判断一个整数是否是 素数,若是返回1,否 则返回0。(1)“k++” 改为“k++;”(2) “if(m=k)”改为 “if(m==k)” 10.给定程序MODI1.C 中函数fun的功能是: 从整数1到55之间,选 出能被3整除、且有一 位上的数是5的那些 事,并且把这些数放 在b所指的数组中,这 些数作为函数值返回。 规定,函数中a1放个 位数,a2放十位数。 (1)“a2=k/10;”。(2) “return i;”。 11.给定程序MODI1.C 中函数fun的功能是: 计算小于形参k的最大 的10个能被13或17整 除的自然数之和。K的 值由主函数传入,若K 的值为500.则主函数 为4622。(1) “if((k%13==0)||(k%17 ==0))”。(2)“______” 填“}”。 12.已知一个数列从第 0项开始的前三项分别 是0、0、1以后的各项 都是它相邻的前三项 之和。给定程序 MODI1.C中函数fun的 功能是:计算并输出该 数列前n项的平方根之 和。n的值通过形参传 入。(1)“double fun(int n)”。(2)“return sum;”。 13.函数fun的功能是: 根据整形形参m的值: 计算如下公式的 值……例如:若m中的 值为5,则应输出: 0.536389。(1) “for(i=2; i<=m; i++)”(2) “y-=1.0/(i*i);”。 14.函数的功能是:将 字符串中的字符按逆 序输出,但不改变字符 串中的内容。例如字符 串abcd,则应输出dcba。 (1)“void fun(char *a)”。(2)“printf("%c", *a);”。 15.函数fun的功能是:求 三个数的最小公倍数。 X1=15 x2=11 x3=2(1) 改成“int fun(int x, int y, int z )”。(2)return j 16.函数fun的功能是:根 据整型形参m计算如下 公式的值。若主函数中输 入5,则应输出-0.283333。 (1)“t=t-1.0/i;”。 (2)填空“return t;” 17. 例如,若输入:edcba, 则应输出:abcde。(1) “for( i=strlen( t )-1; i; i- - )” (2)“if(t[j]>t[j+1])” 18.函数fun的功能是: 根据形参m的值 (2<=m<=9),在m行m 列的二维数组中存放 如下所示规律的数据, 由main函数输出。(1) “void fun(int a[][M], int m)”。(2) “a[j][k]=(k+1)*(j+1);”。 19.函数fun的功能是: 先从键盘上输入一个3 行3列矩阵的各个元素

C语言程序改错题

第1题【程序改错】 欧阳学文 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的 字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为: “EDCBAABCDE”。 */ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; sl = strlen(s); for (i=0; i

/**********FOUND**********/ t[i] = s[sli]; for (i=0; i

第2题【程序改错】 功能:求出以下分数序列的前n项之和。和值通过函数值返回main 函数。 2/1+3/2+5/3+8/5+13/8+21/13 …… 例如:若n = 5,则应输出:8.391667。 */ #include #include /**********FOUND**********/ fun ( int n ) { int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /**********FOUND**********/ s = (double)a / b;

计算机程序改错题,及答案

11 *程序名:TEST.prg *检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的 *学号,姓名,性别,平均成绩,最低分和选课门数,并将结果存储到表NEW_TEST中. *以下程序有三处错误,请改正 OPEN DA TABASE SDB SELECT STUDENT.学号,姓名,性别,A VG(成绩) 平均成绩,MIN(成绩) 最低分,COUNT(*) 选课门数; FROM STUDENT,SC; WHere STUDENT.学号= SC.学号AND 成绩>= 70 ; &&**********Error********** GROUP BY STUDENT.学号HA VING count(课程号) >= 3; &&**********Error********** inTO table NEW_TEST &&**********Error********** CLOSE ALL 9 *程序名:dbtest3.prg *定义一个视图VS1, *检索选课门数是3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系编号, *并按平均成绩降序排序. *以下程序有三处错误,请改正 SET TALK OFF SET SAFETY OFF open DATABASE SDB &&****Error***修改本行的语法错误,不许注释掉本行或删除本行 CREATE VIEW VS1 SELECT STUDENT2.学号, 姓名, A VG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数, 院系编号; FROM STUDENT2, sc; &&*************Error************* WHERE STUDENT2.学号= SC.学号; GROUP BY SC.学号HA VING COUNT(课程号) > 3; ORDER BY 平均成绩desc &&*************Error************* CLOSE DATABASE RETURN i=2 create table four(结果I) do while i<=1000 if i%3=0 insert into four values(i) &&错误语句请修改 endif

C语言程序改错基本题库电子版本

C语言程序改错基本 题库

北京石油化工学院 12级复习题 程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1234n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(ia[j]) { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) } *3. 求 3+4 int a=3,b=4;

main() { int a,c; c=a+b; printf(“c=%d”); } 4.用一个函数求两个数之和。 sum(x,y) { float z; z=x+y; return; } main() { float a,b; int c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); } 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 swap(int *p1,*p2) { int *p; *p=*p1;*p1=*p2;*p2=*p; } main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; if(a

VB程序设计例题-程序改错程序填空程序设计

'以下程序段用于输出杨辉三角:结果样式如图1 ' Private Sub Form_Click() Const n = 10 Dim arr(n, n) As Integer For I = 1 To n arr(I, I) = 1 '**********SPACE********** 【arr(I, 1) = 1】 Next I For I = 3 To n For j = 2 To I - 1 '**********SPACE********** arr(i, j) =arr(i-1,j-1)+arr(i-1,j) Next j Next I For I = 1 To n For j = 1 To I '**********SPACE********** 【print arr(I,j)】 Next j Print Next I End Sub Option Explicit '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目:用自定义函数的方法求sum(x),求当-1≤x≤1时,' sum(x)=x/2!+x^2/3!+x^3/4!+……+x^n/(n+1)!, ' 当x〉1或x〈-1时,函数值为0。当n〈=0时,输入数' 据错误。X、N都是由用户输入。 '------------------------------------------------ '注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim s As Single Dim n As Integer, x As Single, k As Integer n = Val(InputBox("Please input a integer value:"))

c语言程序设计第五版习题答案

c语言程序设计第五版习 题答案 Prepared on 24 November 2020

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、dowhile语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { inta1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main()

{ inta1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* IloveCprograms! ************************* 【分析与提示】 ①要有文件包含语句#include<>。C语言中没有数据的输入、输出等功 能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf 等来实现的。这些函数的说明都包括在文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干 条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include<> main() { printf("************************\n"); printf("IloveCprograms!\n"); printf("************************\n"); } 第2章数据类型及其运算一.简答题 1.C语言中的数据类型主要有哪几类 【解答】短整型(shortint) 整型整型(int) 长整型(longint) 基本类型字符型(char)(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型

计算机基础C++程序改错复习题

? 第1题(分)题号:400 难度:中第2章/*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:编写函数fun求20以内所有5的倍数之积。 ------------------------------------------------------*/ 《 #define N 20 #include <> int fun(int m) { /**********FOUND**********/ int s=0,i; ; for(i=1;i

s*=i; ) 第2题(分)题号:584 难度:中第1章/*-------------------------------------------------------【程序改错】 --------------------------------------------------------- 下列给定程序中函数fun()的功能是计算1/n!的值。 & 例如:给n输入5,则输出。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行, 也不得更改程序的结构。 , 试题程序: -------------------------------------------------------*/ #include <> #include <> /***********FOUND***********/ ~ int fun(int n) { double result =; if(n==0) return ; while(n>1 && n <170) /***********FOUND***********/ result *=n++ ; … result=1/result; return result; } void main() {

C语言程序改错题

第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include #include /**********FOUND**********/ double fun( r) double fun(double r) { double s; /**********FOUND**********/ s=1/2*3.14159* r * r; s=1.0/2*3.14159*r*r; /**********FOUND**********/ return r; return s; } main() { float x;

printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; int sl,i; sl = strlen(s); for (i=0; i

程序改错2

【程序改错-1】 题目:在一个一维整型数组中找出其中最大的数及其下标。程序中共有4条错误语句,请改正错误。『错误答案』: 1 int fun(int *a,int *b,int n) 2 *b=c-a;} 3 scanf("%d",&a[i]); 4 max=fun(a,&p,N); 【程序改错-2】 题目:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出数组元素。程序中共有4条错误语句,请改正错误。 『错误答案』: 1 scanf("%d",p++); 2 max=p; 3 if(★max★==★arr ★) 4 for(i=0;ii;i++) 或 for(p=arr;pj;j++) 或 for(j=0;jj;j++) 3 if(x[j]>x[★j★+★1★]) 或 if(x[★j★+★1]★ =0;i--) 或 for(i=N-2;0<=i;i--) 3 a[★i★+★1 ★]=a[i]; 4 break;} 『Turbo C——程序改错』【程序改错-5】 题目:将一个字符串中第m个字符开始的全部字符复制成为另一 个字符串。 程序中共有4条错误语句,请改正错误。 『错误答案』: 1 { char *p1,*p2; 或{ char *p2,*p1; 2 p1= ★str1★+★m★ -1; 或 p1=-1+★str1★+★m★; 3 while(*p1) 4 strcopy(str1,str2,m); 【程序改错-6】 题目:以下程序的功能是求如下表达式:请改正程序中的错误,使程序能得到正确的运行结果。 『错误答案』: 1 scanf("%d",&n); 2 float fun(int n) 3 for(i=1;i<=n;i++) 或 for(i=1;n>=i;i++) 或 for(i=1;ii;i++) 4 s+=1.0/t 或 s=★s★+★1.0★/(float)t; 或 s=★s★ +★1.0★/t; 或 s+=1.0/(float)t 【程序改错-7】 题目:下面程序的功能是利用二维数组输出如图所示的图形。请改正程序中的错误,使程序能得到正确的运行结果。『错误答案』: 1 #define N 7 2 a[i][j]=' '; 3 z=z-1; 或 z--; 或 z=-1+z; 或 z=(n+1)/2-1; 或 z=(1+n)/2-1 4 printf("%c",a[i][j]); 【程序改错-8】 题目:输入一行英文文本,将每一 个单词的第一个字母变成大『错误 答案』: 1 fun(char *p) 或 fun(char p[]) 2 while(*p!='\0') 或 while(*p) 3 k=1;} 4 p++; 或 p=1+p; 或 ++p; 或 p=p+1; 【程序改错-9】 题目:将一个字符串中的大写字母 转换成小写字母。 例如:输入aSdFG输出为 asdfg。 『错误答案』: 1 char fun(char *c) 2 return *c; 或 return (*c); 或 return(*c); 3 { char s[81],*p=s; 4 putchar(*p); 或 printf("%c",*p); 【程序改错-10】 题目:将若干学生的档案存放在一 个文件中,并显示其内容。错误答 案』: 1 { struct student *p 2 FILE *fp; 3 for(p=stu;p<★stu★ +★3★;p++) 或 for(p=stu;★ stu★+★3★>p;p++) 或 for(p=stu;p<=★stu★+★2 ★;p++) 或 for(p=stu;★stu★+ ★2★>=p;p++) 4 printf("%4d %-10s %4d\n",(*p) .num ,p->name,(*p).age); 【程序改错-11】 题目:下列给定程序中,函数fun 的功能是:判断m是否为素数,若 是返回1,否则返回0。主函数的 功能是:按每行5个输出1-100 之间的全部素数。『错误答案』: 1 int fun( int m) 或 fun( int m) 2 for(i=2;ii;i++) 或 for(i=2;i<=m-1;i++) 或 for(i=2;m-1=>i;i++) 3 if(★m%i★==★0★) k=0; 4 return k; 或 return(k); 【程序改错-12】 题目:函数fun的功能是:用下面 的和式求圆周率的近似值。直 到最后一项的绝对值小于 等于0.0001。 错误答案』: 1 #include "math.h" 2 float s=0,t=1,p=1; 或 float s=0,p=1,t=1; 或 float p=1,s=0,t=1; 或 float p=1,t=1,s=0; 或 float t=1,p=1,s=0; 或 float t=1,s=0,p=1; 3 while(fabs(t)>1e-4) 或 while(0.00010.0001) 4 printf("pi=%f\n",★ s★*★4★); 【程序改错-13】 题目:下列给定程序中,函数fun 的功能是:求1到10的阶乘的 和。主函数和fun函数中, 各有两个错误,\『错误答案』: 1 for(i=1;i<=10;i++) 或 for(i=1;10>=i;i++) 或 for(i=1;i<11;i++) 或 for(i=1;11>i;i++) 2 s=★s★+★fac(i)★; 或 s+=fac(i); 3 float y=1.0; 或 float y=1; 4 return y; 或 return(y); 或 return (y); 【程序改错-14】 题目:函数fun的功能是:求1到 20的阶乘的和。请改正程序中的错 误,使它能得出正确的结果。 『错误答案』: 1 t=1; 或 t=1.0; 2 t=★t★*★j★; 或 t*=j; 3 s=★s★+★t★; 或 s+=t; 4 printf("jiecheng=%f\n",s); 【程序改错-15】 题目:函数fun的功能是:输出 Fabonacci数列的前20项,要求变 量类型定义成浮点型,输出 时只输出整数部分,输出项 数不得多于或少于20。 『错误答案』: 1 printf("%8.0f",f1); 或 printf("%f",f1); 2 for(i=1;i<20;i++) 或 for(i=1;20>i;i++) 或 for(i=2;i<=20;i++) 或 for(i=2;20>=i;i++) 或 for(i=1;i<=19;i++) 或 for(i=1;19>=i;i++) 3 f1=f2; 4 f2=f3; 【程序改错-16】 题目:函数fun的功能是:根据整 型形参m的值,计算如下公式的值。 1 1 1 t = 1- —— - —— - ... - —— 2x2 3x3 mxm 『错误答案』: 1 for(i=2;i<=m;i++) 或 for(i=2;m>=i;i++) 或 2 y-=1.0/(i*i); 或 y=y-1.0/(i*i); 或 3 return y; 或 return (y); 【程序改错-17】 题目:函数fun的功能是:实现交 换两个整数的值。例如给a和b 分别输入3和6 ,输出为 a=6 b=3『错误答案』: 1 void fun (int *a,int *b) 或 fun (int *a,int *b) 2 t=*a; 3 *a=*b; 4 *b=t; 【程序改错-18】 题目:函数fun的功能是:计算并 输出k以内最大的10个能被13 或17整除的自然数之和。k 的值由主函数传入,若k的值 为500,则函数值为4622。 请更改程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 while (★(2<=k)★&& ★(mc<10)★) 或 while (★(k>=2) ★&&★(10=k;k++) 【程序改错-21】 题目:函数fun的功能是:根据以 下公式求π值,并作为函数值 返回。例如,给指定精度的 变量eps输入0.0005时,应当 输出Pi=3.140578。 『错误答案』: 1 t=1; 或 t=1.0; 2 while (t>eps) 或 while (eps=eps) 或 while (eps<=t) 3 t=t*n/(2*n+1); 或 1.0*n/(2*n+1)*t 4 return (2*s); 或 return(2*s); 或 return (s*2); 或 return(s*2); 【程序改错-22】 题目:函数fun的功能是:求出两 个非零正整数的最大公约数, 并作为函数值返回。例如, 若给num1和num2分别输入49 和21,则输出的最大公约数 为7。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 a=b; 2 b=t; 3 r=a%b;} 4 return b; 或 return (b); 或 return(b); 【程序改错-23】 题目:在主函数中从键盘输入若干 个数放入数组中,用0结束输 入并放在最后一个元素中。 下列给定程序中,函数fun的 功能是:计算数组元素中值 为正数的平均值(不包括0)。 例如,数组中元素的值依次 为39,-47,21,2,-8,15, 0,则程序的运行结果为 19.250000。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 double sum=0.0; 2 while(★s[i]★!=★0 ★) 或 while!(s[i]==0) 或 while!(0==s[i]) 3 sum/=c; 或 sum=sum/c; 4 return sum; 或 return (sum); 【程序改错-24】 题目:fun函数的功能是:先从键 盘上输入一个3行3列矩阵的各 个元素的值,然后输出主对 角线上的元素之和sum。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 sum=0; 2 scanf("%d",&a[i][j]); 3 sum=★sum★+★ a[i][i]★; 或 sum+=a[i][i]; 4 printf("sum=%d\n",sum); 【程序改错-25】 题目:fun函数的功能是:给定n 个实数,输出平均值,并统计 在平均值以下(含平均值) 的实数个数。例如,n=6时, 输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得平均值 为40.828335,在平均值以 下的实数个数应为3。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 float xa=0; 或 float xa=0.0; 2 for(j=0;jj;j++) 或 for(j=0;n-1>=j;j++) 或 for(j=0;j<=n-1;j++) 3 for(j=0;jj;j++) 或 for(j=0;j<=n-1;j++) 或 for(j=0;n-1>=j;j++) 4 return c; 或 return (c); 【程序改错-26】 题目:fun函数的功能是:找出大 于m的最小素数,并将其作为 函数值返回。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 for(k=2;kk;k++)

相关主题
文本预览
相关文档 最新文档