三个数比较大小的c语言程序

#include <stdio.h>
void main()
{
int max(int x,int y,int j);
int a,b,c,x;
scanf("%d,%d,%d",&a,&b,&x) ;
c=max(a,b,x);
printf("max=%d\n",c);
}
int max(int x,int y,int j )
{
int z;
if (x>y)
{
if (x>j) z=x;
else z=j;
}
else
{
if (y>j) z=y;
else z=j;
}
return z;
}
运行之后,总是max=第一个数,谁能告诉我哪里出错了?例如 我输进去 2 5 3 结果为max=2

比较简单的方法就是对三个数按大小排序。先将最小的数放到首位,如果发现有大小顺序不对的,就将它们交换位置。
#include<stdio.h>
int main()
{
int a,b,c,t;
printf("请输入三个整数:");
scanf("%d%d%d",&a,&b,&c);
if(a>b){t=a; a=b; b=t;} //a与b若大小顺序不对,就交换位置
if(a>c){t=a; a=c; c=t;} //a与c若大小顺序不对,就交换位置;到此a肯定是最小
if(b>c){t=b; b=c; c=t;} //b与c若大小顺序不对,就交换位置;到此c肯定是最大
printf("这三个数从小到大排列是:%d %d %d\n",a,b,c);
getch();
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-21
程序有问题把
在max函数中
三个if语句的条件都为逗号表达式
逗号表达式的值为逗号表达式中最后一个表达式的值
即下面左边的三条语句相当于右边的三条语句
if
(x>y,x>z)
a=x; if(x>z)
a=x;
if
(y>x,y>z)
a=y; if(y>z)
a=y;
if
(z>x,z>y)
a=z; if(z>y)
a=z;
应把逗号改为&&
&&的意思是且,和;
修改后程序如下
#include<stdio.h>
void
main()
{
int
max(int
x,int
y,int
z)
;
int
a,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d\n",d);
}
int
max(int
x,int
y,int
z)
{
int
a;
if
(x>y&&x>z)
a=x;
if
(y>x&&y>z)
a=y;
if
(z>x&&z>y)
a=z;
return(a);
}
第2个回答  2014-09-04
三目运算符可以转换为if语句的。给你拿if写一下你就明白了
if(a>b)
{
if(a>c) max=a;
else max=c;
}
else
{
if(b>c) max=b;
else max=c;
}
数字再多了拿三目运算符即不好做,写出来也会让人迷糊。
其实这样的语句最好写成if形式。用三目运算符写成这样不好看的。
以上回答你满意么?
第3个回答  推荐于2017-09-10
#include <stdio.h>
int max(int,int,int);
void main()
{
int a,b,c,x;
scanf("%d,%d,%d",&a,&b,&x) ;
c=max(a,b,x);
printf("max=%d\n",c);
}
int max(int x,int y,int j )
{
int z;
if (x>y)
{
if (x>j) z=x;
else z=j;
}
else
{
if (y>j) z=y;
else z=j;
}
return z;
}
1。不要在函数内定义函数,2.你规定的输入格式是x,x,x 例 3,5,6追问

不要在函数内定义函数
什么意思? 我刚学c语言, 还不太懂。

追答

就是像我的一样,把int max(int,int,int);这句放到主函数外面啊。。

追问

这不是调用的函数吗 书上也是这样的啊

追答

调用函数是c=max(a,b,x);这一句啊,亲。。刚才那句应该是函数定义声明语句,一般放在主函数外面的

本回答被提问者采纳
第4个回答  2018-09-21
输入函数有问题,不能走有逗号
相似回答