【问题标题】:Else If statement in C is not executing correctlyC 中的 Else If 语句未正确执行
【发布时间】:2021-11-29 17:47:24
【问题描述】:

我使用 else...if 语句为计算器编写了一个 C 程序。没有语法错误,编译良好,但程序跳过所有条件,只执行最后一个条件(显示错误消息)。我不知道出了什么问题。 here is my code。如果这是一个愚蠢的问题,我很抱歉,我尝试用谷歌搜索,但什么也没找到。

代码:

#include<stdio.h>
{
float no1, no2, ans;
char op;

printf("ENTER 1ST NUMBER:\n");
scanf("%f",&no1);
printf("ENTER 2ND NUMBER:\n");
scanf("%f",&no2);
printf("ENTER A BASIC MATHEMATICAL OPERATOR:\n");
scanf("%ch",&op);

if(op=='+')
{
    ans=no1+no2;
}else if(op=='-')
{
    ans=no1-no2;
}else if(op=='*')
{
    ans=no1*no2;
}else if(op=='/')
{
    ans=no1/no2;
}else
{
    printf("INVALID OPERATOR!!\n");
}

printf("ANSWER=%.2f\n", ans);

return 0;
}

更新:感谢您的帮助!以后我会注意复制粘贴代码而不是截图,

【问题讨论】:

  • 欢迎来到 Stack Overflow。请阅读the help pages,接受SO tour,阅读How to Ask,以及this question checklist。最后请学习如何edit您的问题来改进它,例如通过将文本作为文本复制粘贴到其中。
  • 请将代码和数据添加为文本 (using code formatting),而不是图像。图片:A)不允许我们复制粘贴代码/错误/数据进行测试; B) 不允许根据代码/错误/数据内容进行搜索;和many more reasons。除了代码格式的文本之外,只有在图像添加了一些重要的东西,而不仅仅是文本代码/错误/数据传达的内容时,才应该使用图像。
  • @Styx 你能解释一下这是什么#include {
  • 两个问题:首先没有%ch格式说明符,只有%c读取单个字符;然后%c 不会跳过前导空格,例如%d 确实如此,这意味着用于第二个数字输入的Enter 键将作为换行符读入op。如果您使用一些 debugging 来检查实际发生的情况,这将是非常明显的。所以今天的教训:请学习如何调试你的程序。
  • 附带说明,如果else 块被执行,ans 将在printf(“ANSWER=%.2f\n”, ans); 执行时未初始化。

标签: c if-statement operators


【解决方案1】:

我认为您的问题类似于Issues with using if/else statements correctly in C language

scanf("%ch",&amp;op); 更改为scanf("%c", &amp;op); 可能会解决您的问题。

【讨论】:

    【解决方案2】:

    您的代码看起来不错,但是如果您不复制代码,我们将无法调试以搜索错误。 我建议您调试代码并控制 op 变量在 if else 之前的值。

    如果您复制代码,我可以尝试调试并搜索错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-28
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 2019-07-29
      • 1970-01-01
      相关资源
      最近更新 更多