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

285

Top 1000 câu hỏi thường gặp môn Tin học có đáp án (phần 1) hay nhất được biên soạn và chọn lọc giúp bạn ôn luyện và đạt kết quả cao trong bài thi môn Tin học.

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

Câu 64: 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;

    }

Từ khóa :
Giải bài tập
Đánh giá

0

0 đánh giá