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;
}
CÔNG TY TNHH ĐẦU TƯ VÀ DỊCH VỤ GIÁO DỤC VIETJACK
- Người đại diện: Nguyễn Thanh Tuyền
- Số giấy chứng nhận đăng ký kinh doanh: 0108307822, ngày cấp: 04/06/2018, nơi cấp: Sở Kế hoạch và Đầu tư thành phố Hà Nội.
2021 © All Rights Reserved.