第1周 C语言及程序设计初步 例程-7 问题求解方法——迭代
2016-04-02 10:56
260 查看
1、问题及代码:
运行结果:
2、同上另解:
3、求级数公式(精确到小数点后5位)
4、另一个正解:
知识总结:
熟悉一个新的函数fabs();
学习心得:
对级数的概念不太清楚,需要多了解学习这方面的知识。
求级数公式的另一个正解里,为何不需要调用<math.h>,while()里不是有用fabs()函数吗,不调用如何判断真假呢。
还有,sum=sum+term;
term=term*(-1)*x*x/((2*i)*(2*i-1)); //即,相当于是前面的两个语句对调,这样sum的值为何会一样呢?
/* *copyright(c)2016,时缔实验室 *All rights reserved. *文件名称: fn.c *作 者: 时帝 *完成日期: 2016年4月2日 *版 本 号: v1.0 * *问题描述:求Fibonacci(斐波那契)数列前40个数; 0,1,1,2,3,5,8,13,21…(第三个数为前两个数之和) *输入描述:不需要输入; *程序输出:前40个数; */ #include <stdio.h> int main() { long f1,f2,fn; int i; f1=f2=1; printf("%ld\t%ld\t",f1,f2);//t,横向跳到下一制表符位置。 for(i=3; i<=40; i++) { fn=f1+f2; printf("%ld\t",fn); if(i%5==0)// 当i%5==0为真时执行下面的换行。 printf("\n"); f1=f2;//将原先后面的数赋值给另一组两个数的前一个数 f2=fn;//将前面两数之和赋值给下一组的第二个数。 } return 0; }
运行结果:
2、同上另解:
/* *copyright(c)2016,时缔实验室 *All rights reserved. *文件名称: f.c *作 者: 时帝 *完成日期: 2016年4月2日 *版 本 号: v1.0 * *问题描述:求Fibonacci(斐波那契)数列前40个数; 0,1,1,2,3,5,8,13,21…(第三个数为前两个数之和) *输入描述:不需要输入; *程序输出:前40个数; */ #include <stdio.h> int main() { long f1,f2;//到后面数会很大需用long; int i; f1=f2=1; for(i=1; i<=20; i++)//i=1定义初始值,1<=20,为何结果也是有40代 { printf("%ld\t%ld\t",f1,f2); if(i%2==0) printf("\n"); f1=f1+f2;//左f1代表第3个数,是第1、2数之和 f2=f1+f2;//左f2代表第4个数,是第2、3数之和 } return 0; }
3、求级数公式(精确到小数点后5位)
/* *copyright(c)2016,时缔实验室 *All rights reserved. *文件名称: sum.c *作 者: 时帝 *完成日期: 2016年4月2日 *版 本 号: v1.0 * *问题描述:求级数公式(精确到小数点后5位); *输入描述:输入一个值; *程序输出:输出结果; */ #include <stdio.h> #include <math.h> int main() { double x, sum=1, term=1; int i=1;//一定要赋初值 scanf("%lf", &x); while(fabs(term)>=1e-5)//fabs()函数表示,求浮点数绝对值的函数。 { term=term*(-1)*x/((2*i)); sum=sum+term; i++; } printf("输出sum的结果是%f\n", sum); return 0; }
4、另一个正解:
/* *copyright(c)2016,时缔实验室 *All rights reserved. *文件名称: sum.c *作 者: 时帝 *完成日期: 2016年4月2日 *版 本 号: v1.0 * *问题描述:求级数公式(精确到小数点后5位); 0,1,1,2,3,5,8,13,21…(第三个数为前两个数之和) *输入描述:输入一个数; *程序输出:输出结果; */ #include <stdio.h> int main() { double x, sum=1, term=1; int i=1;//一定要赋初值 scanf("%lf", &x); while(fabs(term)>=1e-5)//为何同样调用了该函数,却可以不用<math.h>头文件?没有调用怎么判断? { sum=sum+term; term=term*(-1)*x/((2*i)); i++; } printf("%f\n", sum); return 0; }
知识总结:
熟悉一个新的函数fabs();
学习心得:
对级数的概念不太清楚,需要多了解学习这方面的知识。
求级数公式的另一个正解里,为何不需要调用<math.h>,while()里不是有用fabs()函数吗,不调用如何判断真假呢。
还有,sum=sum+term;
term=term*(-1)*x*x/((2*i)*(2*i-1)); //即,相当于是前面的两个语句对调,这样sum的值为何会一样呢?
相关文章推荐
- C语言18个经典问题答录
- C++ 判断double变量是否为0
- [leetcode]326. Power of Three(c语言)
- 测试某一段程序运行时间的方法
- C++统计一个文件中每个数字字符(0~9)出现的次数
- C语言中的强符号和弱符号(变量篇)
- 第1周 C语言及程序设计初步 例程-6 用循环累加
- 一起talk C栗子吧(第一百三十五回:C语言实例--exec系列函数一)
- c++ 复数类
- 【笔试/面试】—— 奇葩 C/C++ 语法题
- C++类静态成员的使用
- C++开源库
- c++面试题
- C++智能指针与返回局部指针测试
- 第十七章,txt文件的写入和读取数据结合练习(C++)
- C++中const用法总结
- CSP考试 2014年12月第2题 Z字形扫描 C语言实现
- 如何实现函数来处理可变参数
- 扩展Python__在python脚本中使用其他语言(c/c++/java/c#)编写的模块
- c++中的动态内存管理