小羊爱吃小草 发表于 2023-12-25 08:27:02

#include <stdio.h>

int main()
{
        int x, y, z, max;
        printf("3numbers :");
        scanf("%d%d%d", x, y, z);
        if(x < y)
        {
                max = y;
       if(y < z)
       {
               max = z;
       }
       else
       {
               max = y;
       }
        }
       else if(x > z)
       max = x;
       else
       max = z;
       
       printf("%d", max);
       
       return 0;
}
哪里错了

FishC 发表于 2023-12-25 08:27:10

代码中的错误在于scanf函数的参数传递方式,应该传递变量的地址而不是变量的值。修改后的代码如下:

#include <stdio.h>

int main()
{
int x, y, z, max;
printf("3 numbers: ");
scanf("%d%d%d", &x, &y, &z);// 修正这一行的代码
if(x < y)
{
    max = y;
    if(y < z)
    {
      max = z;
    }
    else
    {
      max = y;
    }
}
else if(x > z)
    max = x;
else
    max = z;

printf("The maximum number is: %d\n", max);// 添加换行符和输出提示信息

return 0;
}

这样修改后,代码将能正确读取用户输入的三个数字,并输出其中最大的数字。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2023-12-25 10:09:47

本帖最后由 jackz007 于 2023-12-25 10:13 编辑

#include <stdio.h>

int main(void)
{
      int x , y , z                                                    ;
      printf("3 numbers :")                                          ;
      scanf("%d%d%d", & x, & y, & z)                                 ; // 这一行有错,值类型变量必须提交变量的内存地址而不是变量本身
      printf("%d\n" , (x > y && x > z) ? x : (y > x && y > z) ? y : z) ; // 挑最大、最小值的问题还是上三目运算最安逸
      return 0                                                         ;
}
页: [1]
查看完整版本: