2016-10-19 60 views
-8

我被要求写一个C程序,用户必须输入一个4位二进制数(int)。 我们必须显示用户输入的二进制数的十进制等值。 而我们必须做到这一点没有循环或任何其他如果其他等 我写了代码,但它不工作。请检查并运行以下代码并指导我。非常感谢帮助。我是C编程的初学者。需要帮助

#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); 

    } 
+5

不工作** **如何? –

+0

是否要输入一个基数2 [二进制]数字字符串(仅包含ASCII'0'或'1'字符的_only_)并输出十进制等效字符? (例如)输入:'0101'和输出:'5'? –

回答

1

嗨,欢迎来到StackOverflow。


因为你是一个初学者,因为这是最有可能的一门功课,我会尽我所能来帮助你了解你的代码中的问题,没有给你一个完整的工作代码,您可以复制和糊。

下面是您的代码和行号的副本。

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语言中,它是对主函数返回INT标准(),而不是无效的。将main()函数的返回类型从void更改为int


10 scanf_s("%d%",a); 

这里有两个问题。一,你正在使用scanf_s。因为它是在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

这是我的代码:

#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; 
}