C语言程序改错——答案(共32页).doc





《C语言程序改错——答案(共32页).doc》由会员分享,可在线阅读,更多相关《C语言程序改错——答案(共32页).doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上程序改错-请改正程序中的错误,使它能得出正确的结果。注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/题目1:函数fun的功能是:求出两个非零正整数的最大公约数, 并作为函数值返回。例如,若给num1和num2分别输入49 和21,则输出的最大公约数为7。 int fun(int a,int b) int r,t; if(ab) 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 num
2、1,num2,a; scanf(%d%d,&num1,&num2); a=fun(num1,num2); printf(the maximum common divisor is %dnn,a);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=
3、0; for(m=1;m100;m+) if(fun(m)=1) printf(%4d,m);k+; if(k%5=0)printf(n);return 0; /*FOUND*/void fun( int n) int i,k=1; if(m=1) k=0;/*FOUND*/ for(i=1;im;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;ii;i+) 3). if( m%i = 0) k=0; 4). retu
4、rn k;题目3:函数fun的功能是:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。 请改正程序中的4个错误,使它能得出正确的结果。void fun(void) 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);int main(void) fun();return 0;答案: 1).
5、printf(%8.0f,f1); 或 printf(%f,f1); 2). for(i=1;ii;i+) 或 for(i=2;i=i;i+) 或 for(i=1;i=i;i+) 3). f1=f2; 4). f2=f3;题目4:有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置。int main(void) int i,a10, min, k=0; printf(n please input array 10 elementsn); for(i=0;i10;i+) /*FOUND*/ scanf(%d, ai); for(i=0;i10;i+)
6、printf(%d,ai); min=a0;/*FOUND*/ for(i=3;imin) min=ai; k=i; /*FOUND*/ ak=ai; a0=min; printf(n after eschange:n); for(i=0;i10;i+) printf(%d,ai); printf(nk=%dnmin=%dn,k,min);return 0;答案: 1). scanf(%d,&ai); 2). for(i=1;i10;i+) 或 for(i=0;i10;i+) 或 for(i=1;i=9;i+) 或 for(i=0;i=9;i+) 3). if(aimin) 4). ak=a0
7、;题目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(jiecheng=%dn,s);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). pr
8、intf(jiecheng=%fn,s);题目6:fun函数的功能是:给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。例如,n=6时,输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得平均值为40.,在平均值以下的实数个数应为3。 请改正程序中的错误,使它能得出正确的结果。int fun(float x,int n) int j,c=0;/*FOUND*/ float j=0;/*FOUND*/ for(j=0;j=n;j+) xa+=xj; xa=xa/n; printf(ave=%fn,xa);/*FOUND*/ for(j=0;j=n;j+)
9、if(xj=xa) c+;/*FOUND*/ return xa;int main(void) float x=23.5,45.67,12.1,6.4,58.9,98.4; printf(%dn,fun(x,6);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=j;j+) 4). return c; 或 return (c);题目7:函数fun的功能是:计算正整数num的各位
10、上的数字之积。例如,输入252,则输出应该是20。 请改正程序中的错误,使它能得出正确的结果。long fun (long num)/*FOUND*/ long k; do k*=num%10;/*FOUND*/ num=10; while (num); return k;int main(void) long n; printf(nPlease enter a number:);/*FOUND*/ scanf(%ld, n);/*FOUND*/ printf(n%ldn,fun(long n);return 0;答案: 1). long k=1; 2). num/=10; 或 num=num
11、/10; 3). scanf(%ld,&n); 4). printf(n%ldn,fun(n);题目8:以下程序输出前六行杨辉三角形,即 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 int main(void) static int a66; int i,j,k;/*FOUND*/ for(i=1;i=6;i+) /*FOUND*/ for(k=0;k5+i;k+) printf( ); for(j=0;j=i;j+) /*FOUND*/ if(j=0&j=i) aij=1; else /*FOUND*/ aij=ai-1j-1+aij-1; printf( ); printf
12、(%-3d,aij); printf(n); return 0;答案: 1). for(i=0;i6;i+) 或 for(i=0;i=5;i+) 2). for(k=0;k5-i;k+) 3). if(j=0|j=i) 4). else aij=ai-1j-1+ai-1j;题目9:将字符串s中最后一次出现的子字符串t1替换成字符串t2, 所形成的新串放在w所指的数组中,在此处,要求t1和t2 所指字符串的长度相同。 例如,当s所指字符串中的内容为abcdabfabc,t1中的内容为ab,t2中的内容为99时,结果w所指数组中的内容应为abcdabf99c。 请改正程序中的语法错误,使它能运行出
13、正确的结果。#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
14、main(void) char s100, t1100, t2100, w100; clrscr(); printf(nPlease enter string S:); scanf(%s, s); printf(nPlease enter substring t1:); scanf(%s, t1); printf(nPlease enter substring t2:); scanf(%s, t2); if ( strlen(t1)=strlen(t2) ) fun( s, t1, t2, w); printf(nThe result is : %sn, w); else printf(nEr
15、ror : 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;题目10:以下程序的功能是求如下表达式: 请改正程序中的错误,使程序能得到正确的运行结果。#include int main(void) int n; float fun(); print
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 改错 答案 32

限制150内