王鹿其 发表于 2023-9-24 21:23:15

这个代码错在哪?

#include <stdio.h>

int main()
{
        int a,b,c;
       
        printf("请输入三个整数。\n 整数A:");
        scanf("%d",&a);
       
        printf("整数B:") ;
        scanf("%d",&b);
       
        printf("整数C:");
        scanf("%d",c);
       
       
       
       
       
       
       
       
        if(a==b&&b==c)
        {
        puts("三个值都相等");
        }
        if(a!=b)
        {
                if(b!=c&&c!=a){
                        puts("三个值各不相同");
                }
                else {
                puts("有两个值相等");
        }
       
        }
       
       
       
       
       
        return 0;
       
}

isdkz 发表于 2023-9-24 21:23:22

在第16行中,应该使用 &c 而不是 c 来读取整数C的值。因此,正确的代码如下:

#include <stdio.h>

int main()
{
    int a,b,c;

    printf("请输入三个整数。\n 整数A:");
    scanf("%d",&a);

    printf("整数B:");
    scanf("%d",&b);

    printf("整数C:");
    scanf("%d",&c);

    if(a==b&&b==c)
    {
      puts("三个值都相等");
    }
    if(a!=b)
    {
      if(b!=c&&c!=a){
            puts("三个值各不相同");
      }
      else {
            puts("有两个值相等");
      }

    }

    return 0;

}

Mike_python小 发表于 2023-9-24 21:23:29

> 问题:以下代码有什么错误?如何解决?

以下是代码中存在的问题:

1. 在第22行,scanf("%d", &c) 应该为 scanf("%d", c) ,即应该传递变量地址。

2. 在第24到34行,if 语句中的条件判断不完整,没有考虑 a 和 c 是否相等的情况,需要增加一些判断条件。

以下是修改后的代码:


#include <stdio.h>

int main()
{
    int a, b, c;

    printf("请输入三个整数。\n 整数A:");
    scanf("%d", &a);

    printf("整数B:") ;
    scanf("%d", &b);

    printf("整数C:");
    scanf("%d", &c);

    if (a == b && b == c) {
      puts("三个值都相等");
    }
    else if (a != b && b != c && c != a) {
      puts("三个值各不相同");
    }
    else {
      puts("有两个值相等");
    }

    return 0;
}


经过修改后的代码可以正确地输出输入的三个整数之间的关系。在修改代码时需要仔细检查每一行代码,确保语法正确、逻辑清晰。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
回答可能有误,多多谅解!

陶远航 发表于 2023-9-24 21:23:35

在你给出的代码中,有一个问题导致编译错误和逻辑错误:

1. 在 scanf 函数的第三个输入参数 %d 前漏掉了 & 符号,导致没有正确传递变量的地址。这会导致编译错误。
   错误行:scanf("%d", c);
   正确行:scanf("%d", &c);

此外,你的代码存在逻辑错误问题:

2. 当检查是否有两个值相等时,使用了嵌套的 if 语句。然而,你的逻辑条件和输出不完整,因为只有在 a!=b 的情况下才会执行内部的 if 语句块。
   你可以通过修改逻辑条件来解决这个问题。

以下是修正后的代码:

#include <stdio.h>

int main() {
    int a, b, c;
   
    printf("请输入三个整数。\n整数A:");
    scanf("%d", &a);
    printf("整数B:");
    scanf("%d", &b);
    printf("整数C:");
    scanf("%d", &c);
   
    if (a == b && b == c) {
      puts("三个值都相等");
    } else if (a != b && b != c && c != a) {
      puts("三个值各不相同");
    } else {
      puts("有两个值相等");
    }
   
    return 0;
}


现在代码中的问题已经修复,将可以顺利编译和运行,并且给出正确的结果。

希望能帮助到你!如果有任何其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
页: [1]
查看完整版本: 这个代码错在哪?