可以运行,但出来都结果是错的,是一串长数码
负数,是环境不对,还是VS2022软件出错了吗?请指点。
代码不规范🤨
#include <stdio.h>
// 函数声明
int max(int x, int y, int z);
int main() {
int a, b, c, d;
printf("请输入三个数:\n");
scanf_s("%d %d %d", &a, &b, &c);
d = max(a, b, c);
printf("max = %d\n", d);
return 0;
}
// 函数定义
int max(int x, int y, int z) {
int i;
if (x > y)
i = x;
else
i = y;
if (x > z)
i = x;
else
i = z;
if (y > z)
i = y;
else
i = z;
return i;
}
scanf
输入格式有问题
用逗号隔开,注意中英文模式
您好,您的MAX函数实现中感觉有问题,既然您将x,y中的最大值已经放入了i,哪您可以直接用i和z去比较,然后确认i和z谁更大。
或者您也可以用三目运算符去处理:
return ((x > y) ? ((x > z) ? x : z) : ((y > z) ? y : z)
你的scanf函数使用逗号,分割,输入时也要按逗号分割,例如7,8,9
另外你的max函数有逻辑错误,不信你输入9,8,7试试
【以下回答由 GPT 生成】
问题出现在max函数中的比较逻辑上。当输入的三个数都相同时,没有处理这种情况。在这种情况下,函数没有给变量i赋初值,导致返回了一个未初始化的变量。为了解决这个问题,可以在函数max中添加一个判断条件,当x、y、z都相等时,直接将i赋值为x、y或z中的任意一个即可。
以下是修改后的代码:
#include<stdio.h>
int max(int x, int y, int z) {
int i;
if (x > y && x > z) {
i = x;
} else if (y > x && y > z) {
i = y;
} else if (x == y && y == z) {
i = x; // 或者 i = y; 或者 i = z;
} else {
i = z;
}
return i;
}
int main() {
int a, b, c, d;
printf("请输入三个数:\n");
scanf("%d %d %d", &a, &b, &c);
d = max(a, b, c);
printf("max = %d\n", d);
return 0;
}
这样就可以正常处理输入三个数相等的情况了。
【相关推荐】