C语言程序改错题Word文档下载推荐.docx

上传人:b****7 文档编号:22413114 上传时间:2023-02-04 格式:DOCX 页数:23 大小:19.03KB
下载 相关 举报
C语言程序改错题Word文档下载推荐.docx_第1页
第1页 / 共23页
C语言程序改错题Word文档下载推荐.docx_第2页
第2页 / 共23页
C语言程序改错题Word文档下载推荐.docx_第3页
第3页 / 共23页
C语言程序改错题Word文档下载推荐.docx_第4页
第4页 / 共23页
C语言程序改错题Word文档下载推荐.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C语言程序改错题Word文档下载推荐.docx

《C语言程序改错题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序改错题Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。

C语言程序改错题Word文档下载推荐.docx

或t[2*sl]=0;

 

第2题【程序改错】

求出以下分数序列的前n项之和。

和值通过函数值返回main

函数。

2/1+3/2+5/3+8/5+13/8+21/13……

若n=5,则应输出:

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

fun(intn)

inta,b,c,k;

doubles;

s=;

a=2;

b=1;

for(k=1;

k<

=n;

k++)

{

s=(double)a/b;

c=a;

a=a+b;

b=c;

}

returnc;

main()

intn=5;

printf("

\nThevalueoffunctionis:

%lf\n"

fun(n));

1).doublefun(intn)

2).s=s+(double)a/b;

或s+=(double)a/b;

或s+=a/(double)b;

或s=s+a/(double)b;

3).returns;

第3题【程序改错】

读入一个整数m(5≤m≤20),函数getarr调用函数rnd获

得m个随机整数,函数sortpb将这m个随机整数从小到大排序。

若输入整数7,则应输出:

3101728323647。

#include"

sortpb(intn,int*a)

inti,j,p,t

for(j=0;

j<

n-1;

j++)

{

p=j;

for(i=j+1;

i<

n;

i++)

if(a[p]>

a[j])p=i;

if(p==j)

t=a[j];

a[j]=a[p];

a[p]=t;

}

doublernd()

statict=29,c=217,m=1024,r=0;

r=(r*t+c)%m;

return((double)r/m);

getarr(intn,int*x)

for(i=1;

i++,x++)*x=(int)(50*rnd());

putarr(intn,int*z)

i++,z++)

%4d"

*z);

if(!

(i%10))printf("

\n"

);

intaa[20],n;

\nPleaseenteranintegernumberbetween5and20:

"

scanf("

%d"

&

n);

getarr(n,aa);

\n\nBeforesorting%dnumbers:

n);

putarr(n,aa);

sortpb(n,aa);

\nAftersorting%dnumbers:

1).inti,j,p,t;

2).if(a[p]>

a[i])p=i;

3).if(p!

=j)

第4题【程序改错】

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

以下程序能求出1*1+2*2+......+n*n<

=1000中满足条件的

最大的n。

intn,s;

s==n=0;

while(s>

1000)

++n;

s+=n*n;

n=%d\n"

&

n-1);

1).s=n=0;

2).while(s<

=1000)

3).printf("

n-1);

第5题【程序改错】

求出a所指数组中最大数和次最大数(规定最大数和次最大

数不在a[0]和a[1]中),依次和a[0]、a[1]中的数对调。

数组中原有的数:

7、10、12、0、3、6、9、11、5、8,

输出的结果为:

12、11、7、0、3、6、9、10、5、8。

#defineN20

voidfun(int*a,intn)

intk,m1,m2,max1,max2,t;

max1=max2=-32768;

m1=m2=0;

for(k=0;

n;

k++)

if(a[k]>

max1)

max2=max1;

m2=m1;

max1=a[k];

m1=k;

elseif(a[k]>

max2=a[k];

m2=k;

t=a[0];

a[m1]=a[0];

a[m1]=t;

t=a[1];

a[m2]=a[1];

a[m2]=t;

{

intb[N]={7,10,12,0,3,6,9,11,5,8},n=10,i;

for(i=0;

n;

i++)

%d"

b[i]);

fun(b,n);

for(i=0;

i++)

1).elseif(a[k]>

max2)

2).t=a[0];

a[0]=a[m1];

3).t=a[1];

a[1]=a[m2];

第6题【程序改错】

读入一个整数k(2≤k≤10000),打印它的所有质因子(即

所有为素数的因子)。

若输入整数:

2310,则应输出:

2、3、5、7、11。

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

isPrime(integern)

inti,m;

m=1;

for(i=2;

i++)

if(n%i)

m=0;

break;

returnn;

intj,k;

\nPleaseenteranintegernumberbetween2and10000:

k);

\n\nTheprimefactor(s)of%dis(are):

k);

