编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛  
全能 ASP / PHP / ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
 30 123
发新话题
打印

新手求教, 一个让我很晕的问题

还有。
我没有编译器,我只有.txt 这就是我的编译器
<接受者>? or <创造者>?

TOP

回复 21# 的帖子

呵呵,我也有点主观了。

其实是这句“if((a<b&&b<c)||(b<c&&b<a)) p=b;”,看||后面的语句,明显是错的。

TOP

o(∩_∩)o...
感觉一个排序问题很难整的这么经典
顶了
我秀我自己

TOP

回复 22# 的帖子

呵呵,共同探讨,言语如有冒犯之处 ,尚请见谅。

TOP

呵呵  是错了 晚了 困了看不出来了  睡觉去了
LZ写程序格式要好好改改  不然自己都很难看出来

TOP

既然你有了min和max了嘛,直接        printf("%d,%d,%d\n",min(a,min(b,c)),max(min(a,b),max(min(b,c),min(a,c))),max(a,max(b,c)));
不久完了………………
专心编程………
飞燕算法初级群:3996098
我的Blog

TOP

if((a<b&&b<c)||(b<c&&b<a)) p=b;
if((b<a&&a<c)||(c<a&&a<b)) p=a;
if((a<c&&c<b)||(b<c&&c<a)) p=c;
第一句
if((a<b&&b<c)||(b<c&&b<a)) p=b;
((a<b&&b<c) 说明C最大,那么后面(b<c&&b<a) B最小.然后用||.意思就是说,B最小或C最大的时候 P=B;1 2 3.哪个时候,P没有值.只有C最大或B最小,才有值.要 不就是随机值.
第2句if((b<a&&a<c)||(c<a&&a<b)) p=a;
就是说A中间值, P有值,其他情况 P没值.
第三if((a<c&&c<b)||(b<c&&c<a)) p=c;
就是说C是中间值 P有值,其他情况 没值。

所以你后面的输出.是P的随机值..

TOP

感谢

感谢大家指教。
尤其是 走一圈  广陵绝唱 ★红狼

广陵绝唱  ★红狼 说出了正确原因

主要是因为自己不细心造成的```
PS:我会好好改改写程序格式 不然真的自己都很难看出来`

TOP

代码应该这样

#include <stdio.h>
int max(int x,int y)
{
int z;
if(x>y) z=x;
else z=y;
return (z);
}
void main()
{
int a,b,c,z,t,p;
int max(int x,int y);
int min(int x,int y);
printf("请输入三个数\n");
scanf("%d,%d,%d",&a,&b,&c);
t=max(a,max(b,c));
z=min(a,min(b,c));

if((a<b&&b<c)||(c<b&&b<a)) p=b;
if((b<a&&a<c)||(c<a&&a<b)) p=a;
if((a<c&&c<b)||(b<c&&c<a)) p=c;

printf("%d,%d,%d",z,p,t);

}
int min(int x,int y)
{
int z;
if(x<y)  z=x;
else z=y;
return (z);
}

TOP

楼上的发现问题了 ,LZ的程序中有一句程序有逻辑问题,Z=MIN(A,MAX(B,C));
通过这个语句得 出来的不是最小值 ,所以会有错误,而且通过,t=max(a,max(b,c);和z可以求出最大和最小就没有必要再用if求中间值了

[ 本帖最后由 海底的龙 于 2008-5-13 13:53 编辑 ]

TOP

 30 123
发新话题