Giúp giải thích về chức năng của câu lệnh trong đoạn code đếm số lần xuất hiện của ký tự

code này dùng để đếm số lần xuất hiện của mỗi chữ số,khoảng trắng(tab,blank,khoảng trống) và các ký tự khác.Nhờ mọi người giải thích giúp mình chức năng của câu lệnh ++ndigit[c-‘0’];

#include <stdio.h>
#include<conio.h>
/* count digits, white space, others */
void main()
{
    int c, i, nwhite, nother;
    int ndigit[10];
    nwhite = nother = 0;
    for (i = 0; i < 10; ++i)
        ndigit[i] = 0;
    while ((c = getchar()) != EOF)
        if (c >= '0' && c <= '9')
            ++ndigit[c-'0'];
        else if (c == ' ' || c == '\n' || c == '\t')
            ++nwhite;
        else
            ++nother;
    printf("digits =");
    for (i = 0; i < 10; ++i)
        printf(" %d", ndigit[i]);
    printf(", white space = %d, other = %d\n",  nwhite, nother);
    getch();
}
1 Like

Lệnh này là lênh kép, khá phức tạp, để Đạt phân tích lệnh này thành nhiều lệnh tương ứng

++ndigit[c-'0'];

tương đương

int so = c - '0'; // đổi ký tự nhập vào thành số
int xuat_hien = ndigit[so]; // lấy giá trị tại vị trí so trong mảng ndigit
xuat_hien = xuat_hien + 1; // tăng số lần xuất hiện của số đó
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?