C语言程序改错答案Word文件下载.docx
《C语言程序改错答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言程序改错答案Word文件下载.docx(80页珍藏版)》请在冰豆网上搜索。
或return(b);
题目2:
下列给定程序中,函数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("
\n"
);
return0;
}
voidfun(intn)
inti,k=1;
if(m<
=1)k=0;
for(i=1;
i<
m;
i++)
if(m%i=0)k=0;
returnm;
1).intfun(intm)或fun(intm)
2).for(i=2;
i++)或for(i=2;
m>
i;
=m-1;
m-1=>
3).if(m%i==0)k=0;
4).returnk;
题目3:
输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。
voidfun(void)
inti;
floatf1=1,f2=1,f3;
%8d"
f1);
for(i=1;
=20;
f3=f1+f2;
f2=f1;
f3=f2;
%8.0f"
printf("
fun();
1).printf("
或printf("
%f"
2).for(i=1;
20;
i++)或for(i=1;
20>
=i;
=19;
19>
3).f1=f2;
4).f2=f3;
题目4:
有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置。
{
inti,a[10],min,k=0;
\npleaseinputarray10elements\n"
for(i=0;
10;
i++)
/***********FOUND***********/
scanf("
%d"
a[i]);
a[i]);
min=a[0];
for(i=3;
if(a[i]>
min)
min=a[i];
k=i;
a[k]=a[i];
a[0]=min;
\naftereschange:
i++)printf("
\nk=%d\nmin=%d\n"
k,min);
1).scanf("
a[i]);
i++)或for(i=0;
=9;
3).if(a[i]<
4).a[k]=a[0];
题目5:
求1到20的阶乘的和。
请改正程序中的错误,使它能得出正确的结果。
intn,j;
floats=,t=;
for(n=1;
n<
n++)
{
s=1;
for(j=1;
j<
=n;
j++)
t=t*n;
s+t=s;
jiecheng=%d\n"
s);
1).t=1;
或t=;
2).t=t*j;
或t*=j;
3).s=s+t;
或s+=t;
4).printf("
jiecheng=%f\n"
题目6:
fun函数的功能是:
给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。
例如,n=6时,输入,,,,,所得平均值为,在平均值以下的实数个数应为3。
intfun(floatx[],intn)
intj,c=0;
floatj=0;
for(j=0;
xa+=x[j];
xa=xa/n;
ave=%f\n"
xa);
if(x[j]<
=xa)c++;
returnxa;
floatx[]={,,,,,};
%d\n"
fun(x,6));
1).floatxa=0;
或floatxa=;
2).for(j=0;
n;
j++)或for(j=0;
n>
j;
n-1>
=j;
=n-1;
3).for(j=0;
4).returnc;
或return(c);
题目7:
计算正整数num的各位上的数字之积。
例如,输入252,则输出应该是20。
longfun(longnum)
longk;
do
k*=num%10;
num\=10;
}while(num);
returnk;
longn;
\nPleaseenteranumber:
"
%ld"
n);
\n%ld\n"
fun(longn));
1).longk=1;
2).num/=10;
或num=num/10;
3).scanf("
n);
fun(n));
题目8:
以下程序输出前六行杨辉三角形,即
1
11
121
1331
14641
…………
staticinta[6][6];
inti,j,k;
=6;
for(k=0;
k<
5+i;
k++)
"
/***********FOUND***********/
if(j==0&
&
j==i)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i][j-1];
%-3d"
a[i][j]);
1).for(i=0;
6;
=5;
2).for(k=0;
5-i;
k++)
3).if(j==0||j==i)
4).elsea[i][j]=a[i-1][j-1]+a[i-1][j];
题目9:
将字符串s中最后一次出现的子字符串t1替换成字符串t2,所形成的新串放在w所指的数组中,在此处,要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为"
abcdabfabc"
,t1中的内容为"
ab"
,t2中的内容为"
99"
时,结果w所指数组中的内容应为"
abcdabf99c"
。
请改正程序中的语法错误,使它能运行出正确的结果。
#include<
>
intfun(char*s,char*t1,char*t2,char*w)
char*p,*r,*a;
strcpy(w,s);
while(w)
p=w;
r=t1;
while(*r)
if(*r=*p){r++;
p++;
elsebreak;
if(*r=='
/0'
)a=w;
w++;
r=t2;
a=*r;
a++;
r++;
chars[100],t1[100],t2[100],w[100];
clrscr();
\nPleaseenterstringS:
%s"
s);
\nPleaseentersubstringt1:
t1);
\nPleaseentersubstringt2:
t2);
if(strlen(t1)==strlen(t2))
fun(s,t1,t2,w);
\nTheresultis:
%s\n"
w);
elseprintf("
\nError:
strlen(t1)!
=strlen(t2)\n"
1).while(*w)或while(*w!
=0)或while(*w!
='
\0'
)或for(;
*w;
*w!
;
)
2).if(*r==*p){r++;
3).if(*r=='
或if(*r==0)a=w;
4).*a=*r;
题目10:
以下程序的功能是求如下表达式:
请改正程序中的错误,使程序能得到正确的运行结果。
intn;
floatfun();
Pleaseinputanumber:
print("
n);
%10.6f\n"
fun(intn)
inti,j,t;
floats;
s=0;
while(i=1;
i++);
t=0;
t=t+j;
=s+1/t;
}
returns;
2).floatfun(intn)
3).for(i=1;
n+1;
n+1>
4).s+=t或s=s+(float)t;
或s=s+t;
或s+=(float)t
题目11:
找出大于m的最小素数,并将其作为函数值返回。
intfun(intm)
inti,k;
for(i=m+1;
for(k=1;
if(i%k!
=0)break;
if(k<
i)
1).for(k=2;
k++)或for(k=2;
i>
k;
2).if(i%k==0)break;
3).if(i<
=k)或if(k>
=i)或if(k==i)
4).returni;
或return(i);
题目12:
用起泡法对10个整数从小到大排序。
程序中共有4条错误语句,请改正错误。
voidsort(intx,intn)
inti,j,k,t;
for(i=0;
n-1;
for(j=0;
n-i;
if(x[i]>
x[i+1])
{t=x[j];
x[j]=x[j+1];
x[j+1]=t;
inti,n,a[100];
pleaseinputthelengthofthearray:
sort(n,a);
outputthesortedarray:
%5d"
1).voidsort(int*x,intn)
n-1-i;
n-1-i>
n-(1+i);
n-(1+i)>
3).if(x[j]>
x[j+1])或if(x[j+1]<
x[j])
4).sort(a,n);
题目13:
以下程序把两个数按由大到小的顺序输出来.
swap(int*p1,*p2)
intp;
p=*p1;
*p1=*p2;
*p2=p;
inta,b,*p1,*p2;
printf("
inputa,b:
scanf("
a,b);
*p1=&
a;
*p2=&
b;
if(a<
b)swap(p1,p2);
a=%d,b=%d\n"
max=%d,min=%d\n"
p1,p2);
1).swap(int*p1,int*p2)
2).scanf("
a,&
b);
3).p1=&
p2=&
*p1,*p2);
题目14:
有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置.
floataverage(floatarray[10])
floataver,sum=array[0];
sum=sum+array[i];
aver=sum/;
return(aver);
intscore[10],aver;
input10scores:
for(i=0;
score);
aver=average(score[10]);
averagescoreis%5.2f"
aver);
1).for(i=1;
2).floatscore[10],aver;
&
score[i]);
4).aver=average(score);
题目15:
为一维数组输入10个整数;
将其中最小的数与第一个数对换,将最大的数与最后一个数对换;
输出数组元素。
inta[10];
voidinput();
voidoutput();
voidmax_min();
input(a,10);
max_min(a,10);
output(a,10);
voidinput(int*arr,intn)
int*p,i;
p=arr;
pleaseenter10integers:
p);
voidmax_min(int*arr,intn)
int*min,*max,*p,t;
min=max=arr;
for(p=arr+1;
p<
arr+n;
p++)
/**********FOUND*****