編程求方程的根
1. c語言編寫一個求一元二次方程的實根的程序,該怎麼寫
步驟:
打開visual C++ 6.0-文件-新建-文件-C++ Source File
2.
定義變數:
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c; /*定義系數變數*/
double x1,x2,p; /*定義根變數和表達式的變數值*/
2. 已知二元一次方程的三個系數,用C語言編程求方程的一個根
設3個系數為a、b、c,均為double型變數,其值由鍵盤輸入。先求出b*b-4*a*c之值,根據此值大於0、小於0、等於0的三種情況分別求根;還要考慮a為0,a、b均為0的具體情況。代碼如下:
#include"stdio.h"
#include"math.h"
intmain(intargc,char*argv[]){
doublea,b,c,dlt,t;
printf("Pleaseenter3coefficientsa,b&c(R:)... ");
scanf("%lf%lf%lf",&a,&b,&c);//輸入3個實數系數
if(a){//平方項系數不為0則按二次方程解
t=sqrt(sqrt((dlt=b*b-4*a*c)*dlt))/a/2,b=-b/a/2;//求√|dlt|/2a賦t和-b/2a賦b
if(dlt>0)//dlt>0時有雙實根
printf("x1=%gx2=%g ",b+t,b-t);
elseif(dlt<0)//dlt<0時有雙復根
printf("x1=%g+%gix2=%g-%gi ",b,t,b,t);
else//dlt=0時有單實根
printf("x1=x2=%g ",b);
}
elseif(!b)//a=0,b=0時無解(含無窮個解)
printf("Nosolution... ");
else//a=0,b!=0時有一次方程解
printf("x=%g ",-c/b);
return0;
}
試運行樣例如下圖:
3. C語言中求方程的根
如圖:
4. C語言編程:求1元2次方程的根
#include
"stdio.h"
#include
"math.h"
void
main()
{
printf("求方程ax^2+bx+c=0的根:\n");
L:
printf("請分別輸入a,b,c的值。\n");
double
a,b,c,x1,x2,x,y;
char
z;
printf("輸入a,b,c=");
scanf("a=%lf,b=%lf,c=%lf\n,&a,&b,&c");
printf("你所輸入的方程為%lfx^2+%lfx+%lf=0。\n",a,b,c);
M:
printf("是否正確?(是y\否n)\n");
scanf("%c",&z);
if
(z=='n')
goto
L;
else
if
(z=='y')
{
if
((b*b-4*a*c)>0)
x1=(-b+sqrt(b*b-4*a*c))/(2*a),
x2=(-b-sqrt(b*b-4*a*c))/(2*a),
printf("有兩個不同的實根:\nx1=%lf\nx2=%lf\n",x1,x2),
printf("\n");
if
((b*b-4*a*c)==0)
x1=-b/(2*a),
printf("有兩個相同的實根:\nx1=x2=%lf\n",x1),
printf("\n");
if
((b*b-4*a*c)<0)
x=-b/(2*a),
y=sqrt(4*a*c-b*b)/(2*a),
printf("有兩表個不同的曾根:\nx1=%lf+%lfi\nx2=%lf-%lfi\n",x,y,x,y),
printf("\n");
goto
L
;
}
else
printf("請正確輸入:\n");
goto
M;
}
5. C語言編程:求1元2次方程的根
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c; /*定義系數變數*/
double x1,x2,p; /*定義根變數和表達式的變數值*/
printf("請輸入a,b,c:"); /*提示用戶輸入三個系數*/
scanf("%lf%lf%lf",&a,&b,&c); /*接收用戶輸入的系數*/
printf(" "); /*輸出回行*/
p=b*b-4*a*c; /*給表達式賦值*/
x1=(-b+sqrt(p))/(2*a); /*根1的值*/
x2=(-b-sqrt(p))/(2*a); /*跟2的值*/
printf("x1=%f,x2=%f ",x1,x2); /*輸出兩個根的值*/
}
拓展資料
在實際的求法中,一般還需要判斷有無實根,這是可以通過p的值來判斷
6. C語言編程 二分法求方程的根
這段代碼是求解方程f(x)=0在區間[-10,10]上的根的數值解。
方法的思想就是:一直選取區間中間的數值,如果發現中間的函數值與一側函數值,異號,那麼說明解在這個更小的區間中,採用eps=1e-5作為區間的極限大小,通過迭代的方法求解這個方程的數值解。
所以了解了上述思想,那麼else
if(f(a)*f(c)<0)
b=c;
說明的是
f(a)和f(c)異號,那麼使用b=(a+b)/2縮小迭代區間,繼續迭代;同理else
a=c;說明f(a)和f(c)同號,那麼使用a(a+b)/2縮小迭代區間,繼續迭代!
7. 用C語言編寫一程序求解一元二次方程的根。
#include<stdio.h>
#include<math.h>
void m(float a,float b,float c)
{
double x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("方程的根是%.2lf和%.2lf",x1,x2);
}
void n(float a,float b,float c)
{
double x;
x=(-b)/(2*a);
printf("方程的根為%.2lf",x);
}
void f(float a,float b,float c)
{
printf("方程無實數根\n");
}
main()
{
float a,b,c;
printf("請輸入a,b,c的值\n");
scanf("%f%f%f",&a,&b,&c);
if(b*b-4*a*c>0)
m(a,b,c);
if(b*b-4*a*c==0)
n(a,b,c);
if(b*b-4*a*c<0)
f(a,b,c);
}
8. 用C語言中,如何用調用函數編寫求一元二次方程的根
int GetRoot(float a, float b, float c ,double* root){
double delta, deltasqrt ;
delta = b* b - 4*a*c ;
if(delta<0) return 0 ;
deltasqrt = sqrt(delta) ;
if (a!=0.0){
root[0] = (deltasqrt - b)/(2.0*a) ;
root[1] = (-deltasqrt - b)/(2.0*a) ;
}
if (root[0] == root[1]) return 1;
else return 2 ;
}
int main(void){
//計算方程的根
float a = 2.0,b =6.0,c=3.0 ;//a,b,c s是參數
double root[2] ;//root是得到的兩個根
int n = GetRoot(a,b,c,root) ;
if (n<1){
printf("方程無根") ;
}else{
printf("方程的解為:%f,%f",root[0],root[1]) ;
}
}
(8)編程求方程的根擴展閱讀:
C語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括一些類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。
C語言特點:
(1)簡潔的語言
C語言包含有各種控制語句僅有9種,關鍵字也只有32
個,程序的編寫要求不嚴格且多以小寫字母為主,對許多不必要的部分進行了精簡。實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。
(2)具有結構化的控制語句
C語言是一種結構化的語言,提供的控制語句具有結構化特徵,如for語句、if⋯else語句和switch語句等。可以用於實現函數的邏輯控制,方便麵向過程的程序設計。
(3)豐富的數據類型
C語言包含的數據類型廣泛,不僅包含有傳統的字元型、整型、浮點型、數組類型等數據類型,還具有其他編程語言所不具備的數據類型,其中以指針類型數據使用最為靈活,可以通過編程對各種數據結構進行計算。
(4)豐富的運算符
C語言包含34個運算符,它將賦值、括弧等均視作運算符來操作,使C程序的表達式類型和運算符類型均非常豐富。
(5)可對物理地址進行直接操作
C語言允許對硬體內存地址進行直接讀寫,以此可以實現匯編語言的主要功能,並可直接操作硬體。C語言不但具備高級語言所具有的良好特性,又包含了許多低級語言的優勢,故在系統軟體編程領域有著廣泛的應用。
(6)代碼具有較好的可移植性
C語言是面向過程的編程語言,用戶只需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬體,且針對不同的硬體環境,在用C語言實現相同功能時的代碼基本一致,不需或僅需進行少量改動便可完成移植,這就意味著,對於一台計算機編寫的C程序可以在另一台計算機上輕松地運行,從而極大地減少了程序移植的工作強度
(7)可生成的高質量目標代碼,高執行效率的程序
與其他高級語言相比,C語言可以生成高質量和高效率的目標代碼,故通常應用於對代碼質量和執行效率要求較高的嵌入式系統程序的編寫。
9. c語言編程,求方程的根,在線等,急
使用二分法求解f(x)=x^3-x-1=0在區間(1,2)上的解
(2011-05-12 22:32:32)
轉載▼
標簽:
二分法
區間
函數
方程
求解
計算方法
雜談
分類: C
//使用二分法求解f(x)=x^3-x-1=0在區間(1,2)上的解
#include<iostream.h>
#include<math.h>
const double eps=0.000001; //對於精度的控制
//為方便的代碼的書寫,故編寫此函數,以此求得此函數值
double f(double x)
{
return pow(x,3)-x-1; //當函數發生改變時,修改此處即可
}
//解的具體實現的函數
void solequ(double min,double max,double eps)
{
double temp;
if(f(min)*f(max)<0)//判斷方程在此區間是否有解
{ //有解的情況的求解過程
while(f(max)!=0)
{
temp=(min+max)/2;
if(f(temp)*f(min)<0)
{
max=temp;
if(fabs(f(max)-f(min))<eps)
break;
}
else
{
min=temp;
if(fabs(f(max)-f(min))<eps)
break;
}
}
cout<<"方程的解為: "<<temp<<endl;
}
else //無解的處理
cout<<"此方程在此區間上無解"<<endl;
}
//主函數入口
int main()
{
double min,max,temp;
cout<<"請輸入積分下限: ";
cin>>min;
cout<<"請輸入積分上限: ";
cin>>max;
if(min>max) //對於用戶輸入次序相反的處理
{
temp=max;
max=min;
min=temp;
}
solequ(min,max,eps);
return 0;
}
你參考下這個程序,二分法