同时进行乘法和二进制转换

时间:2018-10-10 03:09:31

标签: c

我正在尝试使用俄语乘法将两个用户输入相乘,并将该结果同时转换为二进制。不断出错

#include <stdio.h>
int main()
{
while(1){
int i, choice;
printf("What would you like to do?\n 1. Multiplication \n 2. Exit\n\n");

if(choice == 1){
 int a,b,c;
  a=0;b=0;
  c=0;
  printf("enter your first number\n");
  scanf("%d",&a);
  printf("enter your second number\n");
  scanf("%d",&b);
  while(b>=1){

              a=a*2;
              b=b/2;
              if(b%2==1)
              c=c+a;

              }

              printf("Russian Multiplication result is=%d\n",c);
              getchar();

              {
                  int num, bin;

                  scanf("%d", &num);
                  bin = printbinary(num);
                  printf("The binary equivalent of %d is %d\n", num, bin);
              }
              int printbinary(int num);

if (num == 0)

{

    return 0;

}

else

{

    return (num % 2) + 10 * printbinary(num / 2);

}
}
if(choice ==2){
return 0;
}
else{
    printf("That's not an option dude, try again\n");
   }
  }
}

继续获取函数'printbinary'的隐式声明[-Wimplicit-function-declaration]                 bin == printbinary(num); 还得到一个错误,指出:未声明'num'(在此函数中首次使用)if(num == 0)

1 个答案:

答案 0 :(得分:0)

我不确定您的实际工作,因为代码中存在很多逻辑错误。我将指出问题的替代原因。

  1.   

    函数'printbinary'的隐式声明   [-Wimplicit-function-declaration]

    这是在使用或调用函数之前未定义函数的结果。因此,首先在main()之前先全局声明它:

    #include<stdio.h> int printbinary(int); int main() {...

    int printbinary(int num);在那段代码之后应该做什么? 如此奇怪地包含在{...}中(我在下一点提到了这一点)?当说一个函数的返回类型不是void时(在这种情况下为int),应该有一些int变量或使用它的东西。否则就没用了。

  

'num'未声明(此函数中的首次使用)if(num == 0):

这是因为此代码:

          {
              int num, bin;
              scanf("%d", &num);
              bin = printbinary(num);
              printf("The binary equivalent of %d is %d\n", num, bin);
          }   //what's the point of these braces buddy??????

变量numbin仅可在此块内访问。因此,当您尝试访问其外部的num时(即,在右括号(}之后),它自然会声明未声明。