gpt4 book ai didi

c - 如何从用户那里获取两个二进制数和运算并给出答案

转载 作者:行者123 更新时间:2023-11-30 19:28:30 25 4
gpt4 key购买 nike

我正在对 C 编程进行作业,该作业对两个二进制数进行操作(+,-,*,/),例如,如果用户输入:“1001 + 1010”必须添加两个二进制文件并给出输出“010011”

我的代码只能逐步获取每个输入(获取第一个二进制文件,然后获取第二个二进制文件并选择操作(+,-,*,/),然后生成答案)并生成答案,但作业认为需要整个立即(1001 + 1010并给出答案010011)

#include <stdio.h>

int main()

{

int num, num2, binary_val, binary_val2, decimal_val = 0, decimal_val2 = 0, base = 1, rem, base2 = 1, rem2, sum;
char oprtr;

printf("Enter the first binary number(1s and 0s) \n");

scanf("%d", &num);

binary_val = num;
printf("Enter the second binary number(1s and 0s) \n");

scanf("%d", &num2);
binary_val2 = num2;

printf("choose operation +,-,/,* \n");

scanf("%char", &oprtr);

while (num > 0)

{

rem = num % 10;

decimal_val = decimal_val + rem * base;

num = num / 10;

base = base * 2;
}
while (num2 > 0)

{

rem2 = num2 % 10;

decimal_val2 = decimal_val2 + rem2 * base2;

num2 = num2 / 10;

base2 = base2 * 2;
}

if (oprtr == '+')
{
sum = decimal_val + decimal_val2;
}
else if (oprtr == '*' || oprtr == 'x' || oprtr == 'X')
{
sum = decimal_val * decimal_val2;
}
else if (oprtr == '-')
{
sum = decimal_val * decimal_val2;
}
else if (oprtr == '/')
{
sum = decimal_val / (float)decimal_val2;
}
else
{
printf("error");
}

int decimal_num, remainder, binary = 0;

while (sum > 0)

{

remainder = num % 2;

/* To count no.of 1s */

if (remainder == 1)

binary = binary + remainder * base;

sum = sum / 2;

base = base * 10;
}

printf("The Binary number of the first one is = %d \n", binary_val);
printf("The Binary number of the second one is = %d \n", binary_val2);

printf("Its decimal equivalent is = %d \n", decimal_val);
printf("Its decimal equivalent is = %d \n", decimal_val2);

printf("And their Value is = %d \n", sum);
}

最佳答案

在读取运算符之前,您必须绕过第二个数字后输入的\n,例如 getchar(); optrr = getchar(); 而不是您的 scanf

您将始终打印 value 为 0,因为您打印的是总和而不是二进制

您错过了在上次之前将基数重置为 1

附加说明

  • 要将两个数字从二进制转换为十进制,您编写了两次相同的代码,最好添加专用函数
  • 要求在一行中输入 num1{opr}num2 会更简单,因为您只需执行一次唯一的 scanf : scanf("%d%c%d", &num, &optrr, &num2 );

关于c - 如何从用户那里获取两个二进制数和运算并给出答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53885712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com