标题:[求助]C的取最大最小问题
只看楼主
xinghun868
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-1
 问题点数:0 回复次数:9 
[求助]C的取最大最小问题
#include<stdio.h>
main()
{int a,b,c,sum,average,maxnumber,minnumber;
scanf("%d,%d,%d",&a,&b,&c);
sum=a+b+c;
average=sum/3;
maxnumber=MAX(a,b,c);
minnumber=MIN(a,b,c);
printf("%d,%d,%d,%d",sum,average,maxnumber,minnumber);
getch();
}
int MAX(int x,int y,int z)
{ int maxnumber;
if(x>y) maxnumber=x;
else maxnumber=y;
if(x>z) maxnumber=x;
return(maxnumber);
}
int MIN(int x,int y,int z)
{ int minnumber;
if(x<y) minnumber=x;
else minnumber=y;
if(x<z) minnumber=x;
return(minnumber);
}


请问为什么不能得到最大值,却可以得到最小值??
请交各位大侠~~~
搜索更多相关主题的帖子: int maxnumber sum minnumber average 
2007-07-10 20:28
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
得分:0 


值传递需要用指针

同时,你的MAX和MIN函数在主函数,main没有声明

自我放逐。。。
2007-07-10 20:30
xinghun868
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-1
得分:0 

不用指针这么麻烦吧???
而且我在主函数中声明了MAX和MIN函数,还是只可以得到最小数啊,不能得到最大的数

2007-07-10 20:35
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
得分:0 
我觉得你最大值的算法好像不是对的!

~~我的明天我知道~~
2007-07-10 20:37
xinghun868
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-1
得分:0 

呵呵~~请问该怎样改正啊??
谢谢

2007-07-10 20:38
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
得分:0 
max=(max=x>y?x:y)>z?(max=x>y?x:y):z
这个就行了

~~我的明天我知道~~
2007-07-10 20:44
xinghun868
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-1
得分:0 

谢谢

2007-07-11 08:52
c7118250110
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-6-29
得分:0 
int max(int x,inty,intz),m
{
scanf("%d,%d,%d",x,y,z);
if(x>y);
{
if(x>z);
m=x;
}
else
{
if(y>z)
m=y
}
return(m)
} 这样就没有错拉
if else 结构的else是与最近的if配对,简化if else结构很容易错,最好不简化
2007-07-11 10:38
艾森
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-5-10
得分:0 
#include "stdio.h"
#include "conio.h"
main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;} /*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;} /*交换z,y的值*/
printf("small to big: %d %d %d\n",x,y,z);
getch();
}

[此贴子已经被作者于2007-7-11 13:38:52编辑过]


2007-07-11 13:11
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
得分:0 
先看一下您的最大值函数
int MAX(int x,int y,int z)
{ int maxnumber;
/*这里你比较了x与y的大小,你取大值赋于maxnumber*/
if(x>y) maxnumber=x;
else maxnumber=y;

/*这里你只比较了x与z的大小*/
if(x>z) maxnumber=x;

/*现在你看一下
如果Z是最大的值的话,你的程序就有问题了
如是xyz依次增大的话,你看一下,好像也有问题*/
return(maxnumber);
}
上面的if(x>z) maxnumber=x; 改为
if (maxnumber<z) maxnumber=z;应当就差不多



类似同上。
int MIN(int x,int y,int z)
{ int minnumber;
if(x<y) minnumber=x;
else minnumber=y;
if(x<z) minnumber=x;
return(minnumber);
}

2007-07-13 00:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-154446-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.107523 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved