【2017年整理】程序改错题new-答案
1. 程序调试题1(X_2_1.C)
调试要求:下列程序不能得到正确的结果,它包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括X_2_1.C文件和X_2_1.EXE文件)保存到目录C:\KS\中。
功能说明:计算半径为1~n的圆的面积,仅打印超过 50 的圆面积。
如输入:6
则输出:
r=4,square=50.265488
r=5,square=78.539825
r=6,square=113.097351
带错误原程序:
#include
main()
{
int r,n;
float area;
scanf("%d",&n);
for (r=1,r<=n;r++)
{
area=3.141593*r*r;
if (area<50.0) continue;
printf("r=%d,square=%d\n",r,area);
}
getch();
}
答案
#include
main()
{
int r,n;
float area;
scanf("%d",&n);
for (r=1;r<=n;r++)/*modified*/
{
area=3.141593*r*r;
if (area<50.0) continue;
printf("r=%d,square=%f\n",r,area);/*modified*/
}
getch();
}
2. 程序调试题2(X_2_2.C)
调试要求:下列程序不能得到正确的结果,它包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括X_2_2.C文件和X_2_2.EXE文件)保存到目录C:\KS\中。
功能说明:将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符串形式输出。
如输入:79则输出:4F
又输入:1234则输出:4D2
带错误原程序(见C:\KS\X_2_2.C):
#include
int DtoH(int n,char *str)
{
int i,d;
for (i=0;n!=0,i++)
{
d=n%16;
if (d>=10)
str[i]='0'+d;
else
str[i]='A'+d-10;
n/=16;
}
return i;
}
main()
{
int i,k,n;
char str[80];
scanf("%d",&n);
k=DtoH(n,str);
for (i=k-1;i>=0;i--)
printf("%c",str(i));
getch();
}
答案
#include
int DtoH(int n,char *str)
{
int i,d;
for (i=0;n!=0;i++)/*modified*/
{
d=n%16;
if (d<10)/*modified*/
str[i]='0'+d;
else
str[i]='A'+d-10;
n/=16;
}
return i;
}
main()
{
int i,k,n;
char str[80];
scanf("%d",&n);
k=DtoH(n,str);
for (i=k-1;i>=0;i--)
printf("%c",str[i]);/*modified*/
getch();
}
3. 程序调试题1(D_3_1.C)
调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括D_3_1.c文件和D_3_1.exe文件)保存到指定目录中。
功能说明:以下程序计算并输出等差数列的累加和,数列的首项为a0,公差为d,项数为n。
如输入:-3 5 4
则输出