你沒有考慮a=0的情況,我把我寫的給你看看,你看看有什么不同吧:
城步網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,城步網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為城步上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的城步做網(wǎng)站的公司定做!
#includestdio.h
#includemath.h
main()
{
int a,b,c;
double DT,x,x1,x2;
scanf("%d %d %d",a,b,c);
DT=b*b-4*a*c;
if((a==0)(b==0))
printf("Input error!\n");
else
{
if(a==0)
{ x=-c/(1.*b);
printf("x=%.6f\n",x);
}
else
{
if(DT==0)
{x=-b/(2*a);
printf("x1=x2=%.6f\n",x);
}
if(DT0)
{ x1=(-b+sqrt(DT))/(2*a);
x2=(-b-sqrt(DT))/(2*a);
printf("x1=%.6f\nx2=%.6f\n",x1,x2);
}
if((DT0)(b==0))
{DT=-DT;
x1=(sqrt(DT))/(2*a);
x2=(-sqrt(DT))/(2*a);
printf("x1=%.6fi\nx2=%.6fi\n",x1,x2);
}
if((DT0)(b!=0))
{DT=-DT;
x1=-b/(2.*a);
x2=sqrt(1.*DT)/(2*a);
printf("x1=%.6f+%.6fi\nx2=%.6f-%.6fi\n",x1,x2,x1,x2);
}
}
}
return 0;
}
具體的輸入輸出格式可能不一樣,因?yàn)椴磺宄愕囊?,有疑問可以問?/p>
#includestdio.h
#includestdlib.h
#includemath.h
int main()
{
float a,b,c,x,x1,x2,d;
scanf("%f %f %f",a,b,c);
d=b*b-4*a*c;
if(a==0)
{
if(b==0)
{
if(0==c)
{
printf("等式0!\n");
}
else
{
printf("輸入錯(cuò)誤!\n");
}
}
else
{
printf("只能構(gòu)成一元一次方程,x=%.6f\n",0==-(float)c/b ? 0 : -(float)c/b);
}
}
else
{
if(d0)
{
x1=(-b+sqrt(-d))/(2.0*a);
x2=(-b-sqrt(-d))/(2.0*a);
printf("x1=%.6f+%.6fi\nx2=%.6f-%.6fi\n",(-b)/(2.0*a),sqrt(-d)/(2.0*a),(-b)/(2.0*a),sqrt(-d)/(2.0*a));
}
else if(d==0)
{
printf("x1=x2=%.6f\n",(-b)/(2.0*a));
}
else
{
x1=(-b+sqrt(d))/(2.0*a);
x2=(-b-sqrt(d))/(2.0*a);
printf("x1=%.6f\nx2=%.6f\n",x1,x2);
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
給你重寫一個(gè)你對(duì)照看——
#include?"stdio.h"
#include?"math.h"
void?zero(float?a,float?b){
printf("x1?=?%f\n",-b/2/a);
printf("x2?=?%f\n",-b/2/a);
}
void?one(float?a,float?b,float?d){
printf("x1?=?%f\n",(-b+d)/2/a);
printf("x2?=?%f\n",(-b-d)/2/a);
}
void?two(float?a,float?b,float?d){
printf("x1?=?%f%+fi\n",-b/2/a,d/2/a);
printf("x2?=?%f%+fi\n",-b/2/a,-d/2/a);
}
int?main(int?argc,char?*argv[]){
float?a,b,c,dlt;
printf("Input?a,?b,?c(R:?all)...\n");
scanf("%f%f%f",a,b,c);
if((dlt=b*b-4*a*c)==0)
zero(a,b);
else?if(dlt0){
one(a,b,sqrt(dlt));
}
else
two(a,b,sqrt(-dlt));
return?0;
}
運(yùn)行樣例:
有問題續(xù)問。
int GetRoot(float a, float b, float c ,double* root){
double delta, deltasqrt ;
delta = b* b - 4*a*c ;
if(delta0) 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){
//計(jì)算方程的根
float ?a = 2.0,b =6.0,c=3.0 ;//a,b,c s是參數(shù)
double root[2] ;//root是得到的兩個(gè)根
int n = GetRoot(a,b,c,root) ;
if (n1){
printf("方程無根") ;
}else{
printf("方程的解為:%f,%f",root[0],root[1]) ;
}
}
擴(kuò)展資料:
C語言是一門面向過程、抽象化的通用程序設(shè)計(jì)語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。C語言是僅產(chǎn)生少量的機(jī)器語言以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的高效率程序設(shè)計(jì)語言。盡管C語言提供了許多低級(jí)處理的功能,但仍然保持著跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語言程序可在包括一些類似嵌入式處理器以及超級(jí)計(jì)算機(jī)等作業(yè)平臺(tái)的許多計(jì)算機(jī)平臺(tái)上進(jìn)行編譯。
C語言特點(diǎn):
(1)簡(jiǎn)潔的語言
C語言包含有各種控制語句僅有9種,關(guān)鍵字也只有32
個(gè),程序的編寫要求不嚴(yán)格且多以小寫字母為主,對(duì)許多不必要的部分進(jìn)行了精簡(jiǎn)。實(shí)際上,語句構(gòu)成與硬件有關(guān)聯(lián)的較少,且C語言本身不提供與硬件相關(guān)的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統(tǒng)所支持的各類庫進(jìn)行編程,故c語言擁有非常簡(jiǎn)潔的編譯系統(tǒng)。
(2)具有結(jié)構(gòu)化的控制語句
C語言是一種結(jié)構(gòu)化的語言,提供的控制語句具有結(jié)構(gòu)化特征,如for語句、if?else語句和switch語句等??梢杂糜趯?shí)現(xiàn)函數(shù)的邏輯控制,方便面向過程的程序設(shè)計(jì)。
(3)豐富的數(shù)據(jù)類型
C語言包含的數(shù)據(jù)類型廣泛,不僅包含有傳統(tǒng)的字符型、整型、浮點(diǎn)型、數(shù)組類型等數(shù)據(jù)類型,還具有其他編程語言所不具備的數(shù)據(jù)類型,其中以指針類型數(shù)據(jù)使用最為靈活,可以通過編程對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行計(jì)算。
(4)豐富的運(yùn)算符
C語言包含34個(gè)運(yùn)算符,它將賦值、括號(hào)等均視作運(yùn)算符來操作,使C程序的表達(dá)式類型和運(yùn)算符類型均非常豐富。
(5)可對(duì)物理地址進(jìn)行直接操作
C語言允許對(duì)硬件內(nèi)存地址進(jìn)行直接讀寫,以此可以實(shí)現(xiàn)匯編語言的主要功能,并可直接操作硬件。C語言不但具備高級(jí)語言所具有的良好特性,又包含了許多低級(jí)語言的優(yōu)勢(shì),故在系統(tǒng)軟件編程領(lǐng)域有著廣泛的應(yīng)用。
(6)代碼具有較好的可移植性
C語言是面向過程的編程語言,用戶只需要關(guān)注所被解決問題的本身,而不需要花費(fèi)過多的精力去了解相關(guān)硬件,且針對(duì)不同的硬件環(huán)境,在用C語言實(shí)現(xiàn)相同功能時(shí)的代碼基本一致,不需或僅需進(jìn)行少量改動(dòng)便可完成移植,這就意味著,對(duì)于一臺(tái)計(jì)算機(jī)編寫的C程序可以在另一臺(tái)計(jì)算機(jī)上輕松地運(yùn)行,從而極大地減少了程序移植的工作強(qiáng)度
(7)可生成的高質(zhì)量目標(biāo)代碼,高執(zhí)行效率的程序
與其他高級(jí)語言相比,C語言可以生成高質(zhì)量和高效率的目標(biāo)代碼,故通常應(yīng)用于對(duì)代碼質(zhì)量和執(zhí)行效率要求較高的嵌入式系統(tǒng)程序的編寫。