C语言十进制转二进制
Decimal to Binary convert in C
我的简单程序无法将 7 转换为 111(当前代码给出 101)。我知道 myArray[]
和最后的 printf()
可以改进,但我们下次再谈。
int main() {
int myDecimal, quo, rem;
int i = 0; //counter
int myArray[3];
printf("Enter valid decimal number: ");
scanf("%d", &myDecimal);
while(quo != 1){
quo = myDecimal / 2;
rem = myDecimal % 2;
myArray[i] = rem;
myDecimal = quo;
i++;
} myArray[i] = quo;
printf("\nBinary: %d %d %d", myArray[i + 2], myArray[i + 1], myArray[i] );
return 0;
}
它对我来说很好用。您是否正确包含头文件?您使用哪个编译器?
#include <stdio.h>
#include <conio.h>
int main() {
int myDecimal, quo, rem;
int i = 0; //counter
int myArray[3];
printf("Enter valid decimal number: ");
scanf("%d", &myDecimal);
while(quo != 1){
quo = myDecimal / 2;
rem = myDecimal % 2;
myArray[i] = rem;
myDecimal = quo;
i++;
} myArray[i] = quo;
printf("\nBinary: %d %d %d", myArray[i + 2], myArray[i + 1], myArray[i] );
return 0;
}
输出
我也试试这个。如果你愿意,你也可以试试这个:)
#include <stdio.h>
#include <conio.h>
int main() {
long myDecimal;
long binary = 0, i = 1;
int rem;
printf("Enter valid decimal number: ");
scanf("%d", &myDecimal);
while(myDecimal != 0) {
rem = myDecimal%2;
myDecimal = myDecimal/2;
binary= binary + (rem*i);
i = i*10;
}
printf("Binary number is %ld",binary);
}
有些错误需要注意..
- 初始化数组,因为对于 1 的转换,它可能是垃圾 0 1
- 不要强迫
myArray[i] = quo;
- 您应该注意打印,因为
i
可能长度不同并且可能导致不稳定的行为。
- 使用前还要初始化
quo
,因为这可能会导致垃圾比较。
也跟着评论里的提示,很有用
int main() {
int myDecimal, quo, rem;
int i = 0; //counter
int myArray[3] = {0};
printf("Enter valid decimal number: \n");
scanf("%d", &myDecimal);
quo = myDecimal;
while(quo > 0){
quo = myDecimal / 2;
rem = myDecimal % 2;
myArray[i] = rem;
myDecimal = quo;
i++;
}
printf("Binary: %d %d %d", myArray[2], myArray[1], myArray[0]);
return 0;
}
根据您使用的逻辑,您需要进行较小的更改才能使其正常工作。
check.c
#include<stdio.h>
int main() {
int myDecimal, quo, rem;
int i = 0; //counter
int myArray[3];
printf("Enter valid decimal number: ");
scanf("%d", &myDecimal);
//check myDecimal whether it's above 0 after each iteration
while(myDecimal > 0){
quo = myDecimal / 2;
rem = myDecimal % 2;
myArray[i] = rem;
myDecimal = quo;
i++;
} myArray[i] = quo;
//print the array in the reverse order
for(i=2;i>=0;i--){
printf("%d",myArray[i]);
}
printf("\n");
return 0;
}
输出:
我的简单程序无法将 7 转换为 111(当前代码给出 101)。我知道 myArray[]
和最后的 printf()
可以改进,但我们下次再谈。
int main() {
int myDecimal, quo, rem;
int i = 0; //counter
int myArray[3];
printf("Enter valid decimal number: ");
scanf("%d", &myDecimal);
while(quo != 1){
quo = myDecimal / 2;
rem = myDecimal % 2;
myArray[i] = rem;
myDecimal = quo;
i++;
} myArray[i] = quo;
printf("\nBinary: %d %d %d", myArray[i + 2], myArray[i + 1], myArray[i] );
return 0;
}
它对我来说很好用。您是否正确包含头文件?您使用哪个编译器?
#include <stdio.h>
#include <conio.h>
int main() {
int myDecimal, quo, rem;
int i = 0; //counter
int myArray[3];
printf("Enter valid decimal number: ");
scanf("%d", &myDecimal);
while(quo != 1){
quo = myDecimal / 2;
rem = myDecimal % 2;
myArray[i] = rem;
myDecimal = quo;
i++;
} myArray[i] = quo;
printf("\nBinary: %d %d %d", myArray[i + 2], myArray[i + 1], myArray[i] );
return 0;
}
输出
我也试试这个。如果你愿意,你也可以试试这个:)
#include <stdio.h>
#include <conio.h>
int main() {
long myDecimal;
long binary = 0, i = 1;
int rem;
printf("Enter valid decimal number: ");
scanf("%d", &myDecimal);
while(myDecimal != 0) {
rem = myDecimal%2;
myDecimal = myDecimal/2;
binary= binary + (rem*i);
i = i*10;
}
printf("Binary number is %ld",binary);
}
有些错误需要注意..
- 初始化数组,因为对于 1 的转换,它可能是垃圾 0 1
- 不要强迫
myArray[i] = quo;
- 您应该注意打印,因为
i
可能长度不同并且可能导致不稳定的行为。 - 使用前还要初始化
quo
,因为这可能会导致垃圾比较。 也跟着评论里的提示,很有用
int main() { int myDecimal, quo, rem; int i = 0; //counter int myArray[3] = {0}; printf("Enter valid decimal number: \n"); scanf("%d", &myDecimal); quo = myDecimal; while(quo > 0){ quo = myDecimal / 2; rem = myDecimal % 2; myArray[i] = rem; myDecimal = quo; i++; } printf("Binary: %d %d %d", myArray[2], myArray[1], myArray[0]); return 0; }
根据您使用的逻辑,您需要进行较小的更改才能使其正常工作。
check.c
#include<stdio.h>
int main() {
int myDecimal, quo, rem;
int i = 0; //counter
int myArray[3];
printf("Enter valid decimal number: ");
scanf("%d", &myDecimal);
//check myDecimal whether it's above 0 after each iteration
while(myDecimal > 0){
quo = myDecimal / 2;
rem = myDecimal % 2;
myArray[i] = rem;
myDecimal = quo;
i++;
} myArray[i] = quo;
//print the array in the reverse order
for(i=2;i>=0;i--){
printf("%d",myArray[i]);
}
printf("\n");
return 0;
}
输出: