C语言编写3个数比较大小

main()
{int a,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d",d);
}

int max(int x,int y,int z)
{int m,n;
if(x>y) m=x;
else m=y;
if(m>z) n=m;
else n=z;
return (n);
}
该程序错在哪里,不管输入3个什么数,比较的结果都是输出第一个数。

代码没有问题,

不过你的输入没按照你自己scanf所设定的格式来

scanf("%d,%d,%d",&a,&b,&c);
这么写的话,你应该这么输入:
1,7,8(回车)
或者
2,5,3(回车)
别忘了逗号,也别忘了将3个数都输完再回车

如果这么写,
scanf("%d%d%d",&a,&b,&c);
就可以这么输入:
2(回车)
3(回车)
1(回车)

扩展资料

C语言编写3个数比较大小其他代码样例:

# include <stdio.h> //头文件
int max(int x,int y,int z); //声明子函数
void main()//主函数

{
int a,b,c,d;//定义变量名
printf("shuru a,b,c"); //打印出shuru a,b,c
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 m,int n;
if(x>y) m = x;
else m = y;
if(m>z) n = m;
else n = z;
return(n);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-11
代码没有问题,
不过你的输入估计没按照你自己scanf所设定的格式来

scanf("%d,%d,%d",&a,&b,&c);
这么写的话,你应该这么输入:
1,7,8(回车)
或者
2,5,3(回车)
别忘了逗号,也别忘了将3个数都输完再回车

如果这么写,
scanf("%d%d%d",&a,&b,&c);
就可以这么输入:
2(回车)
3(回车)
1(回车)

另外:
LS的两位,连别人的程序都没仔细看一下,就做出一副高手样子,
自打耳光了不是!本回答被提问者采纳
第2个回答  推荐于2017-10-03
# include <stdio.h> //头文件
int max(int x,int y,int z); //声明子函数
void main()//主函数

{
int a,b,c,d;//定义变量名
printf("shuru a,b,c"); //打印出shuru a,b,c
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 m,int n;
if(x>y) m = x;
else m = y;
if(m>z) n = m;
else n = z;
return(n);
}
第3个回答  2009-08-24
真是比较无语了.

首先你必须把 int max() 放到 main()上面, 这才是程序最大的问题.

再试试看得到什么结果

三楼提到的也是个常见病. 大家输入数字时很少人会 1, 2, 3, 而是
1
2
3
看你自己的习惯决定怎么改动 scanf("%d,%d,%d") 是否去掉里面的","
第4个回答  2019-09-08
输入三个数字时,中间的三个逗号都要用英文模式下输入,不然就会出现你的这种情况。