多組測試。每組先輸入整數 n,n=0 結束。隨後輸入 n 個浮點數。統計負數、零、正數的個數並輸出。
#include
int main(void) {
int n;
while (scanf("%d", &n) == 1) {
if (n == 0) break; // 終止條件
int neg = 0, zero = 0, pos = 0;
for (int i = 0; i < n; i++) {
float x;
scanf("%f", &x);
if (x < 0) neg++;
else if (x == 0) zero++;
else pos++;
}
printf("%d %d %d\n", neg, zero, pos);
}
return 0;
}
n == 0 時退出外層循環,不處理後續數據。x == 0 判斷零值。輸入為精確十進制表示時安全;若涉及計算產生的浮點數,需用 fabs(x) < EPS。if-else if-else 互斥覆蓋所有情況。int 足夠(n 通常 ≤ 10000)。| 輸入 | 輸出 | 說明 |
|---|---|---|
| 3 -1.5 0 2.5 0 | 1 1 1 | 各一個 |
| 5 0 0 0 0 0 0 | 0 5 0 | 全零 |
| 4 -1 -2 -3 -4 0 | 4 0 0 | 全負 |
// 通用浮點數零值判斷
#define FLOAT_EPS 1e-9
int float_cmp(float x) {
if (x < -FLOAT_EPS) return -1; // 負
if (x > FLOAT_EPS) return 1; // 正
return 0; // 零
}
本題輸入為直接給定的十進制數,x == 0 安全有效。