文档库 最新最全的文档下载
当前位置:文档库 › 程序改错

程序改错

显示序号:1

题号:14

科目:Turbo C

题型:程序改错

题干:

/*------------------------------------------------------ 【程序改错】

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

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

fun()

{

int n,j;

float s=0.0,t=1.0;

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

{

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

s=1;

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

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

t=t*n;

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

s+t=s;

}

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

printf("jiecheng=%d\n",s);

}

main()

{

fun();

}

答案:

1). t=1; 或t=1.0;

2). t=★t★*★j★; 或t*=j; 或t=j*t;

3). s=★s★+★t★; 或s+=t; 或s=t+s;

4). printf("jiecheng=%f\n",s);

显示序号:2

题号:19

科目:Turbo C

题型:程序改错

题干:

/*------------------------------------------------------ 【程序改错】

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

功能:计算正整数num的各位上的数字之积。例如:输入252,则输出应该是20。

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

long fun (long num)

{

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

long k;

do

{

k*=num%10;

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

num\=10;

}while (num);

return k;

}

main()

{

long n;

printf("\nPlease enter a number:");

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

scanf("%ld", n);

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

printf("\n%ld\n",fun(long n));

}

答案:

1). long k=1;

2). num/=10; 或num=num/10;

3). scanf("%ld",&n);

4). printf("\n%ld\n",fun(n));

显示序号:3

题号:22

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:求出两个非零正整数的最大公约数,并作为函数值返回。

例如:若给num1和num2分别输入49和21,则输出的最大公约数为7。------------------------------------------------------*/

int fun(int a,int b)

{

int r,t;

if(a

{

t=a;

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

b=a;

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

a=t;

}

r=a%b;

while(r!=0)

{

b=r;

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

r=a/b;

}

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

return a;

}

main()

{

int num1,num2,a;

scanf("%d%d",&num1,&num2);

a=fun(num1,num2);

printf("the maximum common divisor is %d\n\n",a);

}

答案:

1). a=b;

2). b=t;

3). r=a%b;

4). return b; 或return (b); 或return(b);

显示序号:4

题号:249

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

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

max代表最高分,min代表最低分,avg代表平均分。

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

{

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);

}

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

max=min=avg=a[1];

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). max=min=avg=a[0];

4). if (min>a[i]) 或if (a[i]

显示序号:5

题号:253

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:输入10个数,要求输出这10个数的平均值

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

float average(float array[10])

{

int i;

float aver,sum=array[0];

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

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

sum=sum+array[i];

aver=sum/10.0;

return(aver);

}

main( )

{

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

int score[10],aver ;

int i;

printf("input 10 scores:\n");

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

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

scanf("%f", score);

printf("\n");

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

aver=average(score[10]);

printf("average score is %5.2f",aver);

}

答案:

1). for(i=1;i<10;i++) 或for(i=1;i<=9;i++)

2). float score[10],aver; 或float aver,score[10];

3). scanf("%f", &score[i]); 或scanf("%f", score+i);

4). aver=average(score);

显示序号:6

题号:258

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:判断整数x是否是同构数。若是同购数,函数返回1;否则返回0。说明:所谓“同构数”是指这个数出现在它的平方数的右边。

例如:输入整数25,25的平方数是625,25是625中右侧的数,所以25是同构数。

注意:x的值由主函数从键盘读入,要求不大于1000。

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

#include "stdio.h"

int fun(int x)

{

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

int k

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

k=x;

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

if((k%10==x)&&(k%100==x)&&(k%1000==x))

return 1;

else

return 0;

}

main()

{

int x,y;

clrscr();

printf("\nPlease enter a integer numbers:");

scanf("%d",&x);

if(x>100){printf("data error!\n");exit(0);}

y=fun(x);

if(y)

printf("%d YES\n",x);

else

printf("%d NO\n",x);

getch();

答案:

1). int k;

2). k=x*x;

3). if((k%10==x)||(k%100==x)||(k%1000==x))

显示序号:7

题号:352

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:根据整型形参m,计算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-1)

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

#include "stdio.h"

double fun(int m)

{

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

double y=1

int i;

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

for(i=2; i

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

y+=1.0/(2i-1);

return(y);

}

main()

{

int n;

clrscr();

printf("Enter n: ");

scanf("%d", &n);

printf("\nThe result is %1f\n", fun(n));

getch();

}

答案:

1). double y=1;

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

3). y+=1.0/(2*i-3);

显示序号:8

题号:355

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。------------------------------------------------------*/

#include

#include

int fun(int m)

{

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

int i;k;

for(i=m+1;;i++)

{

for(k=2;k

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

if(i%k!=0)

break;

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

if(k=i)

return(i);

}

}

main()

{

int n;

clrscr();

printf("\nPlease enter n:");

scanf("%d",&n);

printf("%d\n",fun(n));

getch();

}

答案:

1). int i,k; 或int i; int k; 或int k,i; 或int k; int i;

2). if(i%k==0) 或if(!(i%k))

3). if(k==i) 或if(i==k)

显示序号:9

题号:364

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:用选择法对数组中的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++)

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

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");

getch();

}

答案:

1). p = j;

