
展开全部
采用C语言编程解方程,有两种情况:
1 简单的方程,比如一元一次方程,或者多元一次方程,以及一元二次方程等,这类数学上有固定的解题方法的,可以在程序中输入参数,并按照数学方法,进行求解。
2 复杂的方程,比如高次方程,或者积分方程等,对于这类问题,在数学上有着自己的解法,但是移植到计算机中操作会比较繁琐,不易于编程实现。所以这类方程在计算机领域中,专门开发了更高效的算法,不适于笔算,但更符合计算机的工作方式。这时需要查找或学习对应算法并实现。
1 简单的方程,比如一元一次方程,或者多元一次方程,以及一元二次方程等,这类数学上有固定的解题方法的,可以在程序中输入参数,并按照数学方法,进行求解。
2 复杂的方程,比如高次方程,或者积分方程等,对于这类问题,在数学上有着自己的解法,但是移植到计算机中操作会比较繁琐,不易于编程实现。所以这类方程在计算机领域中,专门开发了更高效的算法,不适于笔算,但更符合计算机的工作方式。这时需要查找或学习对应算法并实现。
推荐于2017-09-14
展开全部
对于这类问题,可以使用穷举法:
#include <stdio.h>
void main()
{
int x,y,z,n;
scanf("%d",&n); //输入n的值
for(x=0;x<n;x++)
for(y=0;y<n;y++)
{
z=100-x,y;
if(5*x+3*y+z/3.0==n)
printf("%d,%d,%d\n",x,y,z);//输出解
}
}
运行结果:
100
4,16,96
13,2,87
#include <stdio.h>
void main()
{
int x,y,z,n;
scanf("%d",&n); //输入n的值
for(x=0;x<n;x++)
for(y=0;y<n;y++)
{
z=100-x,y;
if(5*x+3*y+z/3.0==n)
printf("%d,%d,%d\n",x,y,z);//输出解
}
}
运行结果:
100
4,16,96
13,2,87
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我的编译正常呀,你的是什么编译器呀?
我给你编写个吧??呵呵
好象找到问题了 scanf("%f%f%f",&a,&b,&c);应改为scanf("%lf%lf%lf",&a,&b,&c);%f对应的是float;%lf对应的才是double
printf("x1=%.2f,x2=%.2f\n",x1,x2);这个也一样要改下
我编写的编译过的正常的哦给你了
#include<stdio.h>
#include<math.h>
main()
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
if(0==a&&0>b*b-4*a*c)
puts("没有实数根");
if(b*b-4*a*c>0)
{
puts("有两个不相等的实数根");
printf("x1=%lf,X2=%lf",(-b+sqrt(b*b-4*a*c))/2*a,(-b-sqrt(b*b-
4*a*c))/2*a);
}
if(0==b*b-4*a*c)
{
puts("有两个相等的实数根");
printf("x1=x2=%lf",(-b+sqrt(b*b-4*a*c))/2*a);
}
getch();
}
我给你编写个吧??呵呵
好象找到问题了 scanf("%f%f%f",&a,&b,&c);应改为scanf("%lf%lf%lf",&a,&b,&c);%f对应的是float;%lf对应的才是double
printf("x1=%.2f,x2=%.2f\n",x1,x2);这个也一样要改下
我编写的编译过的正常的哦给你了
#include<stdio.h>
#include<math.h>
main()
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
if(0==a&&0>b*b-4*a*c)
puts("没有实数根");
if(b*b-4*a*c>0)
{
puts("有两个不相等的实数根");
printf("x1=%lf,X2=%lf",(-b+sqrt(b*b-4*a*c))/2*a,(-b-sqrt(b*b-
4*a*c))/2*a);
}
if(0==b*b-4*a*c)
{
puts("有两个相等的实数根");
printf("x1=x2=%lf",(-b+sqrt(b*b-4*a*c))/2*a);
}
getch();
}

你对这个回答的评价是?
展开全部
参照(《c程序设计(第三版)》谭浩强 著)P130 习题6.12
用牛顿迭代法求下面方程在1.5附近的根:
2x^3-4x^2+3x-6=0
答案如下:
#include "stdio.h"
#include<math.h>
void main()
{
double f(double x);
double x1=-10.0,x2=10.0,xx;
while(1)
{
xx=(x1+x2)/2;
if(fabs(f(xx)-0)<1e-5)break;
if(f(xx)>0)x2=xx;
if(f(xx)<0)x1=xx;
}
printf("one foot of x is %f\n",xx);
}
double f(double x)
{
return (2*x*x*x-4*x*x+3*x-6);
}
用牛顿迭代法求下面方程在1.5附近的根:
2x^3-4x^2+3x-6=0
答案如下:
#include "stdio.h"
#include<math.h>
void main()
{
double f(double x);
double x1=-10.0,x2=10.0,xx;
while(1)
{
xx=(x1+x2)/2;
if(fabs(f(xx)-0)<1e-5)break;
if(f(xx)>0)x2=xx;
if(f(xx)<0)x1=xx;
}
printf("one foot of x is %f\n",xx);
}
double f(double x)
{
return (2*x*x*x-4*x*x+3*x-6);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询