程序改错40.docx

上传人:b****6 文档编号:8078361 上传时间:2023-01-28 格式:DOCX 页数:40 大小:24.97KB
下载 相关 举报
程序改错40.docx_第1页
第1页 / 共40页
程序改错40.docx_第2页
第2页 / 共40页
程序改错40.docx_第3页
第3页 / 共40页
程序改错40.docx_第4页
第4页 / 共40页
程序改错40.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

程序改错40.docx

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

程序改错40.docx

程序改错40

【程序改错】

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

注意:

不可以增加或删除程序行,也不可以更改程序的结构。

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

题目1:

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

111

S=1+——+———+......+———————

1+21+2+31+2+3+......+n

#include

main()

{

intn;

floatfun();

printf("Pleaseinputanumber:

");

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

print("%d",n);

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

}

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

fun(intn)

{

inti,j,t;

floats;

s=0;

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

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

{

t=0;

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

t=t+j;

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

=s+1/t;

}

returns;

}

题目2:

函数fun的功能是:

计算正整数num的各位上的数字之积。

例如,输入252,则输出应该是20。

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

longfun(longnum)

{

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

longk;

do

{

k*=num%10;

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

num\=10;

}while(num);

returnk;

}

main()

{

longn;

printf("\nPleaseenteranumber:

");

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

scanf("%ld",n);

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

printf("\n%ld\n",fun(longn));

}

题目3:

用"冒泡法"对输入的十个字符排序后按从小到大的次序输出.

#defineN10

main()

{inti;

charstr[N];

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

scanf("%s",&str);

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

sort(str[N]);

for(i=0;i

printf("%c",str[i]);

printf("\n");

}

sort(charstr[N])

{inti,j;chart;

for(j=1;j

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

for(i=0;(i

='\0');i++)

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

if(str[i]

{t=str[i];str[i]=str[i+1];str[i+1]=t;}

}

题目4:

函数fun的功能是:

求出两个非零正整数的最大公约数,并作为函数值返回。

例如,若给num1和num2分别输入49和21,则输出的最大公约数为7。

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

intfun(inta,intb)

{

intr,t;

if(a

{

t=a;

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

b=a;

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

a=t;

}

r=a%b;

while(r!

=0)

{

a=b;

b=r;

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

r=a/b;}

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

returna;

}

main()

{

intnum1,num2,a;

scanf("%d%d",&num1,&num2);

a=fun(num1,num2);

printf("themaximumcommondivisoris%d\n\n",a);

}

题目5:

函数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);

}

题目6:

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

程序中共有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**********/

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

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

m=fun(a,p,N);

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

}

题目7:

用冒泡法对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]);

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

sort(n,a);

printf("outputthesortedarray:

\n");

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

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

printf("\n");

}

题目8:

fun函数的功能是:

实现3行3列矩阵的转置,即行列互换。

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

fun(inta[3][3],intm,intn)

{

inti,j,t;

for(i=0;i

for(j=0;j

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

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

for(i=0;i

{

for(j=0;j

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

printf("\n");

}

for(i=0;i

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

for(j=0;j

{

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

a[i][j]=t;

a[i][j]=a[j][i];

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

t=a[j][i];

}

for(i=0;i

{

for(j=0;j

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

printf("\n");

}

}

main()

{

intb[3][3];

fun(b,3,3);

}

题目9:

下面程序的功能是:

从键盘输入十个学生的成绩,统计最高分,最低分和平均分。

max代表最高分,min代表最低分,avg代表平均分。

main()

{inti;

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

floata[8],min,max,avg;

printf("input10score:

");

for(i=0;i<=9;i++)

{

printf("inputascoreofstudent:

");

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

scanf("%f",a);

}

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

max=min=avg=a[1];

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

{

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

if(min

min=a[i];

if(max

max=a[i];

avg=avg+a[i];

}

avg=avg/10;

printf("max:

%f\nmin:

%f\navg:

%f\n",max,min,avg);

}

题目10:

下面程序的功能是利用二维数组输出如图所示的图形。

*******

*****

***

*

***

*****

*******

#include

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

#defineN=7

main()

{

chara[N][N];

inti,j,z;

clrscr();

for(i=0;i

for(j=0;j

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

a[i][j]=;

z=0;

for(i=0;i<(N+1)/2;i++)

{

for(j=z;j

a[i][j]='*';

z=z+1;

}

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

z=0;

for(i=(N+1)/2;i

{z=z-1;

for(j=z;j

a[i][j]='*';

}

for(i=0;i

{

for(j=0;j

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

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

printf("\n");

}

}

题目11:

下列给定程序中,函数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;

}

题目12:

将一个字符串中第m个字符开始的全部字符复制成为另一个字符串。

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

#include

voidstrcopy(char*str1,char*str2,intm)

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

charp1,p2;

inti,j;

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

=str1+m;

p2=str2;

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

if(*p1);

*p2++=*p1++;

*p2='\0';

}

main()

{

inti,m;

char*p1,*p2,str1[80],str2[80];

p1=str1;

p2=str2;

gets(p1);

scanf("%d",&m);

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

strcat(str1[0],str2[0],m);

puts(p1);puts(p2);

}

题目13:

fun函数的功能是:

给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。

例如,n=6时,输入23.5,45.67,12.1,6.4,58.9,98.4所得平均值为40.828335,在平均值以下的实数个数应为3。

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

intfun(floatx[],intn)

{

intj,c=0;

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

floatj=0;

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

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

xa+=x[j];

xa=xa/n;

printf("ave=%f\n",xa);

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

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

if(x[j]<=xa)c++;

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

returnxa;

}

main()

{

floatx[]={23.5,45.67,12.1,6.4,58.9,98.4};

printf("%d\n",fun(x,6));

}

 

答案:

1).floatxa=0;或floatxa=0.0;

2).for(j=0;jj;j++)或for(j=0;n-1>=j;j++)或for(j=0;j<=n-1;j++)

3).for(j=0;jj;j++)或for(j=0;j<=n-1;j++)或for(j=0;n-1>=j;j++)

4).returnc;或return(c);

 

题目14:

fun函数的功能是:

找出大于m的最小素数,并将其作为函数值返回。

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

intfun(intm)

{

inti,k;

for(i=m+1;;i++)

{

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

for(k=1;k

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

if(i%k!

=0)break;

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

if(k

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

returnk;

}

}

main()

{

intn;

scanf("%d",&n);

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

}

 

答案:

1).for(k=2;kk;k++)

2).if(★i%k★==★0★)break;

3).if(i<=k)或if(k>=i)或if(★k★==★i★)

4).returni;或return(i);

题目15:

在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。

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

计算数组元素中值为正数的平均值(不包括0)。

例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。

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

doublefun(ints[])

{

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

intsum=0.0;

intc=0,i=0;

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

while(s[i]=0)

{

if(s[i]>0)

{sum+=s[i];c++;}

i++;

}

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

sum\=c;

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

returnc;

}

main()

{

intx[1000];inti=0;

do

{scanf("%d",&x[i]);}

while(x[i++]!

=0);

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

}

题目16:

fun函数的功能是:

实现两个字符串的连接。

例如:

输入dfdfqe和12345时,则输出dfdfqe12345.

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

main()

{

chars1[80],s2[80];

voidscat(chars1[],chars2[]);

gets(s1);

gets(s2);

scat(s1,s2);

puts(s1);

}

voidscat(chars1[],chars2[])

{

inti=0,j=0;

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

while(s1[i]=='\0')i++;

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

while(s2[j]=='\0')

{

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

s2[j]=s1[i];

i++;

j++;

}

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

s2[j]='\0';

}

题目17:

函数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));

}

题目18:

编写函数fun求20以内所有5的倍数之积。

#defineN20

#include"stdio.h"

main()

{intsum;

sum=fun(5);

printf("%d以内所有%d的倍数之积为:

%d\n",N,5,sum);

getch();

}

intfun(intm)

{

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

ints=0,i;

for(i=1;i

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

if(i%m=0)

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

s=*i;

returns;

}

题目19:

编写函数fun其功能是:

输入两个实数,按代数值由小到大输出它们,并在fun()

函数中输出。

(输出的数据都保留2位小数)

#include"stdio.h"

main()

{fun();

getch();}

fun(floata,floatb)

{

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

floatt

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

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

if(a

{t=a;a=b;b=t;}

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

printf("%5.2f,%5.2f\n",&a,&b);

}

 

题目20:

编写函数fun计算下列分段函数的值:

x*20x<0且x≠-3

f(x)=sin(x)0≤x<10且x≠2及x≠3

x*x+x-1其它

#include"math.h"

#include"stdio.h"

floatfun(floatx)

{

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

floaty

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

if(x<0||x!

=-3.0)

y=x*20;

elseif(x>=0&&x<10.0&&x!

=2.0&&x!

=3.0)

y=sin(x);

elsey=x*x+x-1;

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

returnx;

}

main()

{floatx,f;

printf("Inputx=");

scanf("%f",&x);

f=fun(x);

printf("x=%f,f(x)=%f\n",x,f);

getch();

}

题目21:

编写函数fun求20以内所有5的倍数之积。

#defineN20

#include"stdio.h"

main()

{intsum;

sum=fun(5);

printf("%d以内所有%d的倍数之积为:

%d\n",N,5,sum);

getch();

}

intfun(intm)

{

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

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

当前位置:首页 > 求职职场 > 自我管理与提升

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

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