当前位置: 代码迷 >> C语言 >> [求助]C的取最大最小问题
  详细解决方案

[求助]C的取最大最小问题

热度:150   发布时间:2007-07-10 20:28:57.0
[求助]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  

----------------解决方案--------------------------------------------------------


值传递需要用指针

同时,你的MAX和MIN函数在主函数,main没有声明
----------------解决方案--------------------------------------------------------

不用指针这么麻烦吧???
而且我在主函数中声明了MAX和MIN函数,还是只可以得到最小数啊,不能得到最大的数
----------------解决方案--------------------------------------------------------
我觉得你最大值的算法好像不是对的!
----------------解决方案--------------------------------------------------------

呵呵~~请问该怎样改正啊??
谢谢
----------------解决方案--------------------------------------------------------
max=(max=x>y?x:y)>z?(max=x>y?x:y):z
这个就行了

----------------解决方案--------------------------------------------------------

谢谢
----------------解决方案--------------------------------------------------------
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结构很容易错,最好不简化
----------------解决方案--------------------------------------------------------
#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编辑过]


----------------解决方案--------------------------------------------------------
先看一下您的最大值函数
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);
}
----------------解决方案--------------------------------------------------------
  相关解决方案