首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C語言實作:統計字符串中字母、數字、空格及其他字符的個數

     編輯:程式設計綜合問答

題目需求

編寫一個函數,接收一個字符串作為參數,統計該字符串中英文字母、數字、空格以及其他字符的個數。主函數負責輸入字符串並輸出統計結果。

程序框架分析

題目提供了部分骨架代碼,關鍵在於填補函數 fltj 中的判斷條件。統計邏輯使用一個長度為 4 的整型數組 a,分別對應:

  • a[0]:字母個數
  • a[1]:數字個數
  • a[2]:空格個數
  • a[3]:其他字符個數

核心判斷條件

遍歷字符串時,需依次判斷當前字符 str[i] 所屬類別:

  1. 字母判斷:(str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z')
  2. 數字判斷:str[i] >= '0' && str[i] <= '9'
  3. 空格判斷:str[i] == ' '
  4. 其他:不滿足以上條件即歸為其他

完整參考代碼

#include <stdio.h>
#include <string.h>

void fltj(char str[], int a[]) {
    int ll = strlen(str);
    for (int i = 0; i < ll; i++) {
        if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z'))
            a[0]++;
        else if (str[i] >= '0' && str[i] <= '9')
            a[1]++;
        else if (str[i] == ' ')
            a[2]++;
        else
            a[3]++;
    }
}

int main() {
    char str[60];
    int a[4] = {0, 0, 0, 0};
    gets(str); // 注意:gets 不安全,實際開發建議使用 fgets
    fltj(str, a);
    printf("%s char:%d digit:%d space:%d other:%d", str, a[0], a[1], a[2], a[3]);
    return 0;
}

要點提示

  • 使用 strlen 獲取字符串長度,避免硬編碼。
  • 判斷順序影響效率:字母最常見,優先判斷可減少平均比較次數。
  • gets 函數有緩衝區溢出風險,生產環境請改用 fgets(str, sizeof(str), stdin) 並處理換行符。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved