AppleBJTU 发表于 2017-11-9 11:25:50

请问一下这道题...

#include <stdio.h>
int main ()
{
        int a,b,c,d;
        double x=1;
        printf("请输入四个系数");
        while(scanf("%d%d%d%d",&a,&b,&c,&d)==1);{
                if(x==1){
                        x=1-(a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c);
                }
                else
                        x=x-(a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c);
        ++x;
        printf("输入Ctrl+Z来结束循环");
        }
        printf("%f",x);
        return 0;
}

运行不出来,烦请指教学习。

BngThea 发表于 2017-11-9 11:45:40

把scanf里面的==1改成==4
明明是有四个值好吗

BngThea 发表于 2017-11-9 11:46:20

while那一行的分号也去掉

ba21 发表于 2017-11-9 11:47:10

AppleBJTU 发表于 2017-11-9 11:54:27

BngThea 发表于 2017-11-9 11:45
把scanf里面的==1改成==4
明明是有四个值好吗

scanf=1不是有效的意思吗?
是值得个数吗?

AppleBJTU 发表于 2017-11-9 11:58:54

ba21 发表于 2017-11-9 11:47


老师说牛顿迭代法好像不是我这样写的。。

BngThea 发表于 2017-11-9 11:59:39

scanf里面有几个输入就会返回数字几
你经常看到==1是因为里面只读取一个输入

AppleBJTU 发表于 2017-11-9 12:00:27

ba21 发表于 2017-11-9 11:47


是我说的有问题,不能说运行不出来,是需要循环连续输入,最后CtrlZ结束,但是输入一组以后就自动结束了

AppleBJTU 发表于 2017-11-9 12:02:26

BngThea 发表于 2017-11-9 11:59
scanf里面有几个输入就会返回数字几
你经常看到==1是因为里面只读取一个输入

哦哦,现在运行没问题了,请问这道题我这么编写是否正确呢?

BngThea 发表于 2017-11-9 12:14:46

AppleBJTU 发表于 2017-11-9 12:02
哦哦,现在运行没问题了,请问这道题我这么编写是否正确呢?

不知道你具体要干什么,所以代码思路不知道正确与否
语法上最后一个printf里面用%lf

AppleBJTU 发表于 2017-11-9 13:57:39

BngThea 发表于 2017-11-9 12:14
不知道你具体要干什么,所以代码思路不知道正确与否
语法上最后一个printf里面用%lf

.用牛顿迭代法求方程f(x)=ax^3+bx^2+cx+d=0在1附的实根,系数a,b,c,d的值依次为1,2,3,4由主函数输入,求出根后由主函数输出。
牛顿迭代法迭代公式是:
.
从预先给定的初值(如本例的初值x0=1)出发,反复使用上面这个迭代公式,可以求出方程的根的近似值。


忘了粘题目了。。如果有空的话麻烦您看一下对不对吧

BngThea 发表于 2017-11-9 14:05:07

具体实现结果你可以自行测试,但是x是double类型,尽量不要进行自增运算

AppleBJTU 发表于 2017-11-9 20:05:47

BngThea 发表于 2017-11-9 14:05
具体实现结果你可以自行测试,但是x是double类型,尽量不要进行自增运算

好的,谢谢
页: [1]
查看完整版本: 请问一下这道题...