输出数列逼近√2的值 - C语言温习

来源:互联网 发布:西南交大网络教育报名 编辑:程序博客网 时间:2024/05/29 16:43
 上一篇日志还是很早很早很早以前写的,应该是在中考以前一个月还是两个月吧
  之后为了应付中考也就没有那么多的时间看有关C语言的东西
 现在都已经高一下了,谭浩强的那本C书也在中考完的那个暑假看完了,虽然说没有吃透,不过我觉得至少C语言的皮毛也是已经略知一二
 随着高中数学的学习原来很多无法理解的东西变得浅显易懂,特别是那个一元三次方程求根的程序
 这个程序是数学书上的,貌似是课改没事干写了些有关程序的东西,一般作为看着玩的东西出现,基本都被忽略,必修五的书上给了程序框图表示了这个程序的算法,在今天早上的信息课上(我们每个星期五上午最后一节课是信息)完成了这个程序,另外以后要是看到或者想到什么好算法,基本都会在这个时候写成程序
  废话不少,也是因为很久没有写博文了, 这种感觉还是挺亲切的嘛
  那么,程序如下:

#include <stdio.h>
#include <conio.h>

void main()
{
    doublea=1,e=0.1; //定义变量a为初值,e为精度
    do
    {
      printf("%.16g\n",a); //%.16g表示保留数字后16位
      if((a+e)*(a+e)<=2)
       {
          a=a+e;
       }
       else
         e=e/10;
   }while(e>0.000000000000001);//double有效数字只有16位
   getch();
}

同样还可以扩展一下
在if((a+e)*(a+e)<=2)中把2换成变量,在程序开始之前要求输入变量值,这样理论上可以输出任何无理数数列
不过最多精确到十六位有效数字
因为double型即双精度浮点数只支持到16位

      
0 0
原创粉丝点击