青大c程序改错题库.docx
- 文档编号:26034874
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:64
- 大小:26.81KB
青大c程序改错题库.docx
《青大c程序改错题库.docx》由会员分享,可在线阅读,更多相关《青大c程序改错题库.docx(64页珍藏版)》请在冰豆网上搜索。
青大c程序改错题库
试卷编号:
10578
所属语言:
C语言
试卷方案:
TC_150********2
试卷总分:
440分
共有题型:
1种
一、程序改错共44题(共计440分)
第1题(10.0分)题号:
380难度:
中第2章
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
输入两个双精度数,函数返回它们的平方和的平方根值。
例如:
输入:
22.936和14.121,输出为:
y=26.934415。
------------------------------------------------------*/
#include
#include
#include
/**********FOUND**********/
doublefun(double*a,*b)
{
doublec;
/**********FOUND**********/
c=sqr(a*a+b*b);
/**********FOUND**********/
return*c;
}
main()
{
doublea,b,y;
printf("Entera,b:
");
scanf("%lf%lf",&a,&b);
y=fun(&a,&b);
printf("y=%f\n",y);
}答案:
=======(答案1)=======
doublefun(double*a,double*b)
=======(答案2)=======
c=sqrt(*a**a+*b**b);
=======(答案3)=======
returnc;
第2题(10.0分)题号:
438难度:
中第2章
/*------------------------------------------------
【程序改错】
--------------------------------------------------
功能:
编写函数fun,求两个整数的最小公倍数,然后用主
函数main()调用这个函数并输出结果,两个整数由
键盘输入。
------------------------------------------------*/
#include
intfun(intm,intn)
{
inti;
/**********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);
return0;
}
main()
{
unsignedintm,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); 第3题(10.0分)题号: 404难度: 易第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 编写函数求2! +4! +6! +8! +10+12! +14! 。 ------------------------------------------------------*/ #include longsum(intn) { /**********FOUND**********/ inti,j longt,s=0; /**********FOUND**********/ for(i=2;i<=n;i++) { t=1; for(j=1;j<=i;j++) t=t*j; s=s+t; } /**********FOUND**********/ return(t); } main() { printf("thissum=%ld\n",sum(14)); }答案: =======(答案1)======= inti,j; =======(答案2)======= for(i=2;i<=n;i=i+2) =======(答案3)======= return(s); 第4题(10.0分)题号: 360难度: 中第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 计算正整数num的各位上的数字之积。 例如: 若输入: 252,则输出应该是: 20。 若输入: 202,则输出应该是: 0。 ------------------------------------------------------*/ #include #include longfun(longnum) { /**********FOUND**********/ longk=1 do { k*=num%10; /**********FOUND**********/ num\=10; /**********FOUND**********/ }while(! num); return(k); } main() { longn; printf("Pleaseenteranumber: ");scanf("%ld",&n); printf("\n%ld\n",fun(n)); }答案: =======(答案1)======= longk=1; =======(答案2)======= num/=10; =======(答案3)======= }while(num); 第5题(10.0分)题号: 413难度: 易第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 读取7个数(1-50)的整数值,每读取一个值,程序打印 出该值个数的*。 ------------------------------------------------------*/ #include main() { inti,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) =======(答案2)======= while(a<1||a>50); =======(答案3)======= for(i=1;i<=a;i++) 第6题(10.0分)题号: 553难度: 中第1章 /*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 题目: 列程序的功能为: 已知圆锥半径r和高h,计算圆锥体积v。 请纠正程序中存在错误, 使程序实现其功能。 -------------------------------------------------------*/ #include main() { /***********FOUND***********/ floatr=10,h=5; /***********FOUND***********/ v=1/3*3.14159*r2*h; /***********FOUND***********/ printf("v=%d\n",v); } 答案: =======(答案1)======= floatr=10,h=5,v; =======(答案2)======= v=1.0/3*3.14159*r*r*h; =======(答案3)======= printf("v=%f\n",v); 第7题(10.0分)题号: 399难度: 易第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 编写函数fun求20以内所有5的倍数之积。 ------------------------------------------------------*/ #include #defineN20 intfun(intm) { /**********FOUND**********/ ints=0,i; for(i=1;i /**********FOUND**********/ if(i%m=0) /**********FOUND**********/ s=*i; returns; } main() { intsum; sum=fun(5); printf("%d以内所有%d的倍数之积为: %d\n",N,5,sum); }答案: =======(答案1)======= ints=1,i; =======(答案2)======= if(i%m==0) =======(答案3)======= s=s*i; 第8题(10.0分)题号: 397难度: 中第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 输入两个实数,按代数值由小到大输出它们,并在fun() 函数中输出。 (输出的数据都保留2位小数) ------------------------------------------------------*/ #include fun() { /**********FOUND**********/ floatt floata,b; scanf("%f%f",&a,&b); /**********FOUND**********/ if(a { t=a; a=b; b=t; } /**********FOUND**********/ printf("%5.2f,%5.2f\n",&a,&b); } main() { fun(); }答案: =======(答案1)======= floatt; =======(答案2)======= if(a>b) =======(答案3)======= printf("%5.2f,%5.2f\n",a,b); 第9题(10.0分)题号: 28难度: 中第1章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 实现两个字符串的连接。 例如: 输入dfdfqe和12345时,则输出dfdfqe12345. ------------------------------------------------------*/ #include main() { chars1[80],s2[80]; voidscat(chars1[],chars2[]); gets(s1); gets(s2); scat(s1,s2); puts(s1); } voidscat(chars1[],chars2[]) { inti=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') =======(答案2)======= while(s2[j]! ='\0') =======(答案3)======= s1[i]=s2[j]; =======(答案4)======= s1[i]='\0'; 第10题(10.0分)题号: 11难度: 中第1章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 用下面的和式求圆周率的近似值。 直到最后一项的绝对值 小于等于0.0001。 π111 —=1-—+—-—+... 4357 ------------------------------------------------------*/ #include /**********FOUND**********/ #include fun() { inti=1; /**********FOUND**********/ ints=0,t=1,p=1; /**********FOUND**********/ while(fabs(t)<=1e-4) { s=s+t; p=-p; i=i+2; t=p/i; } /**********FOUND**********/ printf("pi=%d\n",s*4); } main() { fun(); }答案: =======(答案1)======= #include =======(答案2)======= floats=0,t=1,p=1; =======(答案3)======= while(fabs(t)>1e-4) =======(答案4)======= printf("pi=%f\n",s*4); 第11题(10.0分)题号: 401难度: 易第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 编写函数fun计算下列分段函数的值: x*x+xx<0且x≠-3 f(x)=x*x+5x0≤x<10且x≠2及x≠3 x*x+x-1其它 ------------------------------------------------------*/ #include doublefun(floatx) { /**********FOUND**********/ doubley /**********FOUND**********/ if(x<0||x! =-3.0) y=x*x+x; elseif(x>=0&&x<10.0&&x! =2.0&&x! =3.0) y=x*x+5*x; else y=x*x+x-1; /**********FOUND**********/ returnx; } main() { doublef; floatx; printf("inputx="); scanf("%f",&x); f=fun(x); printf("x=%f,f(x)=%f\n",x,f); }答案: =======(答案1)======= floaty; =======(答案2)======= if(x<0&&x! =-3.0) =======(答案3)======= returny; 第12题(10.0分)题号: 10难度: 中第1章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 判断m是否为素数,若是返回1,否则返回0。 ------------------------------------------------------*/ #include /**********FOUND**********/ voidfun(intn) { inti,k=1; if(m<=1)k=0; /**********FOUND**********/ for(i=1;i /**********FOUND**********/ if(m%i=0)k=0; /**********FOUND**********/ returnm; } voidmain() { intm,k=0; for(m=1;m<100;m++) if(fun(m)==1) { printf("%4d",m);k++; if(k%5==0)printf("\n"); } } 答案: =======(答案1)======= intfun(intm) =======(答案2)======= for(i=2;i =======(答案3)======= if(m%i==0)k=0; =======(答案4)======= returnk; 第13题(10.0分)题号: 23难度: 中第1章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 先从键盘上输入一个3行3列矩阵的各个元素的值,然后输 出主对角线上的元素之和sum。 ------------------------------------------------------*/ #include voidfun() { inta[3][3],sum; inti,j; /**********FOUND**********/ a=0; for(i=0;i<3;i++) for(j=0;j<3;j++) /**********FOUND**********/ scanf("%d",a[i][j]); for(i=0;i<3;i++) /**********FOUND**********/ sum=sum+a[i][j]; /**********FOUND**********/ printf("sum=%f\n",sum); } main() { fun(); }答案: =======(答案1)======= sum=0; =======(答案2)======= scanf("%d",&a[i][j]); =======(答案3)======= sum=sum+a[i][i]; =======(答案4)======= printf("sum=%d\n",sum); 第14题(10.0分)题号: 391难度: 中第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 求出N×M整型数组的最小元素及其所在的行坐标及列坐标 (如果最小元素不唯一,选择位置在最前面的一个)。 例如: 输入的数组为: 923 4156 1219 10112 求出的最小数为1,行坐标为2,列坐标为1。 ------------------------------------------------------*/ #include #defineN4 #defineM3 intRow,Col; intfun(intarray[N][M]) { intmin,i,j; min=array[0][0]; Row=0; Col=0; for(i=0;i {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 改错 题库