輸入兩個整數 a、b,輸出 a/b*100 的整數百分比(如 1 3 → 33%)。
直接寫 a / b * 100 會先做整數除法,結果永遠為 0(當 a < b 時)。必須先轉浮點數再乘 100,最後取整。
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
// 強制轉型為 float,避免整數除法截斷
int percent = (int)((float)a / (float)b * 100);
printf("%d%%\n", percent);
return 0;
}
若題目要求四捨五入(如 2/3 → 67%),可加 0.5 再取整:
int percent = (int)((float)a / b * 100 + 0.5);
| 寫法 | a=1,b=3 結果 | 問題 |
|---|---|---|
a / b * 100 | 0 | 整數除法先執行,結果為 0 |
(a * 100) / b | 33 | 可能溢出(a 較大時),但小數據可用 |
(int)((float)a / b * 100) | 33 | ✅ 正確,通用且安全 |
C 語言整數除法向零截斷,涉及比例計算時務必先轉 float/double 再乘系數,最後按需取整或四捨五入。養成「先浮點,後整數」的習慣,能避開 90% 的除法坑。