Cậu code trông xấu quá. Trước khi post nhớ dùng chuơng trình này của mình sửa code cho đẹp đã nhé: http://forums.congdongcviet.com/showthread.php?t=5707
(He he! Chuơng trình của mình phát huy tác dụng rồi)
Lỗi của cậu ở chỗ :
snp=snp+du*10^dem;
Trong C dấu ^ là toán từ XOR chứ ko phải tính lũy thừa. Cậu phải viết một hàm tính lũy thừa riêng. Mình xin code lại cả bài cho cậu:
(Hàm tính lũy thừa (hàm power) trên của mình ko phải là tối ưu mà phải dùng mấy cái e và logarit gì gì đó..quên rồiCode:#include "stdio.h" #include "math.h" #include "conio.h" // Hàm tính a mũ n long int power(int a, int n) { if(n == 0) return 1; for(int i = 2; i <= n; i++) a = a*a; return a; } unsigned long int sonhiphan (int n) { int dem=0, du; unsigned long int snp=0; while (n) { du=n%2; snp=snp+du*power(10,dem); dem ++; n=n/2; } return (snp); } void main () { int n; printf (" nhap n="); scanf ("%d", &n); printf ("so nhi phan: %d", sonhiphan (n)); getch (); })