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

C 語言經典練習:統計字符串中字母、數字、空格與其他字符

     編輯:關於C語言

題目描述

輸入一行字符,分別統計其中英文字母、空格、數字和其他字符的個數。

算法分析

  • 使用 getchar() 循環讀取,直到遇到換行符 '\n'
  • 利用 ASCII 碼範圍判斷字符類別:
    • 字母:'A'~'Z' (65~90) 或 'a'~'z' (97~122)
    • 數字:'0'~'9' (48~57)
    • 空格:' ' (32)
    • 其他:其餘
  • 四個計數器分別累加

標準實現(兼容 Linux/Windows)

#include <stdio.h>
#include <ctype.h>  // 推薦使用標準庫分類函數

int main(void) {
    int c;
    int letters = 0, spaces = 0, digits = 0, others = 0;

    printf("請輸入一行字符(以 Enter 結束):\n");

    while ((c = getchar()) != '\n' && c != EOF) {
        if (isalpha(c))       letters++;
        else if (isdigit(c))  digits++;
        else if (c == ' ')    spaces++;
        else                  others++;
    }

    printf("統計結果:字母=%d 空格=%d 數字=%d 其他=%d\n",
           letters, spaces, digits, others);
    return 0;
}

關鍵改進點

  1. 使用 ctype.h 標準函數(isalpha、isdigit 等),提高可讀性與可移植性(支持本地化字符集)
  2. 循環條件加入 c != EOF,防止輸入重定向文件時無限循環
  3. 變量類型用 int 接收 getchar() 返回值,正確處理 EOF
  4. 移除 conio.h、getch(),純標準 C,跨平台編譯無警告

擴展思路

  • 統計單詞數(以空白分隔)
  • 統計各字母出現頻率(大小寫合併/分開)
  • 處理多行輸入(以 EOF 結束)
  • 使用寬字符(wchar_t、getwchar)支持 Unicode

這道經典練習不僅考察基本循環與條件判斷,更強調標準庫函數的正確使用與輸入邊界條件的健壯處理——這正是從「能跑通」邁向「工程級代碼」的關鍵一步。

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