我正在尝试使用俄语乘法将两个用户输入相乘,并将该结果同时转换为二进制。不断出错
#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)
答案 0 :(得分:0)
我不确定您的实际工作,因为代码中存在很多逻辑错误。我将指出问题的替代原因。
函数'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??????
变量num
和bin
仅可在此块内访问。因此,当您尝试访问其外部的num
时(即,在右括号(}
之后),它自然会声明未声明。