C语言三个数比较大小

dyh93 2012-09-04 10:50:38
#include <stdio.h>
int main()
{
int max(int ,int ,int);
int a,b,c,d;
scanf("%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 w;
if(x>y) w=x;
else w=y;
if(z>w) w=z;
return(w);
}

我是个刚上大一的学生,求大神帮帮忙,解答一下!
还有,用C++都可以实现比较大小的功能,用C就不行了! 求大神帮帮忙!
...全文
2041 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gloveing 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 2 楼 的回复:

max函数好的
就是这里出问题:
scanf("%d ,%d ,%d",&amp;a,&amp;b,&amp;c);
-》
scanf("%d%d%d",&amp;a,&amp;b,&amp;c);


scanf("%d%d%d",&a,&b,&c); 你让系统如何分辨谁是 a,谁……
[/Quote]
你去试试?
very_xia 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 2 楼 的回复:

max函数好的
就是这里出问题:
scanf("%d ,%d ,%d",&amp;a,&amp;b,&amp;c);
-》
scanf("%d%d%d",&amp;a,&amp;b,&amp;c);


scanf("%d%d%d",&a,&b,&c); 你让系统如何分辨谁是 a……
[/Quote]
这个好像是用回车……
lovethinkpad 2012-09-05
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int max(int, int, int);

int main(void)
{
int a,b,c,d;
printf("请输入3个数字(格式如下:1 2 3):\n");//个人觉得最好添加输入提示语句,如:个数,格式等信息;
scanf("%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 w;
if(x>y) w=x;
else w=y;
if(z>w) w=z;
return(w);
}
NiuxY123456 2012-09-05
  • 打赏
  • 举报
回复
你可以看看scanf函数相关输入知识,程序没有问题 输入方面可能有问题
lovethinkpad 2012-09-05
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int max(int, int, int);

int main(void)
{
int a,b,c,d;
printf("请输入3个数字(格式如下:1 2 3):\n");//我觉得添加上输入格式提示语句是有必要的!
scanf("%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 w;
if(x>y) w=x;
else w=y;
if(z>w) w=z;
return(w);
}
lovethinkpad 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 2 楼 的回复:

max函数好的
就是这里出问题:
scanf("%d ,%d ,%d",&amp;a,&amp;b,&amp;c);
-》
scanf("%d%d%d",&amp;a,&amp;b,&amp;c);


scanf("%d%d%d",&a,&b,&c); 你让系统如何分辨谁是 a……
[/Quote]
我觉得你说的“scanf("%d%d%d",&a,&b,&c); 你让系统如何分辨谁是 a,谁是 b 啊?”是有问题的,这个明明是可以区分的,我不知道你是否上机执行了!
AnYidan 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

max函数好的
就是这里出问题:
scanf("%d ,%d ,%d",&a,&b,&c);
-》
scanf("%d%d%d",&a,&b,&c);
[/Quote]

scanf("%d%d%d",&a,&b,&c); 你让系统如何分辨谁是 a,谁是 b 啊?

scanf("%d %d %d",&a,&b,&c); // 输入时用空格区分
scanf("%d ,%d ,%d",&a,&b,&c); // 输入时用逗号区分

AnYidan 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

max函数好的
就是这里出问题:
scanf("%d ,%d ,%d",&a,&b,&c);
-》
scanf("%d%d%d",&a,&b,&c);
[/Quote]

scanf("%d%d%d",&a,&b,&c); 你让系统如何分辨谁是 a,谁是 b 啊?

scanf("%d %d %d",&a,&b,&c); // 输入时用空格区分
scanf("%d ,%d ,%d",&a,&b,&c); // 输入时用逗号区分

AnYidan 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

max函数好的
就是这里出问题:
scanf("%d ,%d ,%d",&a,&b,&c);
-》
scanf("%d%d%d",&a,&b,&c);
[/Quote]

scanf("%d%d%d",&a,&b,&c); 你让系统如何分辨谁是 a,谁是 b 啊?

scanf("%d %d %d",&a,&b,&c); // 输入时用空格区分
scanf("%d ,%d ,%d",&a,&b,&c); // 输入时用逗号区分

淡定的小Y 2012-09-05
  • 打赏
  • 举报
回复
scanf中不要加多余的空格,符号等东西的!
BYD123 2012-09-05
  • 打赏
  • 举报
回复
检查你的输入和scan是否对应!
wizard_tiger 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 2 楼 的回复:

max函数好的
就是这里出问题:
scanf("%d ,%d ,%d",&amp;a,&amp;b,&amp;c);
-》
scanf("%d%d%d",&amp;a,&amp;b,&amp;c);


scanf("%d%d%d",&a,&b,&c); 你让系统如何分辨谁是 a……
[/Quote]
scanf函数是用空白字符区分,用回车结束输入。
dyh93 2012-09-05
  • 打赏
  • 举报
回复
嗯嗯!谢谢诸位大神了! 19楼的朋友,谢咯!我又学到了一点!
  • 打赏
  • 举报
回复
scanf函数在输入时要按括号里格式的原样输入,就是说要是有逗号则输入时也得要输入逗号,没有逗号的在输入时不用输入逗号,比如要使a=4,b=9,的语句:
scanf("%d%d",&a,&b);在输入时为“4 9回车”
scanf("%d,%d",&a,&b);在输入时为“4,9回车”
JKhere 2012-09-05
  • 打赏
  • 举报
回复
scanf函数的用法真不是一两句能说清的
sowhat_Ah 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

引用 14 楼 的回复:

可以用A?B:C,更简洁.
C/C++ code

int max(int x,int y,int z)
{
return (((x>y)?x:y)>z)?((x>y)?x:y):z;
}

不考虑效率的么?
C/C++ code

int max(int a,int b,int c)
{
int m;

return((m=……
[/Quote]

理论上效率是高了点,但是也多声明一个局部变量,个人觉得没必要。
itlodge 2012-09-05
  • 打赏
  • 举报
回复
我一般这样写,更容易理解:

int max(int a,int b,int c)
{
int m = a;

if(b > m)
m = b;
if(c > m)
m =c;
return m;
}
Alexander 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

可以用A?B:C,更简洁.
C/C++ code

int max(int x,int y,int z)
{
return (((x>y)?x:y)>z)?((x>y)?x:y):z;
}
[/Quote]
不考虑效率的么?

int max(int a,int b,int c)
{
int m;

return((m=a>b?a:b)>c?m:c);
}
sowhat_Ah 2012-09-05
  • 打赏
  • 举报
回复
可以用A?B:C,更简洁.

int max(int x,int y,int z)
{
return (((x>y)?x:y)>z)?((x>y)?x:y):z;
}
Gloveing 2012-09-04
  • 打赏
  • 举报
回复
max函数好的
就是这里出问题:
scanf("%d ,%d ,%d",&a,&b,&c);
-》
scanf("%d%d%d",&a,&b,&c);
加载更多回复(1)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