复习资料程序设计改错.docx
- 文档编号:29760676
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:26
- 大小:19.05KB
复习资料程序设计改错.docx
《复习资料程序设计改错.docx》由会员分享,可在线阅读,更多相关《复习资料程序设计改错.docx(26页珍藏版)》请在冰豆网上搜索。
复习资料程序设计改错
程序改错题
一个程序可能有多个方面的错误,此处仅归在一个出错的地方
语法错误,书写错误
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
输入两个实数,按代数值由小到大输出它们,并在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);
/*------------------------------------------------
【程序改错】
---------------------------------------------------
功能:
在一个已按升序排列的数组中插入一个数,插入后,数
组元素仍按升序排列。
------------------------------------------------------*/
#include<>
#defineN11
main()
{
inti,number,a[N]={1,2,4,6,8,9,12,15,149,156};
printf("pleaseenteranintegertoinsertinthearray:
\n");
/**********FOUND**********/
scanf("%d",&number)
printf("Theoriginalarray:
\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("Theresultarray: \n"); for(i=0;i printf("%5d",a[i]); printf("\n"); } 答案: 1、scanf("%d",&number); 2、for(i=N-2;i>=0;i--) 3、a[★i★+★1★]=a[i]; 4、break; /*------------------------------------------- 【程序改错】 ---------------------------------------------- 功能: 以下程序把两个数按由大到小的顺序输出来. ------------------------------------------------------*/ #include<> /***********FOUND***********/ swap(int*p1,*p2) { intp; p=*p1; *p1=*p2; *p2=p; } main() { inta,b,*p,*q; printf("inputa,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) 2、scanf("%d%d",&a,&b); 3、printf("max=%d,min=%d\n",*p,*q); 输入、输出语句错误 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 在一个一维整型数组中找出其中最大的数及其下标。 ------------------------------------------------------*/ #include<> #defineN10 /**********FOUND**********/ floatfun(int*a,int*b,intn) { int*c,max=*a; for(c=a+1;c if(*c>max) { max=*c; /**********FOUND**********/ b=c-a; } returnmax; } voidmain() { inta[N],i,max,p=0; printf("pleaseenter10integers: \n"); for(i=0;i /**********FOUND**********/ get("%d",a[i]); /**********FOUND**********/ m=fun(a,p,N); printf("max=%d,position=%d",max,p); } 答案: 1、intfun(int*a,int*b,intn) 2、*b=c-a; 3、scanf("%d",&a[i]); 4、max=fun(a,&p,N); /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 先从键盘上输入一个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); 算术表达式错误 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 求如下表达式的值: 111 S=1+——+———+......+——————— 1+21+2+31+2+3+......+n ------------------------------------------------------*/ #include<> main() { intn; doublefun(); printf("Pleaseinputanumber: "); /**********FOUND**********/ print("%d",n); printf("%10.6f\n",fun(n)); } /**********FOUND**********/ fun(intn) { inti,j,t; doubles; s=0; /**********FOUND**********/ while(i=1;i<=n;i++); { t=0; for(j=1;j<=i;j++) t=t+j; /**********FOUND**********/ =s+1/t; } returns; } 答案: 1、scanf("%d",&n); 2、doublefun(intn) 3、for(i=1;i<=n;i++) 4、s+=t; 关系表达式错误 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 计算并输出k以内最大的10个能被13或17整除的自然数之和。 k的值由主函数传入。 例如: 若k的值为500,则函数值为4622。 ------------------------------------------------------*/ #include<> intfun(intk) { intm=0,mc=0; /**********FOUND**********/ while((k>=2)||(mc<10)) { /**********FOUND**********/ if((k%13=0)||(k%17=0)) { m=m+k; mc++; } /**********FOUND**********/ k++; } /**********FOUND**********/ return; } main() { printf("%d\n",fun(500)); } 答案: 1、while(★(2<=k)★&&★(mc<10)★) 2、if(k%17==0||k%13==0) if(! (★k%17! =0★||★k%13! =0)) 3、k--; 4、returnm; 变量类型错误 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 求1到10的阶乘的和。 ------------------------------------------------------*/ #include<> main() { inti; floats=0; floatfac(intn); /**********FOUND**********/ for(i=1;i<10;i++) /**********FOUND**********/ s=fac(i); printf("%f\n",s); } floatfac(intn) { /**********FOUND**********/ inty=1; inti; for(i=1;i<=n;i++) y=y*i; /**********FOUND**********/ return; } 答案: 1、for(i=1;i<=10;i++) 2、s=★s★+★fac(i)★; 3、floaty=; 4、returny; 预处理错误 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 用下面的和式求圆周率的近似值。 直到最后一项的绝对值 小于等于。 π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★); 数组错误 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 从键盘输入十个学生的成绩,统计最高分,最低分和平均分。 max代表最高分,min代表最低分,avg代表平均分。 ------------------------------------------------------*/ #include<> main() { inti; /***********FOUND***********/ floata[8],min,max,avg; printf("input10score: "); for(i=0;i<=9;i++) { printf("inputascoreofstudent: "); /***********FOUND***********/ scanf("%f",a); } /***********FOUND***********/ max=min=avg=a[1]; for(i=1;i<=9;i++) { /***********FOUND***********/ if(min min=a[i];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习资料 程序设计 改错