原始碼 scanf("%f%f%f", a, b, c); 缺少 & 取址符,導致變數無法接收輸入值,運算結果全為 0 或亂碼。
scanf("%f %f %f", &a, &b, &c);
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
if (scanf("%lf %lf %lf", &a, &b, &c) != 3) return 1;
double disc = b*b - 4*a*c;
if (disc < 0) {
puts("無實根");
} else if (disc == 0) {
printf("%.4f\n", -b / (2*a));
} else {
double sq = sqrt(disc);
printf("%.4f\n%.4f\n", (-b + sq) / (2*a), (-b - sq) / (2*a));
}
return 0;
}
scanf 格式字串加空格分隔,讀取更穩健。double + %lf 提高精度。disc 獨立變數避免重複計算。(2*a) 加括號確保優先級正確。**「scanf 必須傳址」**是 C 語言鐵律,漏寫 & 會導致不可預期的行為。