程序改错题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.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.程序调试题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++){s+=k;k+=d;}/*modified*/returns;}voidmain(){inta0,d,n;scanf(%d%d%d,&a0,&d,&n);printf(sumx=%d\n,sumx(a0,d,n));}4.程序调试题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];/*modify*/gets(str);/*modify*/for(i=0;i26;i++)a[i]=0;i=0;while(str[i++]!=’\0’)/*modify*/{ch=str[i];ch=ch=’A’&&ch=’Z’?ch+’a’-‘A’:ch;if(’a’=ch&&ch=’z’)a[ch-‘a’]++;/*modify*/}for(i=0;i26;i++)printf(“%2c”,’a’+i);/*输出26个字母*/printf(“出现的次数为:\n”);for(i=0;i26;i++)printf(“%2d”,a[i]);/*输出各字母出现次数*/printf(“\n”);}5.程序调试题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):#includestdio.hmain(){floatpi=0,n,i;intsign=1;scanf(%f,&n);/*modify*/for(i=1;i=n;i++){pi+=sign/(2*i-1);sign=-sign;}pi=4*pi;printf(pi=%f\n,pi);/*modify*/getchar();/*本句无错;暂停程序,按任意键继续*/}6.程序调试题2调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括B_2_2.C文件和B_2_2.EXE文件)保存到指定目录中。功能说明:从键盘输入一个非负十进制整数n(n32768),转化成二进制存入数组a,输出二进制结果。如输入:23则输出:10111又输入:1234则输出:10011010010带错误原程序(见\B_2_2.C):#includestdio.hmain(){inta[16],n,i;/*modify*/scanf(%d,&n);for(i=0;n0;i++)/*modify*/{a[i]=n%2;/*modify*/n/=2;}while(i0)printf(%d,a[--i]);getchar();/*本句无错;暂停程序,按任意键继续*/}7.程序调试:调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果程序功能:输入字符串,将其中所有的大写字母转为小写字母,然后输出。#includestdio.hvoidstr_to_upper(chars[]){inti;/*modify*/while(s[i]!='\0'){if(s[i]='A'&&s[i]='Z')s[i]=s[i]–('A'-'a');/*modified*/i++;}}voidmain(){charstr[80];gets(str);str_to_upper(str);/*modify*/puts(str);}8.程序调试题3调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括B_2_3.C文件和B_2_3.EXE文件)保存到指定目录中。功能说明:程序从键盘输入一行字符串,所有字符依次向右循环移动m个位置并输出,移出的字符循环到最左边。如输入:1234567893则输出:789123456带错误原程序(见\B_2_3.C):#includestdio.h#includestring.hvoidshift_s(chara[],intn,intm)/*a数组的n个字符右移m个位置*/{inti,j,t;for(i=1;im;i++){for(j=n;j0;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();/*本句无错;暂停程序,按任意键继续*/}答案#includestdio.h#includestring.hvoidshift_s(chara[],intn,intm)/*a数组的n个字符右移m个位置*/{inti,j,t;for(i=0;im;i++)/*modified*/{for(j=n;j0;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();/*本句无错;暂停程序,按任意键继续*/}9.程序调试题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):#includestdio.hmain(){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();/*本句没错,程序暂停,按任意键继续*/}答案#includestdio.hmain(){intn,i;floate,a;scanf(%d,&n);/*modified*

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

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

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

×
保存成功