编程求方程
Ⅰ 求方程的解(与编程有关)
input "输入a" to a
input "输入b" to b
input "输入c" to c
p=b*b-4*a*c
if p>=0
x1=(-b+sqrt(p))/(2*a)
x2=(-b-sqrt(p))/(2*a)
?"x1=",x1
?"x2=",x2
else
?"无实数根"
endif
可以解任何二元一次方程
(a=8;b=-9;c=2)
Ⅱ 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);
}
Ⅲ 编写函数程序求方程解
#include <iostream>
using namespace std;
int main()
{
double a,b,c;
cout << "构造一个一元二次方程ax2+bx+c=0:" << endl;
cout << "a = ";
cin >> a;
cout << "b = ";
cin >> b;
cout << "c = ";
cin >> c;
double x,x1,x2;
double delta = b*b - 4*a*c;
if(a == 0)
{
if(b == 0)
cout << "方程无解" << endl;
else
{
x = (double)(-c)/b;
cout << "x = " << x << endl;
}
}
else
{
if(b == 0)
{
if(c > 0)
cout << "方程无解" << endl;
else
{
x1 = +sqrt((-c)/a);
x2 = -sqrt((-c)/a);
cout << "x1 = " << x1 << " ,x2 = " << x2 << endl;
}
}
else
{
if(delta < 0)
cout << "方程无解" << endl;
else if(delta == 0)
{
x = (-(b/(2*a)));
cout << "x = " << x << endl;
}
else
{
x1 = ((-b)+sqrt(delta))/(2*a);
x2 = ((-b)-sqrt(delta))/(2*a);
cout << "x1 = " << x1 << ",x2 = " << x2 << endl;
}
}
}
return 0;
}
Ⅳ 编程求ax2+bx+c=0方程的根,要求a,b,c从键盘入手,程序中求出方程的所有解
#include "stdio.h"
#include "math.h"
void main()
{
float a;
float b;
float c;
//定义一元二次方程3个系数
float x1, x2;
//存一元二次方程的解
float delta ;
//存一元二次方程的判根式
/*从用户处获取输入*/
printf("分别输入3个系数:\n");
scanf("%f%f%f", &a, &b, &c );
delta= b*b - 4*a*c;
printf("△=%f",delta);
if ( delta > 0 )
{
x1 = ( -b + sqrt(delta) ) / (2*a);
x2 = ( -b - sqrt(delta) ) / (2*a);
printf("此方程有两个不同解:\n" );
printf("x1 = %f, x2 = %f\n", x1, x2);
}
else if ( delta == 0)
{
x1 = (-b) / (2*a);
x2 = x1;
printf("此方程有一个解:\n");
printf("x1 = x2 = %f \n", x1);
}
else
{
printf("方程无解\n");
}
}
Ⅳ C语言编程,求一元二次方程 ax2+bx+c=0 的解,谢谢
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
for (int i=0;i<2;i++)
{
double a,b,c,delta,p,q;
cin>>a>>b>>c;
delta=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(fabs(delta))/(2*a);
if (delta>=0)
cout<<p+q<<endl<<p-q<<endl;
else
{
cout<<p<<"+j"<<q;
cout<<endl<<p<<"-j"<<q<<endl;
}
}
return 0;
}
(5)编程求方程扩展阅读:
return表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。
如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
如果函数名前有返回类型定义,如int,double等就必须有返回值,而如果是void型,则可以不写return,但这时即使写了也无法返回数值。
Ⅵ C语言编程,求方程根,求大神帮帮忙
x1=[-b-√(b²-4ac)]/2a,x2=[-b+√(b²-4ac)]/2a
需要包含头文件math.h 其中x1和x2为输出
void (int a, int b,int c,double *x1,double* x2)
{
x1 = (0-b-sqrt(b*b - 4*a*c))/(2*a);
x2 = (0-b+sqrt(b*b - 4*a*c))/(2*a);
}
Ⅶ java编程:输入a,b,c,求方程 ax^2+bx+c=0 的解.(提示:可使用Math.pow()方法)
代码供参考,有空多学习,祝好运
importjava.util.Scanner;
publicclassequation2{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("请输入abc:");
doublea,b,c;
a=sc.nextDouble();
b=sc.nextDouble();
c=sc.nextDouble();
doubled=b*b-4*a*c;
if(d==0){
System.out.println("x="+(-b)/(2*a));
}
elseif(d<0){
System.out.println("无解");
}
else{
System.out.println("x1="+(-b+Math.sqrt(d))/(2*a));
System.out.println("x2="+(-b-Math.sqrt(d))/(2*a));
}
}
}
Ⅷ 求编程解一个简单的方程。急!
................无法编出 ,问题描述不对,一眼看去“=”都出现了是赋值表达式,而b又是变量,问题问的就有问题
Ⅸ 编程 关于求方程解的简单方法
枚举法,穷举法
Ⅹ 用c语言编程求线性方程组的解
给,下面的代码已经编译运行确认,肯定好用了,试试吧:)
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define
number
20
#define
esc
0x1b
#define
enter
0x0d
float
a[number][number+1]
,ark;
int
flag,n;
void
exchange(int
r,int
k);
float
max(int
k);
void
message();
int
main()
{
float
x[number];
/*此数组用于存放方程解*/
int
k,i,j;
char
celect;
system("cls");
printf("\n用gauss列主元消元法解线性方程组");
printf("\n1.解方程组请按enter.");
printf("\n2.退出程式请按esc.");
celect=getch();
if(celect==esc)
exit(0);
printf("\n
输入方程组的维数:n=");
scanf("%d",&n);
printf("\n现在输入系数矩阵a和向量b:");
for(i=1;i<=n;i++)
{
printf("\n请输入a%d1--a%d%d系数和向量b%d:
\n",i,i,n,i);
/*实现将每一行中的系数和向量一次性输入,数之间用空格格开,输完后回车确定*/
for(j=1;j<=n+1;j++)
/*将刚才输入的数存入数组*/
scanf("%f",&a[i][j]);
}
for(k=1;k<=n-1;k++)
{
ark=max(k);
if(ark==0)
/*判断方程是否为线性方程,即是否合法*/
{
printf("\n此方程组不合法!");message();
}
else
if(flag!=k)
exchange(flag,k);
for(i=k+1;i<=n;i++)
for(j=k+1;j<=n+1;j++)
a[i][j]=a[i][j]-a[k][j]*a[i][k]/a[k][k];
}
x[n]=a[n][n+1]/a[n][n];
for(
k=n-1;k>=1;k--)
{
float
me=0;
for(j=k+1;j<=n;j++)
{
me=me+a[k][j]*x[j];
}
x[k]=(a[k][n+1]-me)/a[k][k];
}
for(i=1;i<=n;i++)
{
printf("\nx%d=%f",i,x[i]);
}
message();
getch();
return
1;
}
void
exchange(int
r,int
k)
/*交换行的矩函数*/
{
int
i;
for(i=1;i<=n+1;i++)
a[0][i]=a[r][i];
for(i=1;i<=n+1;i++)
a[r][i]=a[k][i];
for(i=1;i<=n+1;i++)
a[k][i]=a[0][i];
}
float
max(int
k)
/*比校系数大小的函数*/
{
int
i;
float
temp=0;
for(i=k;i<=n;i++)
if(fabs(a[i][k])>temp)
{
temp=fabs(a[i][k]);
flag=i;
}
return
temp;
}
void
message()
/*实现菜单选择的函数*/
{
printf("\n
继续运算按
enter
,退出程式按
esc!");
switch(getch())
{
case
enter:
main();
case
esc:
exit(0);
default:{printf("\n不合法的输入!");message();}
}
}