C语言程序改错题文档格式.docx
- 文档编号:17753872
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:20
- 大小:19.21KB
C语言程序改错题文档格式.docx
《C语言程序改错题文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序改错题文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
3).t[2*sl]='
\0'
或t[2*sl]=0;
第2题【程序改错】
求出以下分数序列的前n项之和。
和值通过函数值返回main
函数。
2/1+3/2+5/3+8/5+13/8+21/13……
若n=5,则应输出:
8.391667。
/**********FOUND**********/
fun(intn)
inta,b,c,k;
doubles;
s=0.0;
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"
conio.h"
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。
string.h"
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名学生的成绩,输入形式如下:
80.5607290.59851.58864-1
结果为:
Thenumberofstudents:
4
Ave=75.56。
intfun(float*s,intn,float*aver)
floatav,t;
intcount,i;
count=0;
t=0.0;
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输入0.0005时,应当输出Pi=3.140578。
π1121231234
—=1+—+—x—+—x—x—+—x—x—x—+...
23353573579
doublefun(doubleeps)
doubles,t;
intn=1;
s=0.0;
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=1.0*n/(2*n+1)*t;
或t=n/(2*n+1.0)*t;
或t=n/(2.0*n+1)*t;
或t=n/(2.0*n+1.0)*t;
或t=1.0*n/(2.0*n+1.0)*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[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 改错