幫我檢查C語言錯誤的地方!!

2009-04-24 8:05 am
#include <stdio.h>
#include <math.h>
int f1(int a, int b,int c)
{
return -b+sqrt(b*b-4*a*c)/2*a;
}
int f2(int a, int b,int c)
{
return -b-sqrt(b*b-4*a*c)/2*a;
}
int main()
{
int x,y,z;
printf("請輸入方程式前的係數,並用逗點隔開");
scanf("%d,%d,%d",&x,&y,&z);

if (y*y-4*x*z>0)
{
printf("此方程式有兩相異時數解\n");
printf("其解分別是%d %d",f1(x,y,z),f2(x,y,z));
}
if (y*y-4*x*z=0)
{
printf("此方程式是重根\n");
printf("其解為%d",f1(x,y,z));
}
if (y*y-4*x*z<0)
{
printf("此方程式無解(有虛根)");
}
}


請問哪裡有錯?? 我的目的是要做出一個可以解方程式的東西
可是在編譯時他都說我有錯
請問是錯在哪裡
請不要自己幫我重新寫一寫
我想知道我錯在哪裡
更新1:

函數的傳回值是double型態 因為sqrt(double n) 請問這句話是什麼意思??

回答 (2)

2009-04-24 8:39 am
✔ 最佳答案
#include <stdio.h>
#include <math.h>
#include <stdlib.h>


double f1(int a, int b,int c)
{
return (-b+sqrt(b*b-4*a*c))/(2*a);
}
double f2(int a, int b,int c)
{
return (-b-sqrt(b*b-4*a*c))/(2*a);



}
int main(void)
{
int x,y,z;
printf("請輸入方程式前的係數,並用逗點隔開\n");
scanf("%d,%d,%d",&x,&y,&z);


if ((y*y-4*x*z) > 0 )
{
printf("此方程式有兩相異時數解\n");
printf("其解分別是%d %d",int(f1(x,y,z)),int(f2(x,y,z)));
}



if ((y*y-4*x*z)==0)
{
printf("此方程式是重根\n");
printf("其解為%d",int(f1(x,y,z)));
}



if (y*y-4*x*z<0)
{
printf("此方程式無解(有虛根)");
}
system("pause");
return 0;
}

函數的傳回值是double型態
因為sqrt(double n)
還有你函式的return 後面的算式 要加上括號 不然會錯
輸出時再轉換型別成int
int(f1(x,y,z)),int(f2(x,y,z))

if (y*y-4*x*z=0)應該寫成
if (y*y-4*x*z == 0 )才對
2009-04-24 8:28 am
The following line:
if (y*y-4*x*z=0)

should be:
if (y*y-4*x*z==0)


收錄日期: 2021-05-01 23:55:19
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20090424000015KK00076

檢視 Wayback Machine 備份