我被要求编写一个C程序,用户必须输入一个4位二进制数(int)。 我们必须显示用户输入的二进制数的十进制等值。 而且我们必须在没有循环或任何其他的情况下执行此操作。 我写了代码,但它不起作用。请检查并运行以下代码并指导我。非常感谢帮助。
#include<stdio.h>
#include<math.h>
void main()
#include<stdio.h>
void main()
{
int a=0,b=0,c=0,d=0,e=0,ans=0,num1=0,num2=0,num3=0;
printf("enter a 4 digit binary number:\n\n\t");
scanf_s("%d%",a);
b=(a%10)*1;
num1=a/10;
c=(num1%10)*2;
num2=num1/10;
d=(num2%10)*8;
num3=num2/10;
e=num3/10;
ans=b+c+d+e;
printf("Decimal value is : %d",ans);
}
答案 0 :(得分:1)
由于您是初学者,并且因为这很可能是一项功课,所以我会尽力帮助您了解代码中的问题,而无需为您提供可以复制和粘贴的完整工作代码。
以下是代码的副本,包含行号。
1 #include<stdio.h>
2 #include<math.h>
3 void main()
4
5 #include<stdio.h>
6 void main()
7 {
8 int a=0,b=0,c=0,d=0,e=0,ans=0,num1=0,num2=0,num3=0;
9 printf("enter a 4 digit binary number:\n\n\t");
10 scanf_s("%d%",a);
11 b=(a%10)*1;
12 num1=a/10;
13 c=(num1%10)*2;
14 num2=num1/10;
15 d=(num2%10)*8;
16 num3=num2/10;
17 e=num3/10;
18 ans=b+c+d+e;
19 printf("Decimal value is : %d",ans);
20
21 }
3 void main()
这显然是重复的。删除此行。
6 void main()
在C中,它是在main函数()而不是void上返回int的标准。将main()函数的返回类型从void
更改为int
。
10 scanf_s("%d%",a);
这里有两个问题。一,你正在使用scanf_s
。 scanf
更可靠,因为它是在C99标准中定义的。二,不必传递变量a
,你必须将引用传递给变量a
(使用&
),这样C编译器就可以安全地放入输入到变量a
的值。将这两者结合在一起,我们得到:
10 scanf("%d%", &a);
15 d=(num2%10)*8;
你跳过4.这应该是右边的第三个二进制数字,所以你应该将它乘以4而不是8。
16 num3=num2/10;
最后,这应该是二进制序列的最左边的数字,所以你应该将它乘以8.此外,你需要将这个操作改为模数而不是像第11,13和15行那样的除法。
修复所有这些问题后,你应该有一个二进制到小数计算器。
答案 1 :(得分:-1)
这是我的代码:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main(){
int a[4],dec;
printf("first digit\t: ");scanf("%d",&a[0]);
printf("second digit\t: ");scanf("%d",&a[1]);
printf("third digit\t: ");scanf("%d",&a[2]);
printf("last digit\t: ");scanf("%d",&a[3]);
dec=(a[0]*pow(2,3))+(a[1]*pow(2,2))+(a[2]*pow(2,1))+(a[3]*pow(2,0));
printf("%d",dec);
return 0;
}