for(j=2;

=k;

if((!

(k%j))&

&

(IsPrime(j)))printf("

\n%4d"

j);

1).IsPrime(intn)

2).if(!

(n%i))

3).returnm;

第7题【程序改错】

为一维数组输入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:

for(i=0;

i<

i++)

p);

voidmax_min(int*arr,intn)

int*min,*max,*p,t;

min=max=arr;

for(p=arr+1;

p<

arr+n;

p++)

if(*p<

*max)

max=p;

elseif(*p<

*min)min=p;

t=*arr;

*arr=*min;

*min=t;

if(max=arr)max=min;

t=*(arr+n-1);

*(arr+n-1)=*max;

*max=t;

voidoutput(int*arr,intn)

Thechangedarrayis:

while(i=0;

%3d"

*p++);

1).scanf("

p++);

或scanf("

arr[i]);

p+i);

arr+i);

2).if(*p>

*max)或if(*max<

*p)

3).if(max==arr)

4).for(i=0;

i++)或for(i=0;

n>

i;

i++)或for(p=arr;

)或for(i=0;

=n-1;

n-1>

=i;

=arr+n-1;

)或for(p=arr;

arr+n-1>

=p;

第8题【程序改错】

求出在字符串中最后一次出现的子字符串的地址,通过函

数值返回,在主函数中输出从此地址开始的字符串;

若未

找到,则函数值为NULL。

当字符串中的内容为:

abcdabfabcdx"

,t中的内容为:

ab"

时,输出结果应是:

abcdx。

abd"

时,则程序输出

未找到信息:

notfound!

char*fun(char*s,char*t)

char*p,*r,*a;

a==NULL;

while(*s)

p=s;

r=t;

while(*r)

if(r==p)

r++;

p++;

else

if(*r='

)a=s;

s++;

returna;

chars[100],t[100],*p;

\nPleaseenterstringS:

s);

\nPleaseentersubstringt:

t);

p=fun(s,t);

if(p)

\nTheresultis:

p);

else

\nNotfound!

1).a=NULL;

2).if(*r==*p)

3).if(*r=='

第9题【程序改错】

从m个学生的成绩中统计出高于和等于平均分的学生人数,

此人数由函数值返回。

平均分通过形参传回,输入学生成

绩时,用-1结束输入,由程序自动统计学生人数。

若输入8名学生的成绩,输入形式如下:

6072988864-1

结果为:

Thenumberofstudents:

4

Ave=。

intfun(float*s,intn,float*aver)

floatav,t;

intcount,i;

count=0;

t=;

i++)t+=s[i];

av=t/n;

ave=%f\n"

av);

if(s[i]<

av)count++;

aver=av;

returncount

floata,s[30],aver;

intm=0;

printf("

\nPleaseentermarks(-1toend):

\n"

%f"

a);

while(a>

0)

s[m]=a;

m++;

scanf("

\nThenumberofstudents:

%d\n"

fun(s,m,&

aver));

Ave=%6.2f\n"

aver);

1).if(s[i]>

=av)count++;

2).*aver=av;

3).returncount;

第10题

【程序改错】

根据以下公式求π值,并作为函数值返回。

给指定精度的变量eps输入时,应当输出Pi=。

π1121231234

—=1+—+—x—+—x—x—+—x—x—x—+...

23353573579

doublefun(doubleeps)

doubles,t;

intn=1;

s=;

t=1;

while(t<

=eps)

s+=t;

t=n/(2*n+1)*t;

n++;

returns;

doublex;

%lf"

x);

\neps=%lf,Pi=%lf\n\n"

x,fun(x));

1).while(t>

eps)或while(eps<

t)或while(t>

=eps)或while(eps<

=t)或while(t>

eps)或while(eps<

t)或while(t>

=eps)或while(eps<

=t)

2).t=t*n/(2*n+1);

或t=*n/(2*n+1)*t;

或t=n/(2*n+*t;

或t=n/*n+1)*t;

或t=n/*n+*t;

或t=*n/*n+*t;

3).return2*s;

或return(2*s);

或return(2*s);

或return(s*2);

或return(s*2);

第11题【程序改错】

实现两个字符串的连接。

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

chars1[80],s2[80];

voidscat(chars1[],chars2[]);

gets(s1);

gets(s2);

scat(s1,s2);

puts(s1);

voidscat(chars1[],chars2[])

inti=0,j=0;

while(s1[i]=='

i++;

while(s2[j]=='

s2[j]=s1[i];

j++;

s2[j]='

1).while(s1[i]!

='

)或while(s1[i])或while(s1[i]!

=0)

2).while(s2[j]!

)或while(s2[j])或while(s2[j]!

3).s1[i]=s2[j];

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

当前位置:首页 > 工程科技 > 建筑土木

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

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