求程序 求方程ax³+bx²+cx+d=0的根 要C语言代码
答案:2 悬赏:40 手机版
解决时间 2021-02-19 15:52
- 提问者网友:玫瑰园
- 2021-02-19 03:32
求程序 求方程ax³+bx²+cx+d=0的根 要C语言代码
最佳答案
- 五星知识达人网友:千杯敬自由
- 2021-02-19 04:50
//迭代法求一元三次方程的根,使用函数
#include
#include
double fr_root(double a, double b, double c, double d, double x)
{
double y;
while(fabs(y = a * x * x * x + b * x * x + c * x + d) > 1e-15)
x -= y / (3 * a * x * x + 2 * b * x + c);
return x;
}
int main(void)
{
double a, b, c, d, x;
char w_ch = 'y';
while('y' == w_ch || 'Y' == w_ch)
{
printf("请输入一元三次方程的系数a,b,c,d(以逗号分隔):\n");
while(4 != scanf("%lf,%lf,%lf,%lf", &a, &b, &c, &d) || 0 == a)
while('\n' != (w_ch = getchar()));
while('\n' != (w_ch = getchar()));
printf("请输入x的初始值:\n");
while(1 != scanf("%lf", &x) || fabs(3 * a * x * x + 2 * b * x + c) < 1e-15)
while('\n' != (w_ch = getchar()));
while('\n' != (w_ch = getchar()));
printf("方程%g*x*x*x+%g*x*x+%g*x+%g=0\nx =%8.3f\n", a, b, c, d, fr_root(a, b, c, d, x));
printf("继续吗(Y/N)?");
w_ch = getchar();
getchar();
printf("\n");
}
return 0;
}追问为什么这个程序我放进visual c++立面运行,输入a, b, c, d的数值然后再回车,它没有给出计算结果二是转行了……追答你先要随意猜一个x值追问
这是程序执行以后
这是输入值以后,不管怎么输入都是按“enter”键就换行了……
追答数字间不要有空格,用逗号分隔
要连续输入对4个数才有效
#include
#include
double fr_root(double a, double b, double c, double d, double x)
{
double y;
while(fabs(y = a * x * x * x + b * x * x + c * x + d) > 1e-15)
x -= y / (3 * a * x * x + 2 * b * x + c);
return x;
}
int main(void)
{
double a, b, c, d, x;
char w_ch = 'y';
while('y' == w_ch || 'Y' == w_ch)
{
printf("请输入一元三次方程的系数a,b,c,d(以逗号分隔):\n");
while(4 != scanf("%lf,%lf,%lf,%lf", &a, &b, &c, &d) || 0 == a)
while('\n' != (w_ch = getchar()));
while('\n' != (w_ch = getchar()));
printf("请输入x的初始值:\n");
while(1 != scanf("%lf", &x) || fabs(3 * a * x * x + 2 * b * x + c) < 1e-15)
while('\n' != (w_ch = getchar()));
while('\n' != (w_ch = getchar()));
printf("方程%g*x*x*x+%g*x*x+%g*x+%g=0\nx =%8.3f\n", a, b, c, d, fr_root(a, b, c, d, x));
printf("继续吗(Y/N)?");
w_ch = getchar();
getchar();
printf("\n");
}
return 0;
}追问为什么这个程序我放进visual c++立面运行,输入a, b, c, d的数值然后再回车,它没有给出计算结果二是转行了……追答你先要随意猜一个x值追问
这是程序执行以后
这是输入值以后,不管怎么输入都是按“enter”键就换行了……
追答数字间不要有空格,用逗号分隔
要连续输入对4个数才有效
全部回答
- 1楼网友:不想翻身的咸鱼
- 2021-02-19 05:07
可以试一下二分法
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