【问题标题】:IF or boolean Statements within cc 中的 IF 或布尔语句
【发布时间】:2014-10-15 09:56:35
【问题描述】:

我被一个问题困扰了一段时间。我正在尝试编写允许用户输入值的代码,如果其中两个值相同,则应显示“这是一个完美的正方形”的输出,但如果显示三个值,则应显示“这是一个完美的立方体”被显示。到目前为止,我对我所做的事情有些困惑,但是当我输入输入值时,有时我会收到正确的答案,或者它会显示我所有的 printf 输出。我似乎无法理解这种情况,并且可以在一些帮助下真正使用。如何布置。目前我正在用 C 编写,我是一名初学者,我已经包含了我到目前为止所做的屏幕截图,如果有人能告诉我哪里出错了,那将非常有用。

到目前为止我的代码

    #include <stdio.h>

int main (void)

{

    int Height;
    int Width;
    int Depth;

    printf("Please insert value\n");
    scanf("%d%d%d", &Height, &Width, &Depth);

    if(Height == Width)
    {
        printf("It's a square cuboid\n");
    }
    else if(Height == Depth)
    {
        printf("It's a square cuboid\n");
    }
    else if(Width == Depth)
    {
        printf("It's a square cuboid\n");
    }
}

谢谢哈德利

【问题讨论】:

  • 所有这些 printf 语句都是一样的。
  • 你应该缩进你的代码
  • 由于所有消息都是相同的:"It's a square cuboid\n" 你可以通过逻辑或|| 组合它们:if ((Height == Width) || (Height == Depth) || (Width == Depth)) printf("It's a square cuboid\n");
  • 你到底想从代码中得到什么??长方体不需要具有相同长度的任何边。一个长方体需要它.. 如果所有边都相同,那么它就是一个立方体
  • 你的代码也不会编译。您最后缺少}

标签: c if-statement boolean


【解决方案1】:

您可以使用&amp;&amp; 和|| 运算符链接布尔语句。例如,如果你想检查它是否是一个完美的立方体:

//If Height equals width AND height equals depth
if(Height == Width && Height == Depth)
{
    printf("Perfect Cube!");
}

或者如果你想检查它是否是一个完美的正方形:

if(Height == Width && Depth == 0)
{
    printf("Perfect Square!");
}

因此,将所有这些放在一起,一旦你验证了你的输入,你只需要弄清楚什么检查做什么。

int Height;
int Width;
int Depth;

printf("Please insert value\n");

if(scanf("%d%d%d", &Height, &Width, &Depth) != 3)
{
    printf("Wrong number of inputs");
    return -1;
}

//this            AND  this
if(Height == Width && Depth == 0)
{
    printf("Perfect Square!");
}//     this           AND   this
else if(Height == Width && Height == Depth)
{
    printf("Perfect Cube!");
}//     This             OR  this           OR this           then...
else if (Height == Width || Height == Depth || Width == Depth)
{
    printf("Square-faced cuboid!");
}

【讨论】:

  • 它应该是合乎逻辑的或条件不合乎逻辑的。
  • @KhairulBasar 如果我只是检查这是一个方形长方体,是的,但是对于它是一个立方体或正方形,它需要是一个和。
  • @KhairulBasar 我很困惑,你认为我错了,还是我在读不应该存在的讽刺?我很确定我是对的,但如果你解释我的错误并且你是对的,我很乐意学习。
  • 其实我也很困惑......他的条件并不清楚,正如他所说,“但如果显示三个值,那么应该显示“这是一个完美的立方体””。我不明白这是什么意思......但是,到目前为止你是对的......
【解决方案2】:
  1. 您应该先测试 scanf() 返回 3,然后再依赖变量来获得正确的值。
  2. 您的所有 printf() 语句都打印相同的内容,因此无法从输出中查看它是否有效。

【讨论】:

    【解决方案3】:

    感谢您的快速回复,我现在了解它应该如何布局并且它可以完美运行。我只有一个快速跟进的问题。我将如何在每个 if 语句行中引入乘法,以便将 Height * Width * Depth 一起计时以获得体积。我希望为每一行都这样做。我已经插入了我的代码的副本,只是想真正添加它。

    {
    
    int Height;
    int Width;
    int Depth;
    
    
    scanf("%d%d%d", &Height, &Width, &Depth );
    
    if(Height == Width && Depth >=0){
    printf("It's a square cuboid\nThe volume is %d ");
    
    }
    
    if(Height == Depth && Width >= 0)
    printf("It's a square cuboid\n ");
    
    if(Width == Depth && Height >= 0)
    printf("It's a square cuboid\n");
    
    if(Height == Width && Height == Depth)
    printf("It's a perfect cube\n ");
    
    
    }
    

    谢谢 哈德利

    【讨论】:

      猜你喜欢
      • 2013-03-26
      • 2013-03-01
      • 1970-01-01
      • 2021-08-03
      • 2014-09-12
      • 2016-09-15
      • 2011-04-05
      • 2021-12-19
      • 2021-07-31
      相关资源
      最近更新 更多