30/09/2018, 16:04

Giúp mình về câu lệnh trong đoạn code sau với

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 == '
' || c == '	')
            ++nwhite;
        else
            ++nother;
    printf("digits =");
    for (i = 0; i < 10; ++i)
        printf(" %d", ndigit[i]);
    printf(", white space = %d, other = %d
",  nwhite, nother);
    getch();
}
Nguyễn Minh Dũng viết 18:16 ngày 30/09/2018

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ố đó
Bài liên quan
0