c语言 求三个数中的最大者 不知道哪里出问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 18:33:00
#include <stdio.h>
void main()
{
int max(int x,int y,int z);
int x,y,z,m;
scanf("%d,%d.%d",&x,&y,&z);
m= max(x,y,z);
printf("max=%d\n",m);
}
int max(int x,int y,int z)
{
int w;
if(x>y)
if(x>z) w=x;
else w=z;
else
if(y>z) w=y;
else w=z;
return (w);
}
总是把第二个数输出来,而不是最大数。(改了一晚上了,还是没头绪)

scanf("%d,%d.%d",&x,&y,&z);

这里面一个逗号,一个.
是不是输入错误了。

如果你直接1,2,3 得到的就是2; 但是你 1,2.3就是正确的3了

补充:

1)你的max函数逻辑以及if-else用法是对的,虽然有点绕。 当然你最好添加大括号来让代码更清晰。

2)main函数返回值int确实才是标准的。

以下是一个格式更好的程序:

#include <stdio.h>

int main()
{
int max(int x,int y,int z);

int x;
int y;
int z;

scanf("%d,%d,%d", &x, &y, &z);//已经改成2个逗号
int m = max(x,y,z);

printf("max=%d\n", m);

return 0;
}

int max(int x,int y,int z)
{
int w;
if(x > y)
{
if(x > z)
{
w = x;
}
else
{
w = z;
}
}
else
{
if(y > z)
{
w = y;
}
else
{
w = z;
}
}

return w;
}

//另外,用3元操作符其实更简练

// int max(