【问题标题】:What is wrong with my if else statements?我的 if else 语句有什么问题?
【发布时间】:2017-02-23 01:04:26
【问题描述】:

这段代码运行得几乎完美,但它似乎忽略了我的 if else 语句。该程序的目标是仅转换 -100 到 100 之间的温度,但由于某种原因,我的代码仍在转换输入的任何数字。这很令人沮丧,因为我尝试了几种不同的方法,但程序从不进入 else 语句并且总是运行 if 语句,即使说我输入了 10000。谢谢您的任何建议

double converter()
{
  float C, F, S; 
  int input;
  printf ("Please enter a temperature in Fahrenheit:");

  scanf ("%f", &F); 

  if (F > -100 || F < 100) {

      C = FCR * (F -32);

      printf ("%f F ==> %f C    ", F, C); 
      printf ("%f", F);
  }
  else {
  F = pow(C, 3);
  printf ("Invalid Fahrenheit temperature.");
}
}

【问题讨论】:

  • C 在您的 else 子句中未初始化,以任何方式设置 F = C^3 有什么意义?
  • 如果 F 为 150,F &gt; -100 || F &lt; 100 为真,因为 150 &gt; -100

标签: c if-statement input printing conditional-statements


【解决方案1】:

目前您的if 条件将接受任何华氏温度大于 -100小于 100。这意味着每个温度都将进入if 语句。您可能打算改用 AND:

if (F > -100 && F < 100) {
    // logic here
}

【讨论】:

  • 谢谢你,我没有意识到那里的逻辑是错误的
【解决方案2】:

改变 ||到 && 它应该工作。 如果|| 的一侧为真,则输入 if。 而且1000确实大于-100

还有一个注意事项。 C 未初始化。如果 if 中的表达式的计算结果为 true,则只为它分配一个值。但是在else 中,您在 C 未初始化时使用它。并始终检查scanf 的返回值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 2013-10-29
    • 1970-01-01
    相关资源
    最近更新 更多