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

Mai Anh Dũng viết 19:12 ngày 30/09/2018

Code này không sai, nếu muốn không có số 0 thì làm như thế này

#include <stdio.h>
#include <stdlib.h>
void nhiphan(int n)
{
	if(n==0)
		return;

	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;
}

Nhưng mà khi nhập vào số 0 thì nó không in ra gì cả. Vì nó return ngay

Trungkiet Nguyen viết 19:22 ngày 30/09/2018

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 ?

Mai Anh Dũng viết 19:17 ngày 30/09/2018

void thì không trả về giá trị thì tại sao lại có return

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àm int thì mình return một số int. Tương tự cho các kiểu dữ liệu khác.

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 ?

Hàm void được phép return khơi khơi như vậy

Trungkiet Nguyen viết 19:29 ngày 30/09/2018

vậ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

Trungkiet Nguyen viết 19:14 ngày 30/09/2018

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

vũ xuân quân viết 19:21 ngày 30/09/2018

anh nghĩ chỗ hàm main thêm 1 if kiểm tra gia trị nhập có phải là số 0

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
void nhiphan(int n)
{
	if(n==0)
		return;
	nhiphan(n/2);
	printf("%d",n%2);
}
int main(int argc, char *argv[]) 
{
	int n;
	printf("Nhap so:");
	scanf("%d",&n);
        if(n == 0) {
             printf("0");
             return;
        }
	nhiphan(n);
	return 0;
}
Trungkiet Nguyen viết 19:24 ngày 30/09/2018

uh anh,em de da them zo roi anh,thank anh

Bài liên quan
0