输出的一直都是一个数 我想用main 和 max两个函数来写 求指点
#include <stdio.h>
int main()
{
int max(int x,int y,int z);
int a,b,c,d;
printf("请输入三个数字,数字用“,”隔开\n");
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("The max is %d\n",d);
return 0;
}
int max(int x,int y,int z)
{
int V;
if(x>y)
{
if(x>z)
V=x;
else V=z;
}
if(y>x)
{
if(y>z)
V=y;
else V=z;
}
return(V);
}
存在优化空间,考虑你今天一次学C,用最简单的实现方式
#include <stdio.h>
int max(int x, int y, int z)
{
int max = 0;
// 合计有三个数字,分两次比较就好了
// 第一次:找到前两个数字中最大的那个
if (x > y)
{
max = x;
}
else
{
max = y;
}
// 第二次:比较 z 和 max 谁更大
if (max > z)
{
// 什么也不用做
}
else
{
max = z;
}
return max;
}
int main()
{
int a, b, c, d;
printf("请输入三个数字,数字用“,”隔开\n");
scanf("%d,%d,%d", &a, &b, &c);
d = max(a, b, c);
printf("The max is %d\n", d);
return 0;
}
你的算法本身是没问题的,可以实现比较大小并得到正确答案,我第一次学C语言的答案跟你的写法是几乎一致的。后续就差不多是楼上兄弟的写法,再后续就可以考虑三目运算符,C语言三目运算符可能你还没学,后面会学到,省掉很多if判断, a>b? a:b 如果a大于b则返回:前面的a,如果a小于b则返回:后面的b
#include <stdio.h>
int max(int a, int b, int c)
{
return (a > b ? a : b) > c ? (a > b ? a : b) : c;
}
int main()
{
int a, b, c, d;
printf("请输入三个数字,数字用“,”隔开\n");
scanf("%d,%d,%d", &a, &b, &c);
d = max(a, b, c);
printf("The max is %d\n", d);
}