c语言编程~ 解方程

参照(《c程序设计(第三版)》谭浩强
著)P130
习题6.12
用牛顿迭代法求下面方程在1.5附近的根:
2x^3-4x^2+3x-6=0
答案如下:
#include
"stdio.h"
#include
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);
}

❷ 如何用C语言解二元一次方程组

设计思路如下:

1、问题描述:

给定一个二元一次方程组,形如:

a * x + b * y = c;

d * x + e * y = f;

x,y代表未知数,a, b, c, d, e, f为参数。

求解x,y。

2、数据规模和约定:

0 <= a, b, c, d, e, f <= 2147483647。

3、设计思路:

二元一次方程组是由两个含有两个未知数的方程组成的,要求解,就要把二元转化为一元。由二元一次方程组的解法思想知,要把二元转化为一元.

实现的功能代码如下:

因为在求解过程中只有数之间的运算,而没有整个式子的运算,因此这种方法被广泛地用于计算机中。

❸ 怎样用c语言求方程的解

#include <stdio.h>
int main()
{
int a,b,i,j;
for(i=0;i<10000;i++)
{
for(j=0;j<10000;j++)
{
if((66*i+127*j)==3967)
{

printf("x=%d\n",i);
b=j;

}
}
}
a=(1200-b)/25;
printf("a=%d\nb=%d\n",a,b);

return 0;
}
运行结果:
x=12
a=47
b=25
根据你的消息修改如下:
66*a+127*b=3967
25*a+b=1200

41*a+126b=2767

程序可以改为:
int main(int argc, char* argv[])
{
int i,j;
for(i=-10000;i<10000;i++)
{
for(j=-10000;j<10000;j++)
{
if((41*i+126*j)==2767)
printf("当a=%d,b=%d时,66*a+127*b=3967和25*a+b==1200两式成立\n",i,j);

}
}

return 0;
}
无数解:
a>0时b<0
反之a<0时b>0
请明确a,b取值范围;
以上也只是列举整数解;

❹ C语言 写一个解方程的程序

#include <stdio.h>
#include <math.h>

double x1,x2,p;

float file1(float a,float b)
{
x1=(-b+sqrt(p))/2*a;
x2=(-b-sqrt(p))/2*a;
return 0;
}

float file2(float a,float b)
{
x1=x2=(-b+sqrt(p))/2*a;
return 0;
}

void main()
{
float a,b,c;
printf("请依次输入方程的三个系数:\n");
scanf("%f%f%f",&a,&b,&c);
p=b*b-4*a*c;
printf("方程是:%.1f*x*x + %.1f*x + %.1f = 0\n",a,b,c);
if(p>0)
{
file1(a,b);
printf("X1=%f\tX2=%f\n",x1,x2);
}
else if(p==0)
{
file2(a,b);
printf("X1=%f\tX2=%f\n",x1,x2);
}
else printf("方程无解");
}

❺ c语言 方程组的解数

#include<stdio.h>
int fun(int m,int n)
{
int a=0;
int i,j;
for(i=0;i<m<n?m:n;i++)
{
for(j=0;j<m<n?m:n;j++)
{
if(i*i+j==n&&i+j*j==m)
a++;
}
}
return a;
}
int main()
{
int m,n,x;
FILE *fp;
fp=fopen("......","r"); //......表示文件路径
while(!feof(fp))
{
fscanf("%d",&m);
fscanf("%d",&n);
x=fun(m,n);
printf("%d",x); //没有输出到文件,只是在屏幕上输出。
}
fclose(fp);
return 0;
}

❻ C语言解方程

就是数学公式吧,牛顿迭代法。网络文库就有详细解释。

❼ C语言,求一元二次方程的解

对于如下的一元二次方程:

ax*x+bx+c=0

设计C语言程序,输入一元二次方程的三个系数a、b、c,求解出该方程的两个根,并且允许用户在程序中多次输入不同的系数,以求解不同的一元二次方程的解。

编程思路分析:

对于该方程,令delta=b^2-4*a*c,从数学的角度来讲,我们需要根据delta的值来判断该方程的根情况:

当delta>=0时,其两个根为实数解,分别为(-b+sqrt(delta))/(2*a)和(-b-sqrt(delta))/(2*a);

当delta<0时,其两个根为复数解,实部皆为-b/(2*a),虚部分别为sqrt(-delta)/(2*a)和-sqrt(-delta)/(2*a)。

其中,sqrt(delta)代表对delta作开根号运算。

在代码设计中,可定义一个结构体Complex存储该方程的根,在该结构体中包括实部和虚部两个变
在程序中,定义两个Complex类型的根x1和x2,当delta>=0时,两个根的虚部为0,否则,分别求解两个根的虚部值。
具体编程如下:

#include"stdio.h"
#include"math.h"
/*求一元二次方程ax*x+bx+c=0的解*/
main()
{floata,b,c,x1,x2,d;
printf("请输入a:");
scanf("%f",&a);
printf("请输入b:");
scanf("%f",&b);
printf("请输入c:");
scanf("%f",&c);
d=b*b-4*a*c;if(d<0)
printf("方程没有实数解。 ");
if(d==0){x1=(-b)/(2*a);
printf("x1=%f ",x1);}
if(d>0){x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f ",x1,x2);}}
请输入a:12
请输入b:34
请输入c:4
x1=-0.122985,x2=-2.710348
Pressanykeytocontinue

为迭代序列。

❽ c语言求方程

#include<stdio.h>
#include<math.h>
main()
{
抄doublea,b,c,d,x1,x2;
while(1){
袭scanf("%lf%lf%lf",&a,&b,&c);
d=b*b-4*a*c;
if(d<0)printf("此方程无实根! ");
elseif(d==0)printf("此方程有一个实根为:%lf ",-b/(2*a));
elseprintf("此方程有两个实根为分别为:%lf %lf ",(-b-sqrt(d))/(2*a),(-b+sqrt(d))/(2*a));
}
}

刚写的一个,如图所示,望点赞。。。。。。

❾ 如何用C语言程序解方程

#include"stdio.h"
#include"math.h"
/*求一元二次方程ax*x+bx+c=0的解*/
main()
{
floata,b,c,x1,x2,d;
printf("请输入a:");
scanf("%f",&a);
printf("请输入b:");
scanf("%f",&b);
printf("请输入c:");
scanf("%f",&c);
d=b*b-4*a*c;
if(d<0)
printf("方程没有实数解。 ");
if(d==0)
{
x1=(-b)/(2*a);
printf("x1=%f ",x1);
}
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f ",x1,x2);}
}
请输入a:12
请输入b:34
请输入c:4
x1=-0.122985,x2=-2.710348
Pressanykeytocontinue