程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言寫解一元二次方程程序心得,一元二次方程心得

C語言寫解一元二次方程程序心得,一元二次方程心得

編輯:關於C語言

C語言寫解一元二次方程程序心得,一元二次方程心得


前言:在網上看到不少解一元二次方程的小程序,在使用時總得出一大堆小數,感覺很不爽,遂自己重新寫了一遍。

首先,先回憶一下一元二次方程的求根公式:

 

 

此時同時輸出delta的值,小於0,無解。

 

當delta等於0,只有一個實數根,沒什麼好講。

 

現在涉及一個問題就是如何判斷整數

此處為了避免互相干擾,用了兩個變量,sqr用於判斷是否為整數,如果是整數,則用sqr1計算

如何判斷是否為整數呢?這裡可以利用int形和double形的性質。采用判斷(int)sqr和 (int)(sqr + 0.9999999)的大小來判斷sqr是不是整數。[double形一般精確到小數點後6 位,所以這裡用了7個9]。然後強制轉換成int型,如果為整數,(int)(sqr + 0.9999999)不會進位,x=y。不是整數,反之。

然後如果為整數,先計算sqrt(delta)後代入計算。

(2)sqrt(delta)不是整數時

對,保留根號!

 

後記:寫這一段小程序最初是為繁多的坑爹的解方程數學題所惱,想快點完成作業~~於是在那個月黑風高的晚上寫完作業後順便把這篇文章寫了。


怎用C語言編一個解一元二次方程的程序(可以看步驟)

#include <stdio.h>
#include <math.h>
int main(void)
{
int a, b, c; //定義一元二次方程的三個數值;
printf("請依次輸入一元二次方程的三個參數a b c,中間以空格隔開\n");
scanf("%d %d %d", &a, &b, &c); //依次輸入一元二次方程的三個參數
double delta = b*b - 4*a*c; //定義delta的值為b*b - 4*a*c
double x1 = (-b + sqrt(delta))/(2 * a);
double x2 = (-b - sqrt(delta))/(2 * a);

if (delta>0) //delta大於0時,方程有兩個解
{
printf("一元二次方程有兩個解\n");
printf("一元二次方程的第一個解,x1 = %f\n",x1);
printf("一元二次方程的第二個解,x2 = %f\n",x2);
}
else if (delta ==0) //delta等於0,方程有兩個相同的解
{
printf("一元二次方程有兩個相同的解\n");
printf("一元二次方程的解為x1 = x2 =%f\n",x1);
}
else //delta小於0時,方程沒有解
{
printf("一元二次方程沒有解\n");
}

return 0;
}
 

用C語言編寫程序實現一元二次方程的解?

#include <stdio.h>
#include <math.h>
void main ()
{
double sqrt(double x);
int a,b,c;
double x1,x2,x,e,d,g,f;
scanf("%d %d %d",&a,&b,&c);
d=b*b-4*a*c;
if (a==0)
{ if (b!=0)
{x=-(double)c/(double)b;
if (x==0)
{x=-x;
printf("x=%.6lf\n",x);}
else
printf("x=%.6lf\n",x);
}
else
printf("Input error!\n");}
else if (d<0)
{d=-d;
e=sqrt(d);
g=-(double)b/(2*(double)a);
f=e/(2*a);
if (g!=0)
printf("x1=%.6lf+%.6lfi\nx2=%.6lf-%.6lfi\n",g,f,g,f);
else
printf("x1=%.6lfi\nx2=-%.6lfi\n",f,f);}
else if (d==0)
{ x1=x2=-b/(2*a);
printf("x1=x2=%.6lf\n",x1);}
else
{ e=sqrt(d);
x1=(-b+e)/(2*a);
x2=(-b-e)/(2*a);
printf("x1=%.6lf\nx2=%.6lf\n",x1,x2);}
}

這個可以,但也許不夠簡便
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved