程序改错题答案.docx

上传人:b****1 文档编号:3251845 上传时间:2023-05-05 格式:DOCX 页数:30 大小:20.43KB
下载 相关 举报
程序改错题答案.docx_第1页
第1页 / 共30页
程序改错题答案.docx_第2页
第2页 / 共30页
程序改错题答案.docx_第3页
第3页 / 共30页
程序改错题答案.docx_第4页
第4页 / 共30页
程序改错题答案.docx_第5页
第5页 / 共30页
程序改错题答案.docx_第6页
第6页 / 共30页
程序改错题答案.docx_第7页
第7页 / 共30页
程序改错题答案.docx_第8页
第8页 / 共30页
程序改错题答案.docx_第9页
第9页 / 共30页
程序改错题答案.docx_第10页
第10页 / 共30页
程序改错题答案.docx_第11页
第11页 / 共30页
程序改错题答案.docx_第12页
第12页 / 共30页
程序改错题答案.docx_第13页
第13页 / 共30页
程序改错题答案.docx_第14页
第14页 / 共30页
程序改错题答案.docx_第15页
第15页 / 共30页
程序改错题答案.docx_第16页
第16页 / 共30页
程序改错题答案.docx_第17页
第17页 / 共30页
程序改错题答案.docx_第18页
第18页 / 共30页
程序改错题答案.docx_第19页
第19页 / 共30页
程序改错题答案.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

程序改错题答案.docx

《程序改错题答案.docx》由会员分享,可在线阅读,更多相关《程序改错题答案.docx(30页珍藏版)》请在冰点文库上搜索。

程序改错题答案.docx

程序改错题答案

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

{

intr,n;

floatarea;

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

{

intr,n;

floatarea;

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

intDtoH(intn,char*str)

{

inti,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;

}

returni;

}

main()

{

inti,k,n;

charstr[80];

scanf("%d",&n);

k=DtoH(n,str);

for(i=k-1;i>=0;i--)

printf("%c",str(i));

getch();

}

答案

#include

intDtoH(intn,char*str)

{

inti,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;

}

returni;

}

main()

{

inti,k,n;

charstr[80];

scanf("%d",&n);

k=DtoH(n,str);

for(i=k-1;i>=0;i--)

printf("%c",str[i]);/*modified*/

getch();

}

3.程序调试题3(X_2_3.C)

调试要求:

下列程序不能得到正确的结果,它包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。

将结果(包括X_2_3.C文件和X_2_3.EXE文件)保存到目录C:

\KS\中。

功能说明:

函数fun分别统计字符串中大写字母和小写字母的个数,main()函数完成字符串的输入和统计数的输出。

如输入:

AAaaBBb123CCccccd

则输出:

upper=6,lower=8

带错误原程序(见C:

\KS\X_2_3.C):

#include

voidfun(char*s,int*a,int*b)

{

while(*s=='\0')

{

if(*s>='A'&&*s<='Z')

(*a)++;

if(*s>='a'||*s<='z')

(*b)++;

s++;

}

}

main()

{

chars[100];

intupper=0,lower=0;

gets(s);

fun(s,&upper,&lower);

printf("\nupper=%d,lower=%d\n",upper,&lower);

getch();

}

答案

#include

voidfun(char*s,int*a,int*b)

{

while(*s!

='\0')/*modified*/

{

if(*s>='A'&&*s<='Z')

(*a)++;

if(*s>='a'&&*s<='z')/*modified*/

(*b)++;

s++;

}

}

main()

{

chars[100];

intupper=0,lower=0;

gets(s);

fun(s,&upper,&lower);

printf("\nupper=%d,lower=%d\n",upper,lower);/*modified*/

getch();

}

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

调试要求:

下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将结果(包括D_3_1.c文件和D_3_1.exe文件)保存到指定目录中。

功能说明:

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

如输入:

-354

则输出:

sumx=18

例示说明:

-3为首项,5为公差,4为项数,前4项之和为18

原程序(见\D_3_1.C):

#include

intsumx(inta0,d,n)

