程序改错题new-答案 下载本文

内容发布更新时间 : 2024/5/20 7:53:44星期一 下面是文章的全部内容请认真阅读。

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(\

for (r=1,r<=n;r++) {

area=3.141593*r*r; if (area<50.0) continue;

printf(\ }

getch(); }

答案

#include main() {

int r,n; float area;

scanf(\

for (r=1;r<=n;r++)/*modified*/ {

area=3.141593*r*r; if (area<50.0) continue;

printf(\ }

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;

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(\ k=DtoH(n,str); for (i=k-1;i>=0;i--)

printf(\

getch(); }

答案

#include

int DtoH(int n,char *str) {

int i,d;

for (i=0;n!=0;i++)/*modified*/ {

d=n;

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(\ k=DtoH(n,str); for (i=k-1;i>=0;i--)

printf(\ getch(); }

3. 程序调试题1(D_3_1.C)

调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括D_3_1.c文件和D_3_1.exe文件)保存到指定目录中。

功能说明:以下程序计算并输出等差数列的累加和,数列的首项为a0,公差为d,项数为n。

如输入:-3 5 4 则输出:sumx=18

例示说明:-3为首项,5为公差,4为项数,前4项之和为18 原程序(见\\D_3_1.C): #include

int sumx( int a0, d, n ) {

int i, k, s=0; k = a0;

for ( i=0; i

void main() {

int a0, d, n;

scanf( \