累加累乘.docx
- 文档编号:5262148
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:32
- 大小:20.60KB
累加累乘.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;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.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;i s+=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 /*------------------------------------------------------ 【程序改错】 ----------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 累加