大佬们这个我实在看不懂什么意思
用牛顿迭代法求解一元三次方程ax^3+bx^2+cx+d=0在2.5附近的根。输入
有一组数据包含4个实数,分别为a、b、c、d的值。
输出
方程的根。保留3位小数。 这个我看了同学的代码我有点看不懂了
#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不是没赋值吗,为什么这个能编码 全局变量和局部静态变量如果没有初始化的话,会默认初始值为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;
} 此方星河 发表于 2021-11-4 07:24
全局变量和局部静态变量如果没有初始化的话,会默认初始值为0,x1是局部变量,没有初始化,初始值会默认为0 ...
只有全局变量和局部静态变量默认值才是 0,x1 是局部变量,怎样知道它是静态变量(static var)? 此方星河 发表于 2021-11-4 07:24
全局变量和局部静态变量如果没有初始化的话,会默认初始值为0,x1是局部变量,没有初始化,初始值会默认为0 ...
报错已经说明一切,表示 x1 没有初始化,不算静态啊~ 傻眼貓咪 发表于 2021-11-5 20:34
报错已经说明一切,表示 x1 没有初始化,不算静态啊~
哦哦,好的,了解了,谢谢了大佬
页:
[1]