程序改错.docx
《程序改错.docx》由会员分享,可在线阅读,更多相关《程序改错.docx(35页珍藏版)》请在冰豆网上搜索。
![程序改错.docx](https://file1.bdocx.com/fileroot1/2022-10/29/8224a2b5-3881-47ff-b47f-5b31ca039fca/8224a2b5-3881-47ff-b47f-5b31ca039fca1.gif)
程序改错
五、程序改错
1./*--------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
例如:
输入ab12c3d,则输出123。
注意:
不得增行或删行,也不得更改程序的结构!
------------------------------------------------------*/
#include"stdio.h"
/**********ERROR**********/
voidfun(chars)
{
inti,j;
for(i=0,j=0;s[i]!
='\0';i++)
if(s[i]>='0'&&s[i]<='9')
/**********ERROR**********/
s[j]=s[i];
/**********ERROR**********/
s[j]="\0";
}
main()
{
charitem[80];
printf("\nEnterastring:
");
gets(item);
printf("\n\nThestringis:
\"%s\"\n",item);
fun(item);
printf("\n\nThestringofchangingis:
\"%s\"\n",item);
}
【改错1】
【学生答案】
voidfun(chars)
【参考答案】
voidfun(char*s)
voidfun(chars[])
voidfun(chars[80])
============================================================
【改错2】
【学生答案】
s[j]=s[i];
【参考答案】
s[j++]=s[i];
{s[j]=s[i];j++;}
============================================================
【改错3】
【学生答案】
s[j]="\0";
【参考答案】
s[j]='\0';
============================================================
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
读入一个整数m(5≤m≤20),函数rnd获得m个随机整数,
函数sortpb将这m个随机整数从小到大排序。
例如:
若输入整数7,则应输出:
3101728323647。
------------------------------------------------------*/
#include"conio.h"
#include"stdio.h"
voidsortpb(intn,inta[])
{
/**********ERROR**********/
inti,j,p;
for(j=0;j{
p=j;
for(i=j+1;i/**********ERROR**********/
if(a[p]>a[j])p=i;
/**********ERROR**********/
if(p==j)
{
t=a[j];
a[j]=a[p];
a[p]=t;
}
}
}
voiddoublernd()
{
statict=29,c=217,m=1024,r=0;
r=(r*t+c)%m;return((double)r/m);
}
voidgetarr(intn,int*x)
{
inti;
for(i=1;i<=n;i++,x++)*x=(int)(50*rnd());
}
voidputarr(intn,int*z)
{
inti;
for(i=1;i<=n;i++,z++)
{
printf("%4d",*z);
if(!
(i%10))printf("\n");
}
printf("\n");
}
main()
{
intaa[20],n;
printf("\nPleaseenteranintegernumberbetween5and20:
");
scanf("%d",&n);
getarr(n,aa);
printf("\n\nBeforesorting%dnumbers:
\n",n);putarr(n,aa);
sortpb(n,aa);
printf("\nAftersorting%dnumbers:
\n",n);putarr(n,aa);
}
【改错1】
【学生答案】
inti,j,p;
【参考答案】
inti,j,p,t;
============================================================
【改错2】
【学生答案】
if(a[p]>a[j])p=i;
【参考答案】
if(a[p]>a[i])p=i;
if(a[i]
============================================================
【改错3】
【学生答案】
if(p==j)
【参考答案】
if(p!
=j)
一、程序改错
1./*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
一个5位数,判断它是不是回文数。
即12321是回文数,个
位与万位相同,十位与千位相同。
------------------------------------------------------*/
#include"stdio.h"
main()
{
/**********ERROR**********/
longge,shi,qian;wan,x;
scanf("%ld",&x);
/**********ERROR**********/
wan=x%10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
/**********ERROR**********/
if(ge==wan||shi==qian)
printf("thisnumberisahuiwen\n");
else
printf("thisnumberisnotahuiwen\n");
}
【改错1】
【学生答案】
longge,shi,qian;wan,x;
【参考答案】
longge,shi,qian,wan,x;
============================================================
【改错2】
【学生答案】
wan=x%10000;
【参考答案】
wan=x/10000;
============================================================
【改错3】
【学生答案】
if(ge==wan||shi==qian)
【参考答案】
if(ge==wan&&shi==qian)
if(shi==qian&&ge==wan)
============================================================
2.
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
用下面的和式求圆周率的近似值。
直到最后一项的绝对值
小于等于0.0001。
π/4=1-1/3+1/5-1/7....
------------------------------------------------------*/
#include"stdio.h"
/**********ERROR**********/
#include"math"
voidfun()
{
floats=0,t=1,i=1;
/**********ERROR**********/
intp=1;
/**********ERROR**********/
while(fabs(t)<=1e-4)
{
s=s+t;
p=-p;
i=i+2;
t=p/i;
}
/**********ERROR**********/
printf("pi=%d\n",s*4);
}
main()
{
fun();
}
【改错1】
【学生答案】
#include"math"
【参考答案】
#include"math.h"
#include
============================================================
【改错2】
【学生答案】
intp=1;
【参考答案】
floatp=1;
floatp=1.0;
doublep=1;
double1.0;
============================================================
【改错3】
【学生答案】
while(fabs(t)<=1e-4)
【参考答案】
while(fabs(t)>1e-4)
while(0.0001while(1e-4while(fabs(t)>0.0001)
============================================================
【改错4】
【学生答案】
printf("pi=%d\n",s*4);
【参考答案】
printf("pi=%f\n",s*4);
printf("pi=%lf\n",s*4);
===============