Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将算术表达式应用于用户在C中提供的2个二进制数的最佳方法是什么?_C_Math_Binary - Fatal编程技术网

将算术表达式应用于用户在C中提供的2个二进制数的最佳方法是什么?

将算术表达式应用于用户在C中提供的2个二进制数的最佳方法是什么?,c,math,binary,C,Math,Binary,我正在编写一个程序,接受来自用户的2个二进制数。然后,用户选择一个算术表达式(+-/*%)应用于数字。我有一般的输入代码,但不知下一步该去哪里。我对C语言相当陌生。这是我到目前为止所拥有的 #include <stdio.h> int main(){ int number1, number2; char expression; //Basic instructions at the beginning of the program printf("This is a progr

我正在编写一个程序,接受来自用户的2个二进制数。然后,用户选择一个算术表达式(+-/*%)应用于数字。我有一般的输入代码,但不知下一步该去哪里。我对C语言相当陌生。这是我到目前为止所拥有的

#include <stdio.h>

int main(){

int number1, number2;
char expression;

//Basic instructions at the beginning of the program
printf("This is a program to execute arithmetic in binary.\n");
printf("The program will ask you for input in the form of two binary numbers separated byan arithmetic expression (+ - / * %).\n");
printf("The binary numbers must be only 1's and 0's and a maximum of seven digits.\n");
printf("You may exit the program by typing 'exit'.\n");

//Obviously an incomplete do statement, need a loop
do  {
//Getting input from the user
    printf("\nEnter first binary number: ");
    scanf("%d", &number1);
    printf("Enter second number: ");
    scanf("%d", &number2);
    printf("Which expression would you like (+ - / * %): ");
    scanf("%c", &expression);   
    }

}
#包括
int main(){
整数1,整数2;
字符表达;
//课程开始时的基本说明
printf(“这是一个用二进制执行算术的程序。\n”);
printf(“程序将要求您以两个二进制数的形式输入,以算术表达式(+-/*%)分隔。\n”);
printf(“二进制数只能是1和0,最多七位。\n”);
printf(“您可以通过键入“退出”退出程序。\n”);
//显然,一个不完整的do语句需要一个循环
做{
//从用户处获取输入
printf(“\n输入第一个二进制数:”);
scanf(“%d”和编号1);
printf(“输入第二个数字:”);
scanf(“%d”和编号2);
printf(“您想要哪个表达式(+-/*%):”;
scanf(“%c”&表达式);
}
}

由于
表达式
是一个
字符
(而不是
字符[]
),您可以使用
开关
-
大小写

int result;
switch(expression){
    case '+':
        result=number1+number2;
        break;
    case '-':
        result=number1-number2;
        break;
    case '*':
        result=number1*number2;
        break;
    case '/':
        result=number1/number2;
        break;
}

您可能还需要添加一个
默认值
,以防用户输入了无效的运算符。

可能需要先获得一个可编译的示例。然后在“表达式”上做一个“切换”,注意上面的注释“显然是一个不完整的do语句”。我知道它无法编译。%d输入一个十进制数。要输入一个二进制数,您需要输入一个字符串(或字符数组,如果是纯C),然后逐个字符地解析字符串,将字符串解释为二进制数。然后,一旦将二进制值存储在int中,就可以使用case语句来计算输入的操作并执行该操作。顺便说一句,它被称为运算符,而不是表达式。表达式是整个公式-例如
1+2
是表达式。运算符只是
+
。是的,但这只是解决方案的一半-在“十进制编码的二进制”转换为真正的二进制表示之前,它不会给出所需的结果-可能会根据所需的输出再次返回。最好的方法是什么?我是一个相当新的人,希望它能给我解释一下,这样我就不仅仅是在接收信息并将其放入代码中。