【发布时间】:2020-12-30 18:21:15
【问题描述】:
以下是我编写的用于将二进制数转换为十进制的 C 程序,但它总是给出输出“0”。有人能指出错误吗?
#include<stdio.h>
main()
{
int a=1/2,p=0,rem,n;
printf("Enter a binary number:");
scanf("%d",&n);
while(n!=0)
{
a=a*2;
rem=n%10;
p=p+rem*a;
n=n/10;
}
printf("Its decimal equivalent is %d",p);
}
【问题讨论】:
-
int a=1/2等价于int a = 0 -
是的,你说得对。所以我做了修改并声明'a'为float a=1/2;而且还是不行
-
初始化
a = 1并将a=a*2;移动到循环的最后一行。因为a是 2 的幂,所以二进制数字乘以它应该是1, 2, 4, 8, etc。旁注:使用描述性变量名称(power_of_2而不是a等)和空格(a = a * 2;不是a=a*2;)更容易阅读您的代码。有些人可能会争论最后一点。 -
谢谢。这解决了我的问题。另外,我会在编码时记住这一点
标签: c windows binary type-conversion decimal