c语言程序改错题.docx

上传人:b****6 文档编号:4567023 上传时间:2022-12-06 格式:DOCX 页数:37 大小:23.54KB
下载 相关 举报
c语言程序改错题.docx_第1页
第1页 / 共37页
c语言程序改错题.docx_第2页
第2页 / 共37页
c语言程序改错题.docx_第3页
第3页 / 共37页
c语言程序改错题.docx_第4页
第4页 / 共37页
c语言程序改错题.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

c语言程序改错题.docx

《c语言程序改错题.docx》由会员分享,可在线阅读,更多相关《c语言程序改错题.docx(37页珍藏版)》请在冰豆网上搜索。

c语言程序改错题.docx

c语言程序改错题

程序改错

-------------------------------------

1题目:

在一个一维整型数组中找出其中最大的数及其下标。

程序中共有4条错误语句,请改正错误。

-----------------*/

#defineN10

/**********FOUND**********/

floatfun(int*a,int*b,intn)

{

int*c,max=*a;

for(c=a+1;c

if(*c>max)

{

max=*c;

/**********FOUND**********/

b=c-a;}

returnmax;

}

main()

{

inta[N],i,max,p=0;

printf("pleaseenter10integers:

\n");

for(i=0;i

/**********FOUND**********/

scanf("%d",a[i]);

/**********FOUND**********/

m=fun(a,p,N);

printf("max=%d,position=%d",max,p);

}

-------------------------------------『错误答案』:

1intfun(int*a,int*b,intn)

2*b=c-a;}

3scanf("%d",&a[i]);

4max=fun(a,&p,N);

/*-----------------------------------

2题目:

用起泡法对10个整数从小到大排序。

程序中共有4条错误语句,请改正错误。

-------------------------------------

/**********FOUND**********/

voidsort(intx,intn)

{

inti,j,k,t;

for(i=0;i

/**********FOUND**********/

for(j=0;j

/**********FOUND**********/

if(x[i]>x[i+1])

{t=x[j];x[j]=x[j+1];x[j+1]=t;}

}

main()

{

inti,n,a[100];

printf("pleaseinputthelengthofthearray:

\n");

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

sort(a,n);

printf("outputthesortedarray:

\n");

for(i=0;i<=n-1;i++)

printf("%5d",a[i]);

printf("\n");

}

-------------------------------------

『错误答案』:

1voidsort(intx[],intn)

2for(j=0;jj;j++)或for(j=0;jj;j++)

3if(x[j]>x[j+1])或if(x[j+1]

-------------------------------------

3题目:

在一个已按升序排列的数组中插入一个数,插入后,数

组元素仍按升序排列。

程序中共有4条错误语句,请改正错误。

#defineN11

main()

{

inti,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156};

printf("pleaseenteranintegertoinsertinthearray:

\n");

/**********FOUND**********/

scanf("%f",&number)

printf("Theoriginalarray:

\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n");

/**********FOUND**********/

for(i=N-1;i>=0;i--)

if(number<=a[i])

/**********FOUND**********/

a[i]=a[i-1];

else

{a[i+1]=number;

/**********FOUND**********/

exit;}

if(number

printf("Theresultarray:

\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n");

}

-------------------------------------

『错误答案』:

1scanf("%d",&number);

2for(i=N-2;i>=0;i--)或for(i=N-2;0<=i;i--)

3a[i+1]=a[i];

4break;}

------------------------------------

4【程序改错】

题目:

以下程序的功能是求如下表达式:

S=1+1/(1+2)+1/(1+2+3)+

1/(1+2+3+4)…

请改正程序中的错误,使程序能得到正确的运行结果。

#include

main()

{

intn;

floatfun();

printf("Pleaseinputanumber:

");

/**********FOUND**********/

printf("%d",n);

printf("%10.6f\n",fun(n));

}

/**********FOUND**********/

fun(intn)

{

inti,j,t;

floats;

s=0;

/**********FOUND**********/

for(i=1;i<=n;i++);

{

t=0;

for(j=1;j<=i;j++)

t=t+j;

/**********FOUND**********/

s=s+1/t;

}

returns;

}

『错误答案』:

1scanf("%d",&n);

2floatfun(intn)

3for(i=1;i<=n;i++)或for(i=1;n>=i;i++)或for(i=1;ii;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."。

-------------------------------------

#include

#include

#include

/**********FOUND**********/

fun(charp)

{

intk=0;

/**********FOUND**********/

while(*p=='\0')

{

if(k==0&&*p!

='')

{

*p=toupper(*p);

/**********FOUND**********/

k=0;}

elseif(*p!

='')k=1;

elsek=0;

/**********FOUND**********/

*p+;

}

}

main()

{

charstr[81];

clrscr();

printf("pleaseinputaEnglishtextline:

");

gets(str);

printf("Theoriginaltextlineis:

");

puts(str);

fun(str);

printf("Thenewtextlineis:

");

puts(str);

}

『错误答案』:

1fun(char*p)或fun(charp[])

2while(*p!

='\0')或while(*p)

3k=1;}

4p++;或p=1+p;或++p;或p=p+1;

-------------------------------------

6【程序改错】

题目:

将一个字符串中的大写字母转换成小写字母。

例如:

输入aSdFG输出为asdfg。

-------------------------------------

#include

/**********FOUND**********/

charfun(charc)

{

if(*c<='Z'&&*c>='A')*c-='A'-'a';

/**********FOUND**********/

fun=c;

}

main()

/**********FOUND**********/

chars[81],*p=s;

gets(s);

while(*p)

{

*p=fun(p);

/**********FOUND**********/

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个错误,使它能得出正确的结果。

-------------------------------------

main()

{

intm,k=0;

for(m=1;m<100;m++)

if(fun(m)==1)

{

printf("%4d",m);k++;

if(k%5==0)printf("\n");

}

}

/**********FOUND**********/

voidfun(intm)

{

inti,k=1;

if(m<=1)k=0;

/**********FOUND**********/

for(i=1;i

/**********FOUND**********/

if(m%i=0)k=0;

/**********FOUND**********/

returnm;

}

『错误答案』:

1intfun(intm)或fun(intm)

2for(i=2;ii;i++)或for(i=2;i<=m-1;i++)或for(i=2;m-1=>i;i++)

3if(m%i==0)k=0;

4returnk;

-------------------------------------

8题目:

函数fun的功能是:

用下面的和式求圆周率的近似值。

直到最后一项的绝对值小于等于0.0001。

π111

—=1-—+—-—+...

4357

请改正程序中的错误,使它能得出正确的结果。

-------------------------------------

/**********FOUND**********/

#include"stdio.h"

fun()

{

inti=1;

/**********FOUND**********/

ints=0,t=1,p=1;

/**********FOUND**********/

while(fabs(t)<=1e-4)

{

s=s+t;

p=-p;

i=i+2;

t=p/i;

}

/**********FOUND**********/

printf("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.00010.0001)

4printf("pi=%f\n",s*4);

9题目:

下列给定程序中,函数fun的功能是:

求1到10的阶乘的和。

主函数和fun函数中,各有两个错误,请改正,使其能得到正确的运行结果。

-------------------------------------main()

{

inti;

floatt,s=0;

floatfac(intn);

/**********FOUND**********/

for(i=1;i<10;i++)

/**********FOUND**********/

s=fac(i);

printf("%f\n",s);

}

floatfac(intn)

{

/**********FOUND**********/

inty=1;

inti;

for(i=1;i<=n;i++)

y=y*i;

/**********FOUND**********/

return;

}

-------------------------------------

『错误答案』:

1for(i=1;i<=10;i++)或for(i=1;10>=i;i++)或for(i=1;i<11;i++)或for(i=1;11>i;i++)

2s=s+fac(i);或s+=fac(i);

3floaty=1.0;或floaty=1;

4returny;或return(y);或return(y);

10题目:

函数fun的功能是:

求1到20的阶乘的和。

请改正程序中的错误,使它能得出正确的结果。

-------------------------------------

fun()

{

intn,j;

floats=0.0,t;

for(n=1;n<=20;n++)

{

/**********FOUND**********/

s=1;

for(j=1;j<=n;j++)

/**********FOUND**********/

t=t*n;

/**********FOUND**********/

s+t=s;

}

/**********FOUND**********/

printf("jiecheng=%d\n",s);

}

main()

{

fun();

}

-------------------------------------『错误答案』:

1t=1;或t=1.0;

2t=t*j;或t*=j;

3s=s+t;或s+=t;

4printf("jiecheng=%f\n",s);

-------------------------------------

11题目:

函数fun的功能是:

求1到20的阶乘的和。

请改正程序中的错误,使它能得出正确的结果。

-------------------------------------

fun()

{

intn,j;

floats=0.0,t;

for(n=1;n<=20;n++)

{

/**********FOUND**********/

s=1;

for(j=1;j<=n;j++)

/**********FOUND**********/

t=t*n;

/**********FOUND**********/

s+t=s;

}

/**********FOUND**********/

printf("jiecheng=%d\n",s);

}

main()

{

fun();

}

-------------------------------『错误答案』:

1t=1;或t=1.0;

2t=t*j;或t*=j;

3s=s+t;或s+=t;

4printf("jiecheng=%f\n",s);

-------------------------------------

12【程序改错】

题目:

函数fun的功能是:

根据整型形参m的值,计算如下公式的值。

111

t=1-——-——-...-——

2x23x3mxm

例如,若m=5,则应输出:

0.536389

请改正程序中的错误,使它能得出正确的结果。

-------------------------------------

doublefun(intm)

{

doubley=1.0;

inti;

/**********FOUND**********/

for(i=2;i

/**********FOUND**********/

y-=1/(i*i);

/**********FOUND**********/

returnm;

}

main()

{

intn=5;

printf("\ntheresultis%lf\n",fun(n));

}

-------------------------------------

『错误答案』:

1for(i=2;i<=m;i++)或for(i=2;m>=i;i++)或for(i=2;ii;i++)或for(i=2;1+m>i;i++)

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;或return(y);或return(y);

【程序改错】

12题目:

函数fun的功能是:

实现交换两个整数的值。

例如给a和b

分别输入3和6,输出为a=6b=3

请改正程序中的4个错误,使它能得出正确的结果。

-------------------------------------

/**********FOUND**********/

voidfun(inta,b)

{

intt;

/**********FOUND**********/

t=a;

/**********FOUND**********/

a=b;

/**********FOUND**********/

b=t;

}

main()

{

inta,b;

printf("entera,b:

");scanf("%d%d",&a,&b);

fun(&a,&b);

printf("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【程序改错】

题目:

函数fun的功能是:

计算并输出k以内最大的10个能被13

或17整除的自然数之和。

k的值由主函数传入,若k的值

为500,则函数值为4622。

请更改程序中的错误,使它能得出正确的结果。

-------------------------------------

intfun(intk)

{

intm=0,mc=0,j;

/**********FOUND**********/

while((k>=2)||(mc<10))

{

/**********FOUND**********/

if((k%13=0)||(k%17=0))

{m=m+k;mc++;}

/**********FOUND**********/

k++;

}

/**********FOUND**********/

return;

}

main()

{

printf("%d\n",fun(500));

}

-------------------------------------

『错误答案』:

1while((2<=k)&&(mc<10))或while((k>=2)&&(10=2)&&(mc<10))或while((2<=k)&&(mc<=9))或while((k>=2)&&(9<=mc))或while((2<=k)&&(9<=mc))或while((k>=2)&&(mc<=9))

2if((k%17==0)||(k%13==0))或if!

((k%17!

=0)&&(k%13!

=0))

3k--;

4returnm;或return(m);

-------------------------------------

14【程序改错】

题目:

函数fun的功能是:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1