01/10/2018, 01:16

Lỗi Chuyển cơ số 10 sang cơ số 2 trong C

void chuyen(){

while(coSo10>=1){
	coSo10 = coSo10/2;
	soDu[i] = coSo10 % 2;
	i++;
}
for(int j=i; j>0; j--){
	printf("%d", soDu[i]);
}

}

mọi người cho e hỏi sai ở đâu nhỉ? thanks

hai viết 03:25 ngày 01/10/2018

không dc bạn ạ. source code full:
#include<stdio.h>
#include<conio.h>
int soDu[100],coSo10,i;
void nhap(){
printf(“nhap co so 10: “);
scanf(”%d”, &coSo10);
}
void chuyen(){

while(coSo10 >=0 ){
	soDu[i] = coSo10 % 2;
	coSo10 = coSo10/2;
	i++;
}
printf("\n");
for(int j=i-1; j>=0; j--){
	printf("%d", soDu[i]);
}

}
int main(){
nhap();
chuyen();
getch();
}

Người bí ẩn viết 03:26 ngày 01/10/2018
while(coSo10 >= 0)

Quên, mình nhầm chỗ này, để while (coSo10 > 0) thôi
Bây giờ, chương trình sẽ compile & run được nhưng kết quả sẽ ra sai, mình sẽ không nói để bạn tự debug nhé !

hai viết 03:26 ngày 01/10/2018

kq nó vẫn ra 0000…

hai viết 03:18 ngày 01/10/2018

ok thanks ban…

hai viết 03:21 ngày 01/10/2018

mình tìm ra lỗi và chạy dc rồi, thanks b

hai viết 03:21 ngày 01/10/2018

bạn ơi chominhf hỏi là:
for(j=i-1; j>=0; j–){
printf("%d", soDu[j]);
tại sao lại phải chạy từ i-1 đến >=0 mà không pơhair là chạy từ i đến >0 vậy???

Người bí ẩn viết 03:18 ngày 01/10/2018

Vì đó là thói quen của mình (chỉ số của mảng luôn bắt đầu bằng 0)

hai viết 03:23 ngày 01/10/2018

ố của mảng luôn

nhung nếu bắt đầu từ 1 thì sẽ có kết quả khác là sao vậy nhỉ???

Bài liên quan
0