編程求方程
Ⅰ 求方程的解(與編程有關)
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();}
}
}