2). if(a[i] < a[p]) 或if(a[p] > a[i])

3). p = i;

显示序号:10

题号:367

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:用插入排序法将n个字符进行排序(降序)。

提示:插入法排序的思路是:先对数组的头两个元素进行排序,然后根据前两个元素的情况插入第三个元素,再插入第

四个元素…)。

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

#define N 81

#include

#include

void fun(char *aa, int n)

{

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

int a ,b;t;

for( a = 1; a

{

t = aa[a]; b = a-1;

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

while((b>=0) and (t>aa[b]))

{

aa[b+1]=aa[b]; b--; }

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

aa[b+1] = t

}

}

main()

{ char a[N];

int i;

printf("\nEnter a string: ");gets( a);

fun(a , strlen(a));

printf("\nThe string: ");puts(a);

}

答案:

1). int a ,b,t;

2). while((b>=0)&&(t>aa[b]))

3). aa[b+1]=t;

显示序号:11

题号:374

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。

例如:若输入整数:2310,则应输出:2、3、5、7、11。

请改正程序中的语法错误,使程序能得出正确的结果。------------------------------------------------------*/

#include "conio.h"

#include "stdio.h"

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

IsPrime(integer n )

{

int i, m;

m = 1;

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

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

if ( n%i )

{

m = 0;

break;

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

return ( n );

}

main( )

{

int j, k;

clrscr();

printf( "\nPlease enter an integer number between 2 and 10000: " );

scanf( "%d", &k );

printf( "\n\nThe prime factor(s) of %d is( are ):", k );

for( j = 2; j <= k; j++ )

if((!( k%j))&&( IsPrime(j))) printf( "\n %4d", j );

printf("\n");

}

答案:

1). IsPrime(int n)

2). if(!(n%i))

3). return ( m );

显示序号:12

题号:375

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:根据整型形参m,计算某一数据项的值。

y = 1/(100*100)+1/(200*200)+1/(300*300)+ ……+1/(m*m) 例如:若m = 2000,则应输出:0.000160。

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

#include

#include

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

fun ( int m )

{

double y = 0, d ;

int i ;

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

for( i = 100, i <= m, i += 100 )

{

d = (double)i * (double)i ;

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

y += 1.0 \ d ;

}

return( y ) ;

}

main( )

{

int n = 2000 ;

clrscr( ) ;

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

}

答案:

1). double fun ( int m )

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

3). y += 1.0 / d ;

显示序号:13

题号:376

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:根据整型形参n,计算某一数据项的值。

A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …,

A[n]=1/(1 + A[n-1])

例如:若n=10,则应输出:a10=0.617977。

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

#include

#include

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

int fun ( int n )

{

float A=1; int i;

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

for (i=2; i

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

A = 1.0\(1+A);

return A ;

}

main( )

{

int n ;

clrscr( ) ;

printf("\nPlease enter n: ") ;

scanf("%d", &n ) ;

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

}

答案:

1). float fun(int n)

2). for (i=2; i<=n; i++)

3). A = 1.0/(1+A);

显示序号:14

题号:377

科目:Turbo C

题型:程序改错

题干:

/*------------------------------------------------------ 【程序改错】

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

功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为:1,1,1,3,5,9,17,31,……

项值通过函数值返回main ( )函数。

例如:若n = 15,则应输出:The value is: 2209。

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

#include

#include

long fun ( int n )

{

long a=1, b=1, c=1, d=1, k;

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

for (k=4; k

{

d = a+b+c;

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

a=b

b=c;

c=d;

}

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

return k;

}

main( )

{

int n = 15;

clrscr( );

printf( "The value is: %ld\n", fun ( n ) );

}

答案:

1). for (k=4; k<=n; k++)

2). a=b;

3). return d;

显示序号:15

题号:384

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。

例如:输入圆的半径值:19.527 输出为:s = 598.950017。

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

#include

#include

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

float fun( r)

{

float s;

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

s=1/2*3.14159* r * r;

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

return r;

}

main()

{

float x;

clrscr( );

printf ( "Enter x: ");

scanf ( "%f", &x );

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

getch();

}

答案:

1). float fun(float r)

2). s=1.0/2*3.14159* r * r;

3). return s;

显示序号:16

题号:387

科目:Turbo C

题型:程序改错

题干:

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

【程序改错】

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

功能:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。

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

#include

#include

#define N 20

int fun ( int * a, int n )

{

int i, m, t, k ;

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

{

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

m=0;

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

for(k=1;k

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

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

t=a[i];a[i]=a[m];a[m]=t;

}

}

main( )

{

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

clrscr( );

for ( i=0; i

printf("\n");

fun ( b, n );

for ( i=0; i

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

printf("\n");

}

答案:

1). m=i;

2). for(k=i;k

3). if(a[k]>a[m]) m=k;

显示序号:17

题号:392

科目:Turbo C

题型:程序改错

题干:

/*------------------------------------------------------ 【程序改错】

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

功能:根据整型形参m,计算如下公式的值:y=1/2+1/8+1/18+...+1/2m*m

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

#include "stdio.h"

double fun(int m)

{

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

double y=0

int i;

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

for(i=1; i

{

相关文档