Trắc nghiệm tổng hợp Tin học năm 2023 có đáp án (Phần 1)

Viết chương trình nhập 1 số nguyên, xuất ra dạng chữ

65/81

Viết chương trình nhập 1 số nguyên, xuất ra dạng chữ

0/3000 ký tự
Giải thích

Viết bằng ngôn ngữ C#:

// code đọc số thành chữ

#define MXLEN 64

 // hàm nhận số và ghi cách đọc vào chuỗi ds

     char *DocSo(char *ds, int so)

    {

        char *kh [] = { "", "ngàn", "triệu", "tỷ" }; // các khoản 3 chữ số

        if (so == 0)

            return Doc3So(ds, so, 0);

        char d3s[MXLEN]; // chuỗi để đọc 3 chữ số

        int kilo = 0; // hàng ngàn

        while (so > 0)

        {

            Doc3So(d3s, so % 1000, so / 1000);

            if (strlen(ds) == 0)

                strcpy(ds, (strcmp(d3s,"không")) ? d3s : "chẵn");

            else if (strcmp(d3s,"không") || strcmp(ds,"chẵn"))

                strcpy(ds, strcat(strcat(strcat(strcat(d3s, " "), kh[kilo]), " "), ds));

                // tức là ds = d3s + " " + kh[kilo] + " " + ds;

            kilo++;

            so /= 1000;

        }

        return ds;

    }

 

    char *Doc3So(char *ds, int so, int truoc) // truoc: số có phần đi trước nó hay không

    {

        char *doc[] = { "không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín" };

        if (so == 0)

        {

            strcpy(ds, doc[0]);

            return ds;

        }

        int donvi = so % 10;

        int chuc = (so / 10) % 10;

        int tram = (so / 100) % 10;

        if (truoc != 0 || tram != 0)

        {

            strcat(strcpy(ds, doc[so / 100]), " trăm");

            // tức là ds = doc[so / 100] + " trăm";

            if (chuc == 0 && donvi != 0) strcat(ds, " lẻ");

        }

        if (chuc == 1) strcat(ds, " mười");

        else if (chuc > 1) strcat(strcat(strcat(ds, " "), doc[chuc]), " mươi");

                          // tức là x += " " + doc[chuc] + " mươi";

        if (chuc != 0 && donvi == 5) strcat(ds, " lăm");

        else if (donvi != 0) strcat(strcat(ds, " "), doc[donvi]);

        return ds;

    }