① c語言,求根公式
你的if語句那的括弧有問題
#include<stdio.h>
#include<math.h>
intmain(){
doublea,b,c,d,x1,x2;
scanf("%f%f%f",&a,&b,&c);
if(a==0){
if(b==0){
if(c==0)
printf("該式為恆等式 ");
else
printf("該式不成立,請重新輸入a,b,c ");
}else{
x1=c/b;
printf("x1=x2=%f ",x1);
}else
d=b*b-4*a*c;
if(d<0){
d=-d;
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f,虛根 ",x1,x2);
}else{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f ",x1,x2);
}
return0;
}
② 關於C語言中sqrt函數的運用!求解題!
k是int sqrt()返回的是float 你沒有強制類型轉換
③ c語言求根這個程序哪裡錯了
需要包含頭文件:
#include <math.h>
在linux 用gcc編譯的話需要加參數 -lm
④ C語言表編程:用二分法求一元三次方程的根 要求:又主函數調用求根子函數
二分法的基本思路是:任意兩個點x1和x2,判斷區間(x1,x2)內有無一個實根,如果f(x1)與f(x2)符號相反,則說明有一實根。接著取(x1,x2)的中點x,檢查f(x)和f(x2)是否同號,如果不同號,說明實根在(x,x2)之間,如果同號,在比較(x1,x),這樣就將范圍縮小一半,然後按上述方法不斷的遞歸調用,直到區間相當小(找出根為止)!
比如用二分法求f(x)=x^3-6x-1=0的實根。
代碼如下(已調試):
#include "math.h"
main()
{
float x,x1,x2;
float F(float x,float x1,float x2);
printf("請輸入區間[x1,x2]\n");
scanf("%f%f",&x1,&x2);
printf("x=%f\n",F(x,x1,x2));
}
float F(float x,float x1,float x2)
{
float f,f1,f2;
do
{
f1=pow(x1,3)-6*x1-1.0;
f2=pow(x2,3)-6*x2-1.0;
}while(f1*f2>0); //確保輸入的x1,x2使得f1,f2符號相反
do
{
x=(x1+x2)/2; //求x1,x2的中點
f=pow(x,3)-6*x-1.0;
if(f1*f>0) //當f與f1符號相同時
{x1=x;f1=f;}
else if(f2*f>0) //當f與f2符號相同時
{x2=x;f2=f;}
}while(fabs(f)>1e-6); //判斷條件fabs(f)>1e-6的意思是f的值非常0
return x;
}
輸入:1 5
則輸出:x=2.528918
輸入:-10 10
則輸出:x=2.528918
⑤ C語言方程求根問題不懂
這個問題如果要完整地講還是比較復雜的,簡單一點的話你就可以記住浮點數的表示和運算結果都有舍入誤差,並不一定是完全精確的。
舉個例子,double型的數據,a=0.1,
b=0.6,
c=0.9,
理論上講disc=0,但如果你不開編譯優化的話會算出disc=-5.55e-17,這樣原本兩個實根就被判定成虛根了。
當然,反過來disc很小(非0)被判定成0也是有可能的。不過不論哪種情況,只有disc<0和disc=0被混淆才是比較嚴重的問題,因為disc>=0的兩種狀態即使區分不清楚也總是對應兩個實根。
⑥ C語言求根函數是什麼
在math.h頭文件 sqrt 採納的意見和我的有區別么 哎
⑦ 簡單問題c語言 求根函數,為什麼無論輸入什麼輸出的根都一樣
sqrt的返回值類型是double型,你輸出的時候用%d當然結果是錯的了,可以試試類型轉換,把最後一個printf語句改成如下:
printf("%d\n",(int)sqrt(n));
⑧ C語言sqrt()的用法
C語言中sqrt函數的使用方法:
C語言中sqrt函數是指的開方運算函數,得到的結果是函數變數(可以是數值,也可以是變數名)的算術平方根。在VC6.0中的math.h頭文件的函數原型為doublesqrt(double)。
說明:sqrt系SquareRootCalculations(平方根計算),通過這種運算可以考驗CPU的浮點能力。
程序例:
#include
#include
intmain(void)
{
doublex=4.0,result;
result=sqrt(x);//result*result=x
printf(「Thesquarerootof%fis%f 」,x,result);
return0;
}
VC2008後為重載函數,原型為floatsqrt(float),doublesqrt(double),doublelongsqrt(doublelong)
注意沒有sqrt(int),但是返回值可以為int。
注意事項:
1.sqrt函數運行的結果是算術平方根,即不能運算出負數值,也不能輸出虛數結果。如需要得到算術平方根中的負數值,則應該在sqrt函數前添加負號。
2.sqrt函數的參數必須是非負數值,如果是負數值,則輸出會報錯,即數值無效;如果參數是未定義的非數字變數,則按回車後也會報錯,即變數名有誤。
3.sqrt函數的計算精度與C語言設置的精度有關,可以通過設置更改精度。
⑨ C語言一元三次方程求根!
z[0]=z[1]=z[2]=-c/d;
這個是除以b吧
⑩ C語言中sqrt是什麼意思有什麼用處
C語言中sqrt是求一個數的算術平方根。需要包含頭文件math.h。
sqrt(2)= 1.414213