Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C tìm tần suất xuất hiện của từng chữ số trong chuỗi

Giả sử chúng ta có một chuỗi s chứa cả chữ cái và chữ số. Nhiệm vụ là đếm tần suất xuất hiện của từng chữ số (0-9) và hiển thị kết quả. Cách làm: tạo mảng freq kích thước 10 khởi tạo giá trị 0, duyệt qua chuỗi, nếu ký tự là chữ số thì tăng freq[ch - '0'] lên 1, cuối cùng in ra các chữ số có tần suất > 0.

Ví dụ, nếu s = "we85abc586wow236h69", thì đầu ra:

(Number 2, Freq 1)
(Number 3, Freq 1)
(Number 5, Freq 2)
(Number 6, Freq 3)
(Number 8, Freq 2)
(Number 9, Freq 1)

Giải thuật

  • Khởi tạo mảng freq[10] = {0}
  • Duyệt từng ký tự của chuỗi, nếu là chữ số ('0'-'9') thì freq[ch - '0']++
  • Duyệt i từ 0 đến 9, nếu freq[i] > 0 thì in "(Number i, Freq freq[i])"

Ví dụ minh họa

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

void solve(char *s) {
    int freq[10] = {0};
    for (int i = 0; i < strlen(s); i++) {
        if (s[i] >= '0' && s[i] <= '9') {
            freq[s[i] - '0']++;
        }
    }
    for (int i = 0; i < 10; i++) {
        if (freq[i] > 0)
            printf("(Number %d, Freq %d)\n", i, freq[i]);
    }
}

int main() {
    char *s = "we85abc586wow236h69";
    solve(s);
    return 0;
}

Đầu vào

"we85abc586wow236h69"

Đầu ra

(Number 2, Freq 1)
(Number 3, Freq 1)
(Number 5, Freq 2)
(Number 6, Freq 3)
(Number 8, Freq 2)
(Number 9, Freq 1)