Mình lập trình 1 Bt có đề : "Mã BCD của một chữ số được tạo ra bằng cách viết liên tiếp cac gia tri nhi phan cua tung chu so. Hay viet chuong trinh nhap vao mot so nguyen n va xuat ra ma BCD cua so do.
VD:
23 -> 0010 0011 "
CODE :
C Code:
#include<stdio.h> #include<conio.h> void main () { int n,du; do { du=n%10; n=n/10; } while (n>9); switch (n) { } switch (du) { } getch(); }
Mình đã lập trình rùi nhưng chương trình chỉ chạy khi nhập n <=99 thui, còn khi nhập n >=100 thì chương trình ko xuất được kết quả như ý muốn
vd : Nhập 23 ==> 0010 0011 : OK
Nhập 233 ==> 0010 0011 : ko OK, đúng ra là 0010 0011 0011
Bước tới đèo ngang bỗng mắc tè
Cỏ cây chen lá, đá đâm mông
Lom khom dưới núi tè đã quá
Lác đác bên sông chó cái nhìn
...Every step that I take is another mistake to you...I'm sorry mom..
Sửa rồi đây!C Code:
#include<stdio.h> #include<conio.h> void doi(int n) { switch (n) { } } void main () { int t,i,n,du,a[100]; i=0; while (n>0) { du=n%10; a[i++]=du; n=n/10; } t=i; for(i=t-1;i>=0;i--) doi(a[i]); getch(); }
sao bạn ko đưa công việc in ra vào vòng while
tiết kiệm thởi gian và vùng nhớ
while (n>0)
{
du=n%10;
doi(du);
n=n/10;
}
hì! bạn thử làm đi rồi sẽ biết lý do, chú ý xem vòng for của mình!