程序举例 1用π/4≈1-1/3+1/5-1/7+.公式求T 的近似值,直到最后一项的绝对值小 于10-6为止
程序举例 1.用π/4≈1-1/3+1/5-1/7+…公式求π 的近似值,直到最后一项的绝对值小 于10-6为止
解题方法:根据公式π14≈1-13+1/5-1/7+,找出其中 规律 1-173115-17 分子是1和-1交替出现,分母是奇数13.57 定义ints,n,t;s代表分子n代表分母t代表sn 怎么样写出表达式t是本题的关键
解题方法:根据公式π/4≈1-1/3+1/5-1/7+…找出其中 规律 1 -1/3 1/5 -1/7 … 分子是1和-1交替出现,分母是奇数1.3.5.7… 定义 int s,n,t; s代表分子 n代表分母 t代表 s/n 怎么样写出表达式t是本题的关键
很明显,这个题目要求使用循环。我们在编写程 序的时候一般考虑使用 while,还是for首先考虑使 用for! 本题使用whe要简单些 While(fabs(t>1e-6) [Pi=Pi+t; n=n+2; s=-s; t=s/n;
▪ 很明显,这个题目要求使用循环。我们在编写程 序的时候一般考虑使用while,还是for,首先考虑使 用for! 本题使用while要简单些。 While(fabs(t)> 1e-6) {Pi=Pi+t; n=n+2; s=-s; t=s/n; }
完整程序如下 include maino int S, float n, t, Pi t=1;Pi=0;n=10;S=1 while((fabs (t)>1e-6 [Pi=Pi+t n=n+2; SE-S, t=S/n PiPI*4 printf("Pi=%106f \n", Pi);3
完整程序如下 #include main() { int s; float n,t,Pi; t=1;Pi=0;n=1.0;S=1; while((fabs(t))>1e-6) {Pi=Pi+t; n=n+2; s=-s; t=S/n; } Pi=Pi*4; printf("Pi=%10.6f\n",Pi); }
2求 fibonacci数列40个数。这个数列有如下特 点:第1,2两个数为1,1。从第3个数开始, 该数是其前面两个数之和。即 f=1 (n=1 f2=1 n=2 fn=fn-1+n2(n≥3) 这是一个有趣的古典数学问题:有,对兔子 从出生后第3个月起每个月都生一对兔子。小 兔子长到第3个月后每个月文生一对兔子。假 设所有兔子都不死,问每个月的兔子总数为 多少
2.求fibonacci数列40个数。这个数列有如下特 点:第1,2两个数为1,1。从第3个数开始, 该数是其前面两个数之和。即: ▪ f1=1 (n=1) ▪ f2=1 (n=2) ▪ fn=fn-1+fn-2 (n≥3) ▪ 这是一个有趣的古典数学问题:有一对兔子, 从出生后第3个月起每个月都生一对兔子。小 兔子长到第3个月后每个月又生一对兔子。假 设所有兔子都不死,问每个月的兔子总数为 多少?
解题方法:分析 fibonacci数列的规律 f2=1 f3=1+f2=1+1=2 f4=3+2=2+1=3 f5=f4+3=3+2=5
解题方法:分析fibonacci数列的规律 f1=1 f2=1 f3=f1+f2=1+1=2 f4=f3+f2=2+1=3 f5=f4+f3=3+2=5 ……
如果在程序中,直接这样写对不对? For(n=3;n≤=40;n++) i fn=fn-1+fn-2 printf((%dn”,fn); fn=fn1+fn-2直接这样写有没有结果?
如果在程序中,直接这样写对不对? For(n=3;n<=40;n++) { fn=fn-1+fn-2 printf(“%d\n”,fn); } fn=fn-1+fn-2直接这样写有没有结果?
再分析:使用两个表达式 fl=f1+f2 f2=52+f1 f=1 f2=1 f3=2+f1=1+1=2f1=f1+f2 f4=3+f2=2+1=3f2=12+f1 f5=f4+f3=3+2=5f1=f+f2 f6={5+f4=5+3=8f2=12+f1 我们发现使用升=升2f2=f2+升1就可以实现效 果
再分析:使用两个表达式 f1=f1+f2 f2=f2+f1 f1=1 f2=1 f3=f2+f1=1+1=2 f1=f1+f2 f4=f3+f2=2+1=3 f2=f2+f1 f5=f4+f3=3+2=5 f1=f1+f2 f6=f5+f4=5+3=8 f2=f2+f1 …… 我们发现使用f1=f1+f2 f2=f2+f1就可以实现效 果
程序关键部分如下: for(i=1;i<=20;i++) printf( %ld %ld,f1, f2) fief+f2 f2=f2+f1; printi("%ld%ld",f1,f2);每次打印两个数 出来 第一次是f12 第二次是升1=f1+2相当于f3和f2=f2+1相当于 f428
程序关键部分如下: for(i=1; i<=20; i++) { printf("%ld %ld ",f1,f2); f1=f1+f2; f2=f2+f1; } printf("%ld %ld ",f1,f2); 每次打印两个数 出来 第一次是f1,f2 第二次是f1=f1+f2相当于f3和f2=f2+f1相当于 f428
完整的程序 maino long int f1, f2, int is f=1:52=1 or(=1;i=20;i++) printf(%12Id %12ld",f1, f2); if(i%2==0)printf("\n"); f1=1+f2; f2=f2+f1;
完整的程序 main() { long int f1,f2; int i; f1=1;f2=1; for(i=1; i<=20; i++) { printf("%12ld %12ld ",f1,f2); if(i%2==0) printf("\n"); f1=f1+f2; f2=f2+f1; } }