C语言程序改错 - 答案

更新时间:2023-11-30 09:02:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

程序改错

-------------------------------------------------------- 请改正程序中的错误,使它能得出正确的结果。

注意:不可以增加或删除程序行,也不可以更改程序的结构。

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

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

例如,若给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) { a=b; b=r;

/**********FOUND**********/ r=a/b;

}

/**********FOUND**********/ return a; }

int main(void) {

int num1,num2,a;

scanf(\ a=fun(num1,num2);

printf(\maximum common divisor is %d\\n\\n\ return 0; }

答案:

1). a=b; 2). b=t; 3). r=a%b;}

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

题目2:下列给定程序中,函数fun的功能是:判断m是否为素数, 若是返回1,否则返回0。主函数的功能是:按每行5个输 出1-100之间的全部素数。

请改正程序中的4个错误,使它能得出正确的结果。 int main(void) {

int m,k=0;

for(m=1;m<100;m++) if(fun(m)==1) {

printf(\ if(k%5==0)printf(\

}

return 0; }

/**********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; }

答案:

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;

题目3:函数fun的功能是:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。

请改正程序中的4个错误,使它能得出正确的结果。 void fun(void) {

int i;

float f1=1,f2=1,f3;

/**********FOUND**********/ printf(\

/**********FOUND**********/ for(i=1;i<=20;i++) { f3=f1+f2;

/**********FOUND**********/ f2=f1;

/**********FOUND**********/ f3=f2; printf(\ }

printf(\}

int main(void) {

fun();

return 0; }

答案:

1). printf(\或 printf(\

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;

题目4:有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置。 int main(void) {

int i,a[10], min, k=0;

printf(\please input array 10 elements\\n\

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

/***********FOUND***********/ scanf(\ for(i=0;i<10;i++)

printf(\ 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(\ for(i=0;i<10;i++) printf(\

printf(\

return 0;

}

答案:

1). scanf(\

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]

题目5:函数fun的功能是:求1到20的阶乘的和。

请改正程序中的错误,使它能得出正确的结果。

void fun(void) {

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(\}

int main(void) {

fun();

return 0; }

答案:

1). t=1; 或 t=1.0; 2). t=t*j; 或 t*=j; 3). s=s+t; 或 s+=t;

4). printf(\

题目6:fun函数的功能是:给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。例如,n=6时,输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得平均值为40.828335,在平均值以下的实数个数应为3。 请改正程序中的错误,使它能得出正确的结果。

int fun(float x[],int n) {

int j,c=0;

/**********FOUND**********/ float j=0;

/**********FOUND**********/ for(j=0;j<=n;j++) xa+=x[j];

xa=xa/n;

printf(\

/**********FOUND**********/ for(j=0;j<=n;j++)

if(x[j]<=xa) c++;

/**********FOUND**********/ return xa; }

int main(void) {

float x[]={23.5,45.67,12.1,6.4,58.9,98.4}; printf(\return 0; }

答案:

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

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

请改正程序中的错误,使它能得出正确的结果。

long fun (long num) {

/**********FOUND**********/ long k; do {

k*=num;

/**********FOUND**********/ num\\=10; }while (num); return k; }

int main(void) {

long n;

printf(\/**********FOUND**********/ scanf(\

/**********FOUND**********/ printf(\return 0; }

答案:

1). long k=1;

2). num/=10; 或 num=num/10; 3). scanf(\

4). printf(\

题目8:以下程序输出前六行杨辉三角形,即

1 1 1 1 2 1

1 3 3 1 1 4 6 4 1 ………… ………… int main(void) {

static int a[6][6]; int i,j,k;

/***********FOUND***********/ for(i=1;i<=6;i++)

/***********FOUND***********/ {

for(k=0;k<5+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(\

}

printf(\ }

return 0; }

答案:

1). for(i=0;i<6;i++) 或 for(i=0;i<=5;i++)

2). for(k=0;k<5-i;k++) 3). if(j==0||j==i)

4). else a[i][j]=a[i-1][j-1]+a[i-1][j];

题目9:将字符串s中最后一次出现的子字符串t1替换成字符串t2, 所形成的新串放在w所指的数组中,在此处,要求t1和t2 所指字符串的长度相同。

例如,当s所指字符串中的内容为\,t1中的内容为\,t2中的内容为\时,结果w所指数组中的内容应为\。

请改正程序中的语法错误,使它能运行出正确的结果。 #include #include #include

int fun (char *s, char *t1, char *t2 , char *w) {

int i; char *p , *r, *a; strcpy( w, s );

/**********FOUND**********/ while ( w ) {

p = w; r = t1; while ( *r )

/**********FOUND**********/ if ( *r = *p ) { r++; p++; } else break;

/**********FOUND**********/ if ( *r == '/0' ) a = w; w++; }

r = t2;

while ( *r ) {

/**********FOUND**********/ a = *r; a++; r++; } }

int main(void) {

char s[100], t1[100], t2[100], w[100]; clrscr();

printf(\enter string S:\scanf(\

printf(\enter substring t1:\scanf(\

printf(\enter substring t2:\scanf(\

if ( strlen(t1)==strlen(t2) ) {

fun( s, t1, t2, w);

printf(\ %s\\n\ }

else printf(\: strlen(t1) != strlen(t2)\\n\ return 0; }

答案:

1). while (*w) 或 while (*w!=0) 或 while (*w!='\\0') 或 for (;*w;) 或 for (;*w!='\\0';)

2). if ( *r == *p ) { r++; p++; }

3). if ( *r == '\\0' ) a = w; 或 if ( *r ==0 ) a = w;

4). *a=*r;

{

int n;

float fun();

printf(\/**********FOUND**********/

print(\ printf(\return 0; }

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

fun(int n) {

int i,j,t; float s; s=0;

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

while(i=1;i<=n;i++); { t=0;

for(j=1;j<=i;j++) t=t+j;

/**********FOUND**********/ =s+1/t;

} return s; }

答案:

1). scanf(\ 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 题目10:以下程序的功能是求如下表达式:

111题目11:fun函数的功能是:找出大于m的

s?1???.......?.1?21?2?31?2?n.?..最小素数,并将其作为函数值返回。

请改正程序中的错误,使它能得出正 请改正程序中的错误,使程序能得到确的结果。

int fun( int m) 正确的运行结果。

#include { int main(void) int i,k;

本文来源:https://www.bwwdw.com/article/82ht.html

Top