程序改错题.docx
- 文档编号:29412703
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:22
- 大小:18.78KB
程序改错题.docx
《程序改错题.docx》由会员分享,可在线阅读,更多相关《程序改错题.docx(22页珍藏版)》请在冰豆网上搜索。
程序改错题
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.程序调试题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;}/*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 #include #include voidmain() { inti,a[26]; charch,str[80];/*modify*/ gets(str);/*modify*/ for(i=0;i<26;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;i<26;i++) printf(“%2c”,’a’+i);/*输出26个字母*/ printf(“出现的次数为: \n”); for(i=0;i<26;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): #include main() { 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(n<32768),转化成二进制存入数组a,输出二进制结果。 如输入: 23则输出: 10111 又输入: 1234则输出: 10011010010 带错误原程序(见\B_2_2.C): #include main() { inta[16],n,i;/*modify*/ scanf("%d",&n); for(i=0;n>0;i++)/*modify*/ { a[i]=n%2;/*modify*/ n/=2; } while(i>0) printf("%d",a[--i]); getchar();/*本句无错;暂停程序,按任意键继续*/ } 7.程序调试: 调试要求: 下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果 程序功能: 输入字符串,将其中所有的大写字母转为小写字母,然后输出。 #include voidstr_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个位置并输出,移出的字符循环到最左边。 如输入: 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();/*本句无错;暂停程序,按任意键继续*/ } 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): #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();/*本句没错,程序暂停,按任意键继续*/ } 10.程序调试题2 调试要求: 下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。 将结果(包括C_2_2.C文件和C_2_2.EXE文件)保存到指定目录中。 功能说明: 程序从键盘输入一行16进制字符串(字母必须大写),调用hexvalue函数转换为10进制,并输出转换结果。 如输入: 1A则输出: 26 又输入: 1AF8则输出: 6904 带错误原程序(见\C_2_2.C): #include longhexvalue(charstr[]) { 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]-'A'+10; else break; data=data*10+n; } returndata; } main() { chars[80]; scanf("%s",s); printf("%ld",hexvalue(s)); getchar();/*本句没错,程序暂停,按任意键继续*/ } 答案 #include longhexvalue(charstr[]) { longdata=0; intn,i; for(i=0;str[i]! ='\0';i++)/*modified*/ { if(str[i]>='0'&&str[i]<='9') n=str[i]-'0'; elseif(str[i]>='A'&&str[i]<='F')/*modified*/ n=str[i]-'A'+10; else break; data=data*16+n;/*modified*/ } returndata; } main() { chars[80]; scanf("%s",s); printf("%ld",hexvalue(s)); getchar();/*本句没错,程序暂停,按任意键继续*/ } 11.程序调试题3 调试要求: 下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。 将结果(包括C_2_3.C文件和C_2_3.EXE文件)保存到指定目录中。 功能说明: 程序从键盘输入一个整数n,将数组a的11个元素向左循环n次后输出。 如输入: 3 则输出: 345678910012 带错误原程序(见\C_2_3.C): #include main() { inta[10]={0,1,2,3,4,5,6,7,8,9,10},n,i,j,p; scanf("%d",&n); for(i=1;i { p=a[0]; j=0; while(j<10) { a[j]=a[j+1]; j++; } a[10]=p; } for(i=0;i<=10;i++) printf("%d",a(i)); getchar();/*本句没错,程序暂停,按任意键继续*/ } 答案 #include main() { inta[11]={0,1,2,3,4,5,6,7,8,9,10},i,j,n,p;/*modified*/ scanf("%d",&n); for(i=0;i { p=a[0]; j=0; while(j<10) { a[j]=a[j+1]; j++; } a[10]=p; } for(i=0;i<=10;i++) printf("%d",a[i]);/*modified*/ getchar();/*本句没错,程序暂停,按任意键继续*/ } 12.程序调试题1 调试要求: 下列程序包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。 将结果(包括D_2_1.C文件和D_2_1.EXE文件)保存到指定目录中。 功能说明: 打印从1~1000能同时被3和5整除的前n个数。 如输入: 3则输出: 153045 带错误原程序(见C: \KS\D_2_1.C): #include main() { intk; scanf("%d",&n); for(k=1;k<=1000;k++) if(k%3==0&&k%5==0) { print("%d",k); n--; if(n==0)break; } getchar();/*本句没错,暂停程序,按任意键继续*/ } 答案 #include main() { intk,n;/*modified*/ scanf("%d",&n); for(k=1;k<=1000;k++) if(k%3==0&&k%5==0) { printf("%d",k);/*modified*/ n--; if(n==0)break; } getchar();/*本句没错,暂停程序,按任意键继续*/ } 13.程序调试题3 调试要求: 下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。 将结果(包括D_2_3.C文件和D_2_3.EXE文件)保存到指定目录中。 功能说明: 函数myStrupr将字符串str中的小写字母转换为大写,并返回转换的小写字母数。 程序输入一个长度小于80的字符串,调用myStrupr函数将小写字母转换为大写,如果输入串没有小写字母,则输出提示信息。 如输入: Hello,Everybody.则输出: HELLO,EVERYBODY. 又输入: IAMBIG.? ! @#$%则输出: nolowercase 带错误原程序(见C: \KS\D_2_3.C): #include intmyStrupr(charstr[]) { inti,ct=0; for(i=0;Str[i]! ='\0';i++) if(str[i]>='a'||str[i]<='z') { str[i]=str[i]-32; ct++; } returnct; } main() { charstr[80]; gets(str); if(myStrupr(str)==0) puts(str); else printf("nolowercase\n"); getchar();/*本句没错,暂停程序,按任意键继续*/ } 答案 #include intmyStrupr(charstr[]) { inti,ct=0; for(i=0;str[i]! ='\0';i++)/*modified*/ if(str[i]>='a'&&str[i]<='z')/*modified*/ { str[i]=str[i]-32; ct++; } returnct; } main() { charstr[80]; gets(str); if(myStrupr(str)! =0)/*modified*/ puts(str); else printf("nolowercase\n"); getchar();/*本句没错,暂停程序,按任意键继续*/ }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 改错