累加累乘.docx
《累加累乘.docx》由会员分享,可在线阅读,更多相关《累加累乘.docx(32页珍藏版)》请在冰点文库上搜索。
累加累乘
第1题(10.0分)题号:
626
功能:
下面程序是计算sum=1+(1+1/2)+(1+1/2+1/3)+...
(1+1/2+...1/n)的值。
例如:
当n=3,sum=4.3333333
doublef(intn)
{
inti;
doubles;
s=0;
for(i=1;i<=n;i++)
/***********SPACE***********/
【?
】;
returns;
}
main()
{
inti,m=3;
floatsum=0;
for(i=1;i<=m;i++)
/***********SPACE***********/
【?
】;
/***********SPACE***********/
printf("【?
】\n",sum);
}
答案:
1).s+=1.0/i或s+=1/i或s=s+1.0/i或s=s+1/i
2).sum+=f(i)或sum=sum+f(i)
3).%f
第2题(10.0分)题号:
627
功能:
调用函数fun计算m=1-2+3-4+……+9-10,并输出结果。
intfun(intn)
{
intm=0,f=1,i;
/***********SPACE***********/
for(i=1;【?
】;i++)
{
m+=i*f;
/***********SPACE***********/
【?
】;
}
/***********SPACE***********/
return【?
】;
}
main()
{
printf("m=%d\n",fun(10));
}
答案:
1).i<=n
2).f=-f
3).m
第3题(10.0分)题号:
4
功能:
下面的程序是求1!
+3!
+5!
+……+n!
的和。
main()
{
longintf,s;
inti,j,n;
/***********SPACE***********/
【?
】;
scanf("%d",&n);
/***********SPACE***********/
for(i=1;i<=n;【?
】)
{
f=1;
/***********SPACE***********/
for(j=1;【?
】;j++)
/***********SPACE***********/
【?
】;
s=s+f;
}
printf("n=%d,s=%ld\n",n,s);
}
答案:
1).s=0
2).i+=2或i=i+2或i++,i++
3).j<=i或i>=j或jj
4).f=f*j
第4题(10.0分)题号:
407
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
编写函数求2!
+4!
+6!
+8!
+10+12!
+14!
。
------------------------------------------------------*/
#include"stdio.h"
longsum(intn)
{
/**********FOUND**********/
inti,j
longt,s=0;
/**********FOUND**********/
for(i=2;i<=n;i++)
{
t=1;
for(j=1;j<=i;j++)
t=t*j;
s=s+t;
}
/**********FOUND**********/
return(t);
}
main()
{
printf("thissum=%ld\n",sum(14));
getch();
}
答案:
1).inti,j;
2).for(i=2;i<=n;i=i+2)或for(i=2;i<=n;i+=2)或for(i=2;i<=n;i++,i++)
3).return(s);
第5题(10.0分)题号:
14
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
求1到20的阶乘的和。
------------------------------------------------------*/
fun()
{
intn,j;
floats=0.0,t=1.0;
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();
}
答案:
1).t=1;或t=1.0;
2).t=t*j;或t*=j;或t=j*t;
3).s=s+t;或s+=t;或s=t+s;
4).printf("jiecheng=%f\n",s);
第6题(10.0分)题号:
16
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
根据整型形参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));
}
答案:
1).for(i=2;i<=m;i++)或for(i=2;m>=i;i++)或for(i=2;ii;i++)或for(i=2;1+m>i;i++)
2).y-=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;或y=y-1/(double)(i*i);或y-=1/(double)(i*i);
3).returny;或return(y);或return(y);
第7题(10.0分)题号:
392
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
根据整型形参m,计算如下公式的值:
y=1/2+1/8+1/18+...+1/2m*m
------------------------------------------------------*/
#include"stdio.h"
doublefun(intm)
{
/**********FOUND**********/
doubley=0
inti;
/**********FOUND**********/
for(i=1;i{
/**********FOUND**********/
y=+1.0/(2*i*i);
}
return(y);
}
main()
{
intn;
clrscr();
printf("Entern:
");
scanf("%d",&n);
printf("\nTheresultis%1f\n",fun(n));
getch();
}
答案:
1).doubley=0;
2).for(i=1;i<=m;i++)
3).y+=1.0/(2*i*i);
第8题(10.0分)题号:
437
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的
最大的n。
------------------------------------------------------*/
#include"string.h"
main()
{
intn,s;
/**********FOUND**********/
s==n=0;
/**********FOUND**********/
while(s>1000)
{
++n;
s+=n*n;
}
/**********FOUND**********/
printf("n=%d\n",&n-1);
getch();
}
答案:
1).s=n=0;
2).while(s<=1000)
3).printf("n=%d\n",n-1);
第9题(10.0分)题号:
375
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
根据整型形参m,计算某一数据项的值。
y=1/(100*100)+1/(200*200)+1/(300*300)+……+1/(m*m)
例如:
若m=2000,则应输出:
0.000160。
------------------------------------------------------*/
#include
#include
/**********FOUND**********/
fun(intm)
{
doubley=0,d;
inti;
/**********FOUND**********/
for(i=100,i<=m,i+=100)
{
d=(double)i*(double)i;
/**********FOUND**********/
y+=1.0\d;
}
return(y);
}
main()
{
intn=2000;
clrscr();
printf("\nTheresultis%lf\n",fun(n));
}
答案:
1).doublefun(intm)
2).for(i=100;i<=m;i+=100)
3).y+=1.0/d;
第10题(10.0分)题号:
12
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
用下面的和式求圆周率的近似值。
直到最后一项的绝对值
小于等于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"或#include
2).floats=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;
3).while(fabs(t)>1e-4)或while(0.00010.0001)
4).printf("pi=%f\n",s*4);
第11题(10.0分)题号:
13
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
求1到10的阶乘的和。
------------------------------------------------------*/
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;
}
答案:
1).for(i=1;i<=10;i++)或for(i=1;10>=i;i++)或for(i=1;i<11;i++)或for(i=1;11>i;i++)
2).s=s+fac(i);或s+=fac(i);或s=fac(i)+s;
3).floaty=1.0;或floaty=1;
4).returny;或return(y);或return(y);
第12题(10.0分)题号:
408
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
写计算级数ex=1+x+x2/2!
+x3/3!
+...+xn/n!
的值。
------------------------------------------------------*/
#include"stdio.h"
main()
{
intm,n;
floatx,term,ex1,ex2;
printf("x,m=");
scanf("%f%d",&x,&m);
/**********FOUND**********/
ex1==ex2=1;
term=1;
for(n=1;n<=m;n++)
{
/**********FOUND**********/
term*=x%n;
ex1+=term;
}
ex2=term;
/**********FOUND**********/
for(n=m;n>1;n--)
{
term*=n/x;
ex2+=term;
}
printf("exforward=%fexbackrard=%f\n",ex1,ex2);
getch();
}
答案:
1).ex1=ex2=1;
2).term*=x/n;
3).for(n=m;n>=1;n--)
第13题(10.0分)题号:
352
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
根据整型形参m,计算如下公式的值:
y=1+1/3+1/5+1/7+...+1/(2m-3)
------------------------------------------------------*/
#include"stdio.h"
doublefun(intm)
{
/**********FOUND**********/
doubley=1
inti;
/**********FOUND**********/
for(i=1;i/**********FOUND**********/
y+=1.0/(2i-3);
return(y);
}
main()
{
intn;
clrscr();
printf("Entern:
");
scanf("%d",&n);
printf("\nTheresultis%1f\n",fun(n));
getch();
}
第14题(10.0分)题号:
438
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n
------------------------------------------------------*/
#include
voidmain()
{
/**********FOUND**********/
inti,s;p,n;
printf("Entern:
\n");
/**********FOUND**********/
scanf("%d",n);
/**********FOUND**********/
for(s=p=0,i=1;is+=p+=i;
printf("S=%d\n",s);
getch();
}
答案:
1).inti,s,p,n;
2).scanf("%d",&n);
3).for(s=p=0,i=1;i<=n;i++)
第15题(10.0分)题号:
366
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
求出以下分数序列的前n项之和。
和值通过函数值返回main
函数。
2/1+3/2+5/3+8/5+13/8+21/13……
例如:
若n=5,则应输出:
8.391667。
------------------------------------------------------*/
#include
#include
/**********FOUND**********/
fun(intn)
{
inta,b,c,k;doubles;
s=0.0;a=2;b=1;
for(k=1;k<=n;k++)
{
/**********FOUND**********/
s=(double)a/b;
c=a;
a=a+b;
b=c;
}
/**********FOUND**********/
returnc;
}
main()
{
intn=5;
clrscr();
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;
第16题(10.0分)题号:
6
/*------------------------------------------------------
【程序改错】
----------