{

inti,k,s=0;

k=a0;

for(i=0;i

s+=k;

k+=d;

returns;

}

voidmain()

{

inta0,d,n;

scanf("%d%d%d",&a0,&d,&n);

printf("sumx=%d\n",sumx(a0,d,n));

}

答案

#include

intsumx(inta0,intd,intn)/*modified*/

{

inti,k,s=0;

k=a0;

for(i=0;i

{s+=k;

k+=d;}

returns;

}

voidmain()

{

inta0,d,n;

scanf("%d%d%d",&a0,&d,&n);

printf("sumx=%d\n",sumx(a0,d,n));

}

5.程序调试题2(D_3_2.C)

调试要求:

下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将结果(包括D_3_2.c文件和D_3_2.exe文件)保存到指定目录中。

功能说明:

以下函数length返回字符串中字母A到字母Z所包含字符的长度。

主程序输入一行字符串,调用length函数输出该字符串中大写字母A到Z的子串长度。

如输入:

Z2009-AShanghaiZ

则输出:

Length=8

例示说明:

从A到Z的子串为Shanghai,其长度为8

原程序(见\D_3_2.C):

#include

intlength(char*p)

{

char*q,*r;

for(q=p;*q!

='\0'||*q!

='A';q++)

;

for(r=q;*r!

='\0'&&*r!

='Z';r++)

;

returnr-q;

}

voidmain()

{

charstr[81];

intn;

gets(str[0]);

n=length(str);

printf("Length=%d\n",n);

}

答案

#include

intlength(char*p)

{

char*q,*r;

for(q=p;*q!

='\0'&&*q!

='A';q++)/*modified*/

;

for(r=q;*r!

='\0'&&*r!

='Z';r++)

;

returnr-q-1;/*modified*/

}

voidmain()

{

charstr[81];

intn;

gets(str);/*modified*/

n=length(str);

printf("Length=%d\n",n);

}

6.程序调试题1(E_3_1.c)

调试要求:

下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。

将结果(包括E_3_1.c文件和E_3_1.exe文件)保存到指定目录中。

功能说明:

统计一字符串中各个字母出现的次数,该字符串从键盘输入,统计时不区分大小写。

对数字、空格及其他字符都不予统计。

最后在屏幕上显示统计结果。

例如字符串:

“abcdefgh23ABCDEFabc”的统计结果与输出格式为:

abcdefghijklmnopqrstuvwxyz出现的次数为:

;

33322211000000000000000000

#include

#include

voidmain()

{

inti,a[26];

charch,str[80],*p=str;

gets(&str);/*获取字符串*/

for(i=0;i<26;i++)a[i]=0;/*初始化字符个数*/

while(*p){

ch=(*p)++;/*移动指针统计不同字符出现的次数*/

ch=ch>=’A’&&ch<=’Z’?

ch+’a’-‘A’:

ch;

/*大小写字符转换*/

if(’a’<=ch<=’z’)a[ch-‘a’]++;

}

for(i=0;i<26;i++)printf(“%2c”,’a’+i);/*输出26个字母*/

printf(“出现的次数为:

\n”);

for(i=0;i<26;i++)printf(“%2d”,a[i]);

/*输出各字母出现次数*/

printf(“\n”);

}

答案

#include

#include

voidmain()

{

inti,a[26];

charch,str[80],*p=str;

gets(str);/*modified*/

for(i=0;i<26;i++)a[i]=0;/*初始化字符个数*/

while(*p){

ch=*p++;/*modified*/

ch=ch>=’A’&&ch<=’Z’?

ch+’a’-‘A’:

ch;

/*大小写字符转换*/

if(’a’<=ch)&&(ch<=’z’)a[ch-‘a’]++;/*modified*/

}

for(i=0;i<26;i++)printf(“%2c”,’a’+i);/*输出26个字母*/

printf(“出现的次数为:

\n”);

for(i=0;i<26;i++)printf(“%2d”,a[i]);

/*输出各字母出现次数*/

printf(“\n”);

}

 

7.程序调试题2(E_3_2.C)

调试要求:

下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。

将结果(包括E_3_1.c文件和E_3_1.exe文件)保存到指定目录中。

功能说明:

递归算法求xn,即xn=x*xn-1,其中x为实数,n≥0。

原程序(见\E_3_2.c)

voidmain(){

floatx,y;

intn;

scanf("%f%d",&x,&n);

y=xn(x,n);

printf("x^n=%f\n",y);

}

floatxn(floatx,intn){

floadz;

if(n<0){

printf("nisawrongnumber!

\n");

exit(0);

}

if(n!

=0)z=1;

elsez=xn(x,n);

returnz;

}

答案

voidmain(){

floatx,y,xn(float,int);/*modified*/

intn;

scanf("%f%d",&x,&n);

y=xn(x,n);

printf("x^n=%f\n",y);

}

floatxn(floatx,intn){

floadz;

if(n<0){

printf("nisawrongnumber!

\n");

exit(0);

}

if(n==0)z=1;/*modified*/

elsez=x*xn(x,n-1);/*modified*/

returnz;

}

8.程序调试题1

调试要求:

下列程序包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将结果(包括B_2_1.C文件和B_2_1.EXE文件)保存到指定目录中。

功能说明:

利用格里高利公式π/4=1-1/3+1/5-1/7+......求前n.项的π值。

如输入:

5则输出:

pi=3.339683

又输入:

10000则输出:

pi=3.141498

带错误原程序(见\B_2_1.C):

#include

main()

{

floatpi=0,n,i;

intsign=1;

scanf("%f",n);

for(i=1;i<=n;i++)

{

pi+=sign/(2*i-1);

sign=-sign;

}

pi=4*pi

printf("pi=%f\n",pi);

getchar();/*本句无错;暂停程序,按任意键继续*/

}

答案

#include

voidmain()

{

intn,i;

scanf("%d",&n);

printf("%d=1",n);

for(i=2;i<=n;)

{

if(n%i==-0)/*modified*/

{

printf("*%d",i);

n=n/i;/*modified*/

}

else

i++;

}

}

 

9.程序调试题2

调试要求:

下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将结果(包括B_2_2.C文件和B_2_2.EXE文件)保存到指定目录中。

功能说明:

从键盘输入一个非负十进制整数n(n<32768),转化成二进制存入数组a,输出二进制结果。

如输入:

23则输出:

10111

又输入:

1234则输出:

10011010010

带错误原程序(见\B_2_2.C):

#include

main()

{

inta[16],n;

scanf("%d",&n);

for(i=0;n<0;i++)

{

a(i)=n%2;

n/=2;

}

while(i>0)

printf("%d",a[--i]);

getchar();/*本句无错;暂停程序,按任意键继续*/

}

答案

#include

voidstr_to_upper(char*s)

{

while(*s!

='\0')/*modified*/

{

if(*s>='a'&&*s<='z')/*modified*/

*s=*s+'A'-'a';/*modified*/

s++;

}

}

voidmain()

{

charstr[80];

gets(str);

str_to_upper(str);

puts(str);

}

10.程序调试题3

调试要求:

下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将结果(包括B_2_3.C文件和B_2_3.EXE文件)保存到指定目录中。

功能说明:

程序从键盘输入一行字符串,所有字符依次向右循环移动m个位置并输出,移出的字符循环到最左边。

如输入:

123456789

3

则输出:

789123456

带错误原程序(见\B_2_3.C):

#include

#include

voidshift_s(chara[],intn,intm)/*a数组的n个字符右移m个位置*/

{

inti,j,t;

for(i=1;i

{

for(j=n;j>0;j--)

a[j]=a[j+1];/*移位并复制*/

a[0]=a[n];

}

a[n]='\0';

}

main()

{

charstra[80];

inti,n,m;

gets(stra);

n=strlen(stra);

scanf("%d",&m);

shift_s(stra,n,m);/*函数调用参数*/

puts(*stra);

getchar();/*本句无错;暂停程序,按任意键继续*/

}

答案

#include

#include

voidshift_s(chara[],intn,intm)/*a数组的n个字符右移m个位置*/

{

inti,j,t;

for(i=0;i

{

for(j=n;j>0;j--)

a[j]=a[j-1];/*modified*/

a[0]=a[n];

}

a[n]='\0';

}

main()

{

charstra[80];

inti,n,m;

gets(stra);

n=strlen(stra);

scanf("%d",&m);

shift_s(stra,n,m);/*函数调用参数*/

puts(stra);/*modified*/

getchar();/*本句无错;暂停程序,按任意键继续*/

}

11.程序调试题1

调试要求:

下列程序包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将结果(包括C_2_1.C文件和C_2_1.EXE文件)保存到指定目录中。

功能说明:

利用公式e=1+1/1!

+1/2!

+…+1/n!

+…求前n项的e值。

如输入:

4则输出:

2.708333

又输入:

10则输出:

2.718282

带错误原程序(见\C_2_1.C):

#include

main()

{

intn,i;

floate,a;

scan("%d",&n);

e=a=1.0;

for(i=1;i<=n;i++)

{

a*=i;

e+=1\a;

}

printf("%f\n",e);

getchar();/*本句没错,程序暂停,按任意键继续*/

}

答案

#include

main()

{

intn,i;

floate,a;

scanf("%d",&n);/*modified*/

e=a=1.0;

for(i=1;i<=n;i++)

{

a*=i;

e+=1/a;/*modified*/

}

printf("%f\n",e);

getchar();/*本句没错,程序暂停,按任意键继续*/

}

12.程序调试题2

调试要求:

下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将结果(包括C_2_2.C文件和C_2_2.EXE文件)保存到指定目录中。

功能说明:

程序从键盘输入一行16进制字符串(字母必须大写),调用hexvalue函数转换为10进制,并输出转换结果。

如输入:

1A则输出:

26

又输入:

1AF8则输出:

6904

带错误原程序(见\C_2_2.C):

#include

longhexvalue(char*str)

{

longdata=0;

intn,i;

for(i=0;str[i]!

='\0',i++)

{

if(str[i]>='0'&&str[i]<='9')

n=str[i]-'0';

elseif(str[i]>='A'||str[i]<='F')

n=str[i]-

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2