程序改错题-答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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.265488r=5,square=78.539825r=6,square=113.097351带错误原程序:#includestdio.hmain(){intr,n;floatarea;scanf(%d,&n);for(r=1,r=n;r++){area=3.141593*r*r;if(area50.0)continue;printf(r=%d,square=%d\n,r,area);}getch();}答案#includestdio.hmain(){intr,n;floatarea;scanf(%d,&n);for(r=1;r=n;r++)/*modified*/{area=3.141593*r*r;if(area50.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):#includestdio.hintDtoH(intn,char*str){inti,d;for(i=0;n!=0,i++){d=n%16;if(d=10)str[i]='0'+d;elsestr[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();}答案#includestdio.hintDtoH(intn,char*str){inti,d;for(i=0;n!=0;i++)/*modified*/{d=n%16;if(d10)/*modified*/str[i]='0'+d;elsestr[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):#includestdio.hvoidfun(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();}答案#includestdio.hvoidfun(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):#includestdio.hintsumx(inta0,d,n){inti,k,s=0;k=a0;for(i=0;in;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));}答案#includestdio.hintsumx(inta0,intd,intn)/*modified*/{inti,k,s=0;k=a0;for(i=0;in;i++)/*modified*/{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):#includestdio.hintlength(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);}答案#includestdio.hintlength(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#includestdio.h#includestring.hvoidmain(){inti,a[26];charch,str[80],*p=str;gets(&str);/*获取字符串*/for(i=0;i26;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;i26;i++)printf(“%2c”,’a’+i);/*输出26个字母*/printf(“出现的次数为:\n”);for(i=0;i26;i++)printf(“%2d”,a[i]);/*输出各字母出现次数*/printf(“\n”);}答案#includestdio.h#includestring.hvoidmain(){inti,a[26];charch,str[80],*p=str;gets(str);/*modified*/for(i=0;i26;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;i26;i++)printf(“%2c”,’a’+i);/*输出26个字母*/printf(“出现的次数为:\n”);for(i=0;i26;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(n0){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(

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功