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;
}
Bài liên quan
Để chuyển sang số 0 theo mã ascii đó bạn
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);
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