c语言程序改错题Word下载.docx
《c语言程序改错题Word下载.docx》由会员分享,可在线阅读,更多相关《c语言程序改错题Word下载.docx(37页珍藏版)》请在冰豆网上搜索。
a[i]);
4max=fun(a,&
p,N);
/*-----------------------------------
2题目:
用起泡法对10个整数从小到大排序。
voidsort(intx,intn)
inti,j,k,t;
n-1;
for(j=0;
j<
n-i;
j++)
if(x[i]>
x[i+1])
{t=x[j];
x[j]=x[j+1];
x[j+1]=t;
inti,n,a[100];
pleaseinputthelengthofthearray:
n);
n;
sort(a,n);
outputthesortedarray:
=n-1;
%5d"
-------------------------------------
『错误答案』:
1voidsort(intx[],intn)
2for(j=0;
n-1-i;
j++)或for(j=0;
n-1-i>
j;
n-(1+i);
n-(1+i)>
3if(x[j]>
x[j+1])或if(x[j+1]<
x[j])
3题目:
在一个已按升序排列的数组中插入一个数,插入后,数
组元素仍按升序排列。
#defineN11
inti,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156};
pleaseenteranintegertoinsertinthearray:
%f"
number)
Theoriginalarray:
N-1;
for(i=N-1;
i>
=0;
i--)
if(number<
=a[i])
a[i]=a[i-1];
else
{a[i+1]=number;
exit;
a[0])a[0]=number;
Theresultarray:
}
1scanf("
number);
2for(i=N-2;
i--)或for(i=N-2;
0<
=i;
3a[i+1]=a[i];
4break;
------------------------------------
4【程序改错】
题目:
以下程序的功能是求如下表达式:
S=1+1/(1+2)+1/(1+2+3)+
1/(1+2+3+4)…
请改正程序中的错误,使程序能得到正确的运行结果。
#include<
stdio.h>
intn;
floatfun();
Pleaseinputanumber:
"
n);
%10.6f\n"
fun(n));
fun(intn)
inti,j,t;
floats;
s=0;
for(i=1;
=n;
i++);
t=0;
for(j=1;
t=t+j;
s=s+1/t;
}
returns;
2floatfun(intn)
3for(i=1;
i++)或for(i=1;
n>
n+1;
n+1>
i;
4s+=1.0/t或s=s+1.0/(float)t;
或s=s+1.0/t;
或s+=1.0/(float)t
/*-----------------------------------
5题目:
输入一行英文文本,将每一个单词的第一个字母变成大写。
例如:
输入"
ThisisaCprogram."
,输出为"
This
IsACProgram."
。
string.h>
conio.h>
fun(charp)
intk=0;
/**********FOUND**********/
while(*p=='
\0'
)
if(k==0&
&
*p!
='
'
*p=toupper(*p);
k=0;
elseif(*p!
)k=1;
elsek=0;
*p+;
}
charstr[81];
clrscr();
pleaseinputaEnglishtextline:
gets(str);
Theoriginaltextlineis:
puts(str);
fun(str);
Thenewtextlineis:
1fun(char*p)或fun(charp[])
2while(*p!
)或while(*p)
3k=1;
4p++;
或p=1+p;
或++p;
或p=p+1;
6【程序改错】
将一个字符串中的大写字母转换成小写字母。
例如:
输入aSdFG输出为asdfg。
#include<
charfun(charc)
if(*c<
Z'
*c>
A'
)*c-='
-'
a'
;
fun=c;
chars[81],*p=s;
gets(s);
while(*p)
*p=fun(p);
puts(*p);
p++;
putchar('
\n'
1charfun(char*c)
2return*c;
或return(*c);
或return(*c);
3{chars[81],*p=s;
4putchar(*p);
或printf("
%c"
*p);
-------------------------------------
7【程序改错】
-------------------------------------题目:
下列给定程序中,函数fun的功能是:
判断m是否为素数,若是返回1,否则返回0。
主函数的功能是:
按每行5个输出1-100之间的全部素数。
请改正程序中的4个错误,使它能得出正确的结果。
intm,k=0;
for(m=1;
m<
100;
m++)
if(fun(m)==1)
%4d"
m);
k++;
if(k%5==0)printf("
voidfun(intm)
inti,k=1;
if(m<
=1)k=0;
m;
if(m%i=0)k=0;
returnm;
1intfun(intm)或fun(intm)
2for(i=2;
i++)或for(i=2;
m>
=m-1;
m-1=>
3if(m%i==0)k=0;
4returnk;
8题目:
函数fun的功能是:
用下面的和式求圆周率的近似值。
直到最后一项的绝对值小于等于0.0001。
π111
—=1-—+—-—+...
4357
请改正程序中的错误,使它能得出正确的结果。
#include"
stdio.h"
fun()
inti=1;
ints=0,t=1,p=1;
while(fabs(t)<
=1e-4)
s=s+t;
p=-p;
i=i+2;
t=p/i;
pi=%d\n"
s*4);
main()
fun();
1#include"
math.h"
2floats=0,t=1,p=1;
或floats=0,p=1,t=1;
或floatp=1,s=0,t=1;
或floatp=1,t=1,s=0;
或floatt=1,p=1,s=0;
或floatt=1,s=0,p=1;
3while(fabs(t)>
1e-4)或while(0.0001<
fabs(t))或while(1e-4<
fabs(t))或while(fabs(t)>
0.0001)
4printf("
pi=%f\n"
9题目:
求1到10的阶乘的和。
主函数和fun函数中,各有两个错误,请改正,使其能得到正确的运行结果。
-------------------------------------main()
inti;
floatt,s=0;
floatfac(intn);
10;
s=fac(i);
%f\n"
s);
floatfac(intn)
inty=1;
for(i=1;
y=y*i;
return;
1for(i=1;
=10;
10>
11;
11>
2s=s+fac(i);
或s+=fac(i);
3floaty=1.0;
或floaty=1;
4returny;
或return(y);
或return(y);
10题目:
求1到20的阶乘的和。
请改正程序中的错误,使它能得出正确的结果。
{
intn,j;
floats=0.0,t;
for(n=1;
n<
=20;
n++)
{
s=1;
t=t*n;
s+t=s;
jiecheng=%d\n"
1t=1;
或t=1.0;
2t=t*j;
或t*=j;
3s=s+t;
或s+=t;
jiecheng=%f\n"
11题目:
-------------------------------『错误答案』:
12【程序改错】
根据整型形参m的值,计算如下公式的值。
111
t=1-——-——-...-——
2x23x3mxm
例如,若m=5,则应输出:
0.536389
doublefun(intm)
doubley=1.0;
for(i=2;
y-=1/(i*i);
intn=5;
\ntheresultis%lf\n"
1for(i=2;
=m;
m+1;
1+m;
m+1>
1+m>
2y-=1.0/(i*i);
或y=y-1.0/(i*i);
或y-=1.0/(float)(i*i);
或y=y-1.0/(float)(i*i);
或y=y-1.0/i/i;
或y=y-1.0/(float)i/(float)i;
3returny;
【程序改错】
12题目:
实现交换两个整数的值。
例如给a和b
分别输入3和6,输出为a=6b=3
voidfun(inta,b)
intt;
t=a;
a=b;
b=t;
inta,b;
entera,b:
scanf("
%d%d"
a,&
b);
fun(&
a=%db=%d\n"
a,b);
1voidfun(int*a,int*b)或fun(int*a,int*b)
2t=*a;
3*a=*b;
4*b=t;
13【程序改错】
计算并输出k以内最大的10个能被13
或17整除的自然数之和。
k的值由主函数传入,若k的值
为500,则函数值为4622。
请更改程序中的错误,使它能得出正确的结果。
intfun(intk)
intm=0,mc=0,j;
while((k>
=2)||(mc<
10))
if((k%13=0)||(k%17=0))
{m=m+k;
mc++;
k++;
return;
%d\n"
fun(500));
1while((2<
=k)&
(mc<
10))或while((k>
=2)&
(10<
mc))或while((2<
mc))或while((k>
10))或while((2<
=9))或while((k>
(9<
=mc))或while((2<
=mc))或while((k>
=9))
2if((k%17==0)||(k%13==0))或if!
((k%17!
=0)&
(k%13!
=0))
3k--;
4returnm;
或return(m);
14【程序改错】
计