首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

杭電 OJ 2008:統計正負數與零的個數 - C 語言經典解題

     編輯:關於C語言

題目描述

給定一組整數,統計其中負數、零和正數的個數。輸入包含多組測試數據,每組第一行為整數 n (n > 0),表示後續有 n 個浮點數。當 n 為 0 時結束輸入。對於每組數據,輸出負數、零、正數的個數,以空格分隔。

問題分析

這是一道基礎的輸入處理與條件判斷題目。核心邏輯在於:

  • 循環讀取測試用例,直到遇到 n = 0
  • 對每組數據初始化三個計數器
  • 遍歷 n 個數字,根據與 0 的比較結果遞增對應計數器
  • 輸出統計結果

參考代碼

#include <stdio.h>

int main(void) {
    int n, i, neg_count, zero_count, pos_count;
    float num;

    while (scanf("%d", &n) != EOF) {
        if (n == 0) break;

        neg_count = zero_count = pos_count = 0;

        for (i = 0; i < n; i++) {
            scanf("%f", &num);
            if (num < 0)
                neg_count++;
            else if (num == 0)
                zero_count++;
            else
                pos_count++;
        }

        printf("%d %d %d\n", neg_count, zero_count, pos_count);
    }

    return 0;
}

關鍵點解析

  • EOF 判斷:`scanf` 返回值為 `EOF` 表示輸入結束,配合 `while` 循環處理多組測試數據
  • 浮點數比較:直接使用 `== 0` 判斷零值在本題中可行,因為輸入為精確的十進制表示
  • 變量初始化:每組測試數據開始前必須重置計數器

複雜度分析

時間複雜度:O(N),N 為所有測試用例中數字總個數。空間複雜度:O(1),僅使用常數級額外空間。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved