30/09/2018, 17:12
Hỏi về bài toán chuyển thập phân sang nhị phân
#include <stdio.h>
#include <stdlib.h>
void nhiphan(int n)
{
if(n==0)
printf("0");
else
{
nhiphan(n/2);
printf("%d",n%2);
}
}
int main(int argc, char *argv[])
{
int n;
printf("Nhap so:");
scanf("%d",&n);
nhiphan(n);
return 0;
}
mình chạy ra nhưng lại dư 1 số 0 ở phía trước,mọi người giải thích hộ xem sai chỗ nào :3
Bài liên quan
Code này không sai, nếu muốn không có số
0
thì làm như thế nàyNhưng mà khi nhập vào số 0 thì nó không in ra gì cả. Vì nó return ngay
anh Đạt ơi cho em hỏi thêm là void thì không trả về giá trị thì tại sao lại có return, thứ 2 return thì phải cần 1 giá trị thì tại sao ở đây mình chỉ ghi return nó lại không báo lỗi ?
void không trả về giá trị nên mình chỉ cần
return;
Tức là ngắt hàm tại ví tríreturn
, không trả về gì cả. Khi mình dùng hàmint
thì mìnhreturn
một sốint
. Tương tự cho các kiểu dữ liệu khác.Hàm
void
được phépreturn
khơi khơi như vậyvậy là hồi nó tới giờ có 1 sự hiểu lầm thật là to về thằng return ,thực ra nó là cái để kết thúc hàm
nhưng mà nếu em nhập số 0 thì nó không chạy ra cái gì cả ? sao khắc phục đây anh
anh nghĩ chỗ hàm main thêm 1 if kiểm tra gia trị nhập có phải là số 0
uh anh,em de da them zo roi anh,thank anh