Nhập vào một số nguyên, xuất ra số nguyên đó với các dấu phẩy (,) phân cách 3 chữ số. Ví dụ 1234567 xuất ra 1,234,567
Mọi người giúp em với. Nghĩ nát óc rồi mà không ra.
In dấu phân tách lớp của số nguyên như thế nào?
Tham khảo printf
xem có opt này ko
Nếu có thể tách số thành hàng tỷ, triệu, nghìn, đv thì làm được thôi.
không có opt đó bạn ơi.
Bạn thử hàm này:
void printfwithcomma (int n) {
if (n < 0) {
printf ("-");
printfwithcomma (-n);
return;
}
if (n < 1000) {
printf ("%d", n);
return;
}
printfwithcomma (n/1000);
printf (",%03d", n%1000);
}
Một cách đơn giản là chuyển nó về dạng chuỗi, thêm các số 0 vào trước nếu độ dài chưa chia hết cho 3.
Vì dụ 12345 thì biến nó thành “012345”. Sau đó duyệt từ đầu tới cuối, cứ lấy 3 ký tự thì cộng vào chuỗi mới và thêm ký tự “,”. Sau bỏ số chữ 0 ở đầu đi là xong
Đã vậy thì tại sao không for từ cuối đến đầu chuỗi, cứ 3 ký tự thì thêm 1 dấu phẩy đến khi nào chỗ ký tự còn lại <= 3 thì thôi ?
cảm ơn bạn, nhưng bài này không dùng chuỗi hay đệ quy được, vì chưa học
chỉ dùng while , for hoặc if giải bài này được không
Nếu vậy bạn thử kiểm tra độ lớn của số nhập vào rồi chia nó lần lượt cho 10^x tương ứng rồi xuất ra cùng với ‘,’ thử xem. Nếu số người dùng nhập vào quá lớn có thể gây lỗi chương trình
Cần gì đệ quy nhỉ? Cơ mà không dùng xâu thì trả về dấu ‘,’ kiểu gì?
In thẳng ra stdout
mà
Nếu chỉ in ra thôi thì có nhiều cách
search trên stack overflow thì có cách này
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_NUMERIC, "");
printf("%'d\n", 123456789);
return 0;
}