30/09/2018, 19:50

Hỏi vấn đề về chuyển hệ số

Anh chị cho em hỏi trong đoạn code sau:tại sao ở dòng kq[i]=n%2 +‘0’; lại phải có " +‘0’ " ạ.em thử chạy nếu không có thì nó không ra kết quả.(đây là đoạn code đổi 1 số từ hệ số 10 sang hệ số 2)

#include<stdio.h>
#include<string.h>
int main()
{
	int n;
	printf("Nhap gia tri co so 10 n: ");
	scanf("%d",&n);
	char kq[100];
	int i=0;
	int nGoc=n;
	//process
	while(n!=0)
	{
		kq[i]=n%2+'0';
		n=n/2;
		i++;
	}
	int l=strlen(kq);
	for(int k=0;k<l/2;k++)
	{
		char tg=kq[k];
		kq[k]=kq[l-1-k];
		kq[l-1-k]=tg;
	}
	printf("So nhi phan cua %d la: %s",nGoc,kq);
	return 0;
}
yoyo viết 22:06 ngày 30/09/2018

Để chuyển sang số 0 theo mã ascii đó bạn

Lê Hồng Hiếu viết 21:57 ngày 30/09/2018

printf(“So nhi phan cua %d la: %s”,nGoc,kq);

bạn thử bỏ ‘0’ đi và printf kiểu này xem
printf("Số nhị phân của %d là: %i",nGọc,kq);

Harry viết 22:05 ngày 30/09/2018

vì biến kq là mảng kiểu chả, nên nếu ko + ‘0’ thì trình bd báo lỗi vì nó ko thể chuyển đổi kiểu int về char đ, mình đồng ý với yoyo là viết thêm như thế để chuyển giá trị 0 hay 1 sang mã ansii. Khi in các giá trị của mảng nó sẽ chuyển về kiểu char, như vậy dãy 0, 1 cũng dc đưa ra mà ko bị lỗi

Bài liên quan
0