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

436

Tailieumoi.vn biên soạn và giới thiệu bộ câu hỏi Tin học gồm các kiến thức lý thuyết và thực hành, giúp học sinh ôn tập và bổ sung kiến thức cũng như hoàn thành tốt các bài kiểm tra môn Tin học. Mời các bạn đón xem:

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

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

Lời giải:

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;

    }

Đánh giá

0

0 đánh giá