编程论坛's Archiver

woyunlu 发表于 2008-7-21 23:07

菜鸟求助啊!C程序设计第一章第五题做不出!

题目是从三个数种得出最大的
请问有什么错的!指教下![tk11]
#include<stdio.h>
main()
{
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 f;
if(x>y>z)f=x;
if(y>x>y)f=y;
else f=z;
return(f);
}

[[it] 本帖最后由 woyunlu 于 2008-7-21 23:22 编辑 [/it]]

ams87 发表于 2008-7-21 23:16

...能运行...

[[it] 本帖最后由 ams87 于 2008-7-21 23:19 编辑 [/it]]

woyunlu 发表于 2008-7-21 23:20

是能运行但是!不正确啊!

[[it] 本帖最后由 woyunlu 于 2008-7-21 23:21 编辑 [/it]]

ams87 发表于 2008-7-21 23:30

你的输入系统格式不对.你这么输入:
a,b,c回车就对了

_HuBin 发表于 2008-7-21 23:30

#include<stdio.h>
main()
{
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 f;
if(x>y>z)f=x;
if(y>x>y)f=y;//怎么二个Y啊???????????
else f=z;
return(f);
}

eesophie 发表于 2008-7-21 23:32

比较大小函数里面if()里用错了,不能用连不等号的~
要写成a>b&&b>c的形式
还有我觉得你的算法也有问题
直接写:
int f;
f=a>b?a:b;
f=f>c?f:c;
return f;
就可以了。

ams87 发表于 2008-7-21 23:32

饿...这个倒没注意......怎么有这样的错误???改错题也不用这样找茬吧???

coming 发表于 2008-7-21 23:34

if里面的东西怎么能那么写...

ams87 发表于 2008-7-21 23:35

饿........

eesophie 发表于 2008-7-21 23:36

回复 7# ams87 的帖子

a>b>c是一个表达式,所以一定有一个值。
比如说a>b是成立的,那么是真,值为1;
之后再用1与c比较,肯定得不到正确答案的。
就像-5<a<5一样,这个式子一定是1.

ams87 发表于 2008-7-21 23:42

哦...谢谢.偶菜鸟,读书的时候都睡觉去了....现在来补习.....请多多指教..

woyunlu 发表于 2008-7-22 00:36

没办法刚学的!什么都不懂!!多谢大家啦!!

carmen0531 发表于 2008-7-22 01:44

#include<stdio.h>
int max(int x,int y,int z)
{
int f;
if(x>y&&y>z)
        f=x;
if(y>x&&y>z)f=y;
else f=z;
return f;
}

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

carmen0531 发表于 2008-7-22 01:45

楼上的真是标准答案呀~~~厉害。。。。。

carmen0531 发表于 2008-7-22 01:50

对楼上的楼上的补充

将max模块放在上面比较好,让编辑器先编译然后再进入主函数会比较流畅,这样一般也能减少几个错误。

dwfaarp100n 发表于 2008-7-22 09:29

你看看如何,我没环境了

#include<stdio.h>
main()
{
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 f;
if(x>y)f=x;else f=y;
if(f>z)f=z;
return(f);
}

woyunlu 发表于 2008-7-22 10:18

[quote][bo][un]dwfaarp100n[/un] 在 2008-7-22 09:29 的发言:[/bo]

#include
main()
{
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 f;
if(x>y)f=x;else f=y;
if(f>z)f=z;
return(f);
} [/quote]

你的变了求最小值啦!13楼的是正确的!谢啦!

s67224224 发表于 2008-7-22 10:40

[tk01] [tk01] [tk01]

guoxiaoling 发表于 2008-7-22 11:42

其实没必要比较三数。只需把最大的数传给Z就行了。
int max(int x,int y,int z)
{
int t;
if(x>y)
  y=x;
if(y>z);
  z=y;

return(z);
}

StarWing83 发表于 2008-7-22 12:29

LZ太强了………………

页: [1] 2

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.