【问题标题】:im very new to C coding and I can't figure out why my crude calculator code isn't working [duplicate]我对 C 编码非常陌生,我无法弄清楚为什么我的粗略计算器代码不起作用[重复]
【发布时间】:2021-10-26 11:59:50
【问题描述】:

我认为它与第二个 scanf 函数或 if/else 语句有关。

#include <stdio.h>

int main()

{
int n1;
int n2;
char op;

printf("insert first number: ");
scanf("%d", &n1);


printf("Insert operation (+, -, *, /): ");
scanf("%c", &op);


printf("insert second number: ");
scanf("%d", &n2);

if(op='+')
{
    printf("%d + %d = %d", n1, n2, n1+n2);
}
else if(op='-')
{
    printf("%d - %d = %d", n1, n2, n1-n2);
}
else if(op='*')
{
    printf("%d * %d = %d", n1, n2, n1*n2);
}
else if(op='/')
{
    printf("%d / %d = %d", n1, n2, n1/n2);
}
else
{
    printf("error [use +, -, *, /]");
}

当我运行它时,它会等待我输入第一个数字,然后打印第二个提示,但不是等待我输入操作,而是直接跳到打印第三个提示,我不知道为什么。

【问题讨论】:

  • 第二个scanf() 调用在输入缓冲区中留下一个换行符。后来被第三次调用消耗。
  • 旁注,您不是在比较if(op='+'),而是在此处分配。你可能想输入,if(op == '+')
  • 在这种情况下,在第二个 scanf() 之后调用一个简单的 getchar() 应该可以解决问题。
  • @alex01011 我不敢相信我忘记了 ==/= 的区别。换行符是 / 对吗?我可以通过输入 // 而不是我想来解决这个问题?
  • @whookimo 用户的3121023 建议应该可以解决它。无论哪种方式,您都不应该将scanf() 用于此类操作。你可以试试fgets(),然后用sscanf()解析输入。

标签: c variables char calculator


【解决方案1】:

试试这个。在 switch 案例中尝试此编码。 你会得到预期的结果。 使用开关(ch); 并在每个案例之后休息。

【讨论】:

  • 我认为这不会解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2013-11-21
相关资源
最近更新 更多