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

C 語言統計字符串:數字、空白字符、其他字符出現次數

     編輯:關於C++

題目要求

編寫程序統計輸入字符串中:各個數字(0-9)、空白字符、以及其他所有字符出現的次數。輸入用 getchar() 讀取,以 EOF 結束(Windows: Ctrl+Z, Linux/Mac: Ctrl+D)。空白字符用 isspace() 判斷(含空格、水平/垂直制表、換頁、回車、換行)。

核心邏輯

  • 數字統計:下標計數法,arr[ch - '0']++
  • 空白字符:isspace(ch) 判斷,計數器 count++
  • 其他字符:計數器 times++

完整代碼


#include <stdio.h>
#include <ctype.h>  // isspace()
#include <stdlib.h>

int main() {
    char ch;
    int arr[10] = {0};  // 0-9 計數器
    int count = 0;      // 空白字符計數
    int times = 0;      // 其他字符計數
    int i;

    while ((ch = getchar()) != EOF) {
        if (ch >= '0' && ch <= '9') {
            arr[ch - '0']++;  // 關鍵:ch - '0' 得到 0-9 下標
        } else if (isspace(ch)) {
            count++;
        } else {
            times++;
        }
    }

    for (i = 0; i < 10; i++) {
        printf("%d出現的次數>%d\n", i, arr[i]);
    }
    printf("空字符出現次數>%d\n其他字符出現次數>%d\n", count, times);

    system("pause"); // Windows 專用,Linux/Mac 可移除
    return 0;
}

關鍵點解析

  1. getchar() 返回 int 類型(含 EOF),但存入 char 後比較 EOF 需注意符號擴展,建議用 int ch 接收
  2. isspace() 需包含 <ctype.h>
  3. 下標計數法:'0'=48, '1'=49...,ch - '0' 將字符數字轉為 0-9 整數
  4. EOF 結束輸入:Windows 控制台 Ctrl+Z 後按 Enter,Linux/Mac Ctrl+D

改進版(更健壯)


#include <stdio.h>
#include <ctype.h>

int main() {
    int ch;  // 用 int 接收 getchar() 返回值,正確處理 EOF
    int digit[10] = {0};
    int space = 0, other = 0;

    while ((ch = getchar()) != EOF) {
        if (ch >= '0' && ch <= '9') digit[ch - '0']++;
        else if (isspace(ch)) space++;
        else other++;
    }

    for (int i = 0; i < 10; i++)
        printf("數字 %d: %d 次\n", i, digit[i]);
    printf("空白字符: %d 次\n其他字符: %d 次\n", space, other);
    return 0;
}

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