我是C的新手,我正在尝试将十进制转换为二进制。 结果是给出了所需要的倒数。 我尝试在结果上应用模数,就像我在其他论坛上看到的那样,但我仍然得到相同的结果。 有什么帮助吗?
#include<stdio.h>
int main()
{
int number;
long int quotient, rem;
printf("Enter a number: ");
scanf("%d", &number);
quotient=number;
while (quotient!=0)
{
quotient=quotient/2;
rem=quotient%2;
printf("%ld", rem%10);
rem/=10;
}
}
我根据打印功能提出了建议,但仍然不确定我是否理解它仍然给我相同的结果。请看看。
#include<stdio.h>
void Print(int number,int base)
{
if (number >= base)
Print(number/base,base);
printf("%d",number%base);
}
int main()
{
int number;
long int quotient, rem;
printf("Enter a number: ");
scanf("%d", &number);
quotient=number;
while (quotient!=0)
{
quotient=quotient/2;
rem = quotient%2;
Print(rem, 2);
}
}
只是一个小小的音符,因为我忘了说,我不想让你经历麻烦。 想法不使用数组。 感谢
答案 0 :(得分:3)
你可以采用“后进先出”的方式:
void Print(int number,int base)
{
if (number >= base)
Print(number/base,base);
printf("%d",number%base);
}
然后,从main
开始,您可以使用2到10之间的任何基数来调用它。
答案 1 :(得分:0)
你应该以各种方式解决问题。
过程1:只做右移,检查移位结果并打印已确定的输出。
int main()
{
int n, c, k;
printf("Enter an integer in decimal number system\n");
scanf("%d", &n);
printf("%d in binary number system is:\n", n);
for (c = 31; c >= 0; c--)
{
k = n >> c;
if (k & 1)
printf("1");
else
printf("0");
}
printf("\n");
return 0;
}
答案 2 :(得分:0)
试试这段代码。
int number;
printf("Enter a number: ");
scanf("%d", &number);
printf("%d",decimal_binary(number));
int decimal_binary(int n) /* Function to convert decimal to binary.*/
{
int rem, i=1, binary=0;
while (n!=0)
{
rem=n%2;
n/=2;
binary+=rem*i;
i*=10;
}
return binary;
}
答案 3 :(得分:0)
我正在尝试将十进制转换为二进制
您扫描输入的点之后没有小数点。你有一个号码。数字不是十进制或二进制,它们只是数字。 scanf
已将某个数字的十进制表示转换为您的数字。
一旦有了数字,你就想获得它的二进制代表。再一次,你手边没有小数点。
现在问问自己,你在互联网的某个黑暗角落发现的10分是否可能是正确的。
(这个答案是故意未完成的)
答案 4 :(得分:0)
long int decimalNumber,remainder,quotient;
int binaryNumber[100],i=1,j;
printf("Enter any decimal number: ");
scanf("%ld",&decimalNumber);
quotient = decimalNumber;
while(quotient!=0){
binaryNumber[i++]= quotient % 2;
quotient = quotient / 2;
}
printf("Equivalent binary value of decimal number %d: ",decimalNumber);
for(j = i -1 ;j> 0;j--)
printf("%d",binaryNumber[j]);
答案 5 :(得分:0)
在这里,您可以使用自己的代码来纠正误导,并正确显示二进制数。
#include<stdio.h>
int main()
{
long int decimal, quotient;
int binarynumber[1024];
const int base = 2;
printf("Enter a number: ");
scanf("%ld", &decimal);
printf("%d in binary: ", decimal);
quotient = decimal;
int i=1;
while (quotient!=0)
{
binarynumber[i++]=quotient%base;
quotient/=base;
}
for(int j=i; j>0; --j){
printf("%d",binarynumber[j]);
}
printf("\n");
return 0;
}
拥有十进制数字变量是正确的,我称之为decimal
以避免混淆。但是,您可以将{十进制数的输入存储在quotient
内,它的工作方式也相同。
我添加了基数变量base
,在我看来应该是常量,而不是模数运算符加基数,代码中的%2
。
你应该有一个变量,你在这段代码中有rem
,binarynumber
- 将它全部存储起来然后反转这个变量中的数字,就像代码中提供的for循环一样。我最好将它存储在一个数组中,而不是与另一个名为rem
的变量混淆。
我并不知道你想对rem/=10;
做些什么,所以我解决了这个问题。
对于商使用long int是正确的,但是,在许多情况下,long int
与int
相同。
在许多(但不是全部)C和C ++实现中,long大于 一个int。大多数编译器使用32位int,它具有相同的大小和表示 很长一段时间。 Reference
还有一件事,在检索模数答案之前,您曾经用基数除以存储到商(在代码quotient=quotient/2;
中),导致模数不正确,不正确的余数(在您的代码中) rem=quotient%2;
)。它检索了下一个号码的提醒。
希望这很清楚。