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

本文分享了一个用于求解一元三次方程的C语言程序,该程序基于高中数学知识并结合了信息技术课程中的编程技能。通过不断迭代的方法实现了数值解的逼近,并能够输出任意指定精度的有效数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

void main()
{
    double a=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位

       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值