鱼C论坛

 找回密码
 立即注册
查看: 3068|回复: 5

大佬们这个我实在看不懂什么意思

[复制链接]
发表于 2021-11-3 22:53:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用牛顿迭代法求解一元三次方程ax^3+bx^2+cx+d=0在2.5附近的根。

输入
有一组数据包含4个实数,分别为a、b、c、d的值。
输出
方程的根。保留3位小数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-3 23:14:18 | 显示全部楼层
这个我看了同学的代码我有点看不懂了
#include<stdio.h>
#include<math.h>
int main()
{
    double a,b,c,d,x,f,f1,x1;
    scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
    x=2.5;
    do{
        x=x1;
        f=a*x1*x1*x1+b*x1*x1+c*x1+d;
        f1=3*a*x1*x1+2*b*x1+c;
        x=x1-(f/f1);
    }
    while(fabs(x-x1)<0.000001);
    printf("%.3lf",x);
    return 0;
}
哪个x1不是没赋值吗,为什么这个能编码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-4 07:24:51 | 显示全部楼层
全局变量和局部静态变量如果没有初始化的话,会默认初始值为0,x1是局部变量,没有初始化,初始值会默认为0;
但是会有一个警告

但是,如果将x1初始化为0后没有警告
#include<stdio.h>
#include<math.h>
int main()
{
    double a,b,c,d,x,f,f1,x1;
    scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
    x=2.5;
    x1 = 0;
    do{
        x=x1;
        f=a*x1*x1*x1+b*x1*x1+c*x1+d;
        f1=3*a*x1*x1+2*b*x1+c;
        x=x1-(f/f1);
    }
    while(fabs(x-x1)<0.000001);
    printf("%.3lf",x);
    return 0;
}
11.04.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-5 20:33:25 | 显示全部楼层
此方星河 发表于 2021-11-4 07:24
全局变量和局部静态变量如果没有初始化的话,会默认初始值为0,x1是局部变量,没有初始化,初始值会默认为0 ...

只有全局变量和局部静态变量默认值才是 0,x1 是局部变量,怎样知道它是静态变量(static var)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-5 20:34:48 | 显示全部楼层
此方星河 发表于 2021-11-4 07:24
全局变量和局部静态变量如果没有初始化的话,会默认初始值为0,x1是局部变量,没有初始化,初始值会默认为0 ...

报错已经说明一切,表示 x1 没有初始化,不算静态啊~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-6 07:49:43 | 显示全部楼层
傻眼貓咪 发表于 2021-11-5 20:34
报错已经说明一切,表示 x1 没有初始化,不算静态啊~

哦哦,好的,了解了,谢谢了大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-28 02:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表