| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1950 人关注过本帖
标题:新手求教, 一个让我很晕的问题
只看楼主 加入收藏
hjh10845
Rank: 1
来 自:火星
等 级:新手上路
帖 子:104
专家分:0
注 册:2008-3-31
收藏
得分:0 
还有。
我没有编译器,我只有.txt 这就是我的编译器

<接受者>? or <创造者>?
2008-05-12 00:06
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 21# 的帖子
呵呵,我也有点主观了。

其实是这句“if((a<b&&b<c)||(b<c&&b<a)) p=b;”,看||后面的语句,明显是错的。
2008-05-12 00:07
qinxinhai
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:237
专家分:0
注 册:2008-4-27
收藏
得分:0 
o(∩_∩)o...
感觉一个排序问题很难整的这么经典
顶了

我秀我自己
2008-05-12 00:07
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 22# 的帖子
呵呵,共同探讨,言语如有冒犯之处 ,尚请见谅。
2008-05-12 00:08
走一圈
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2008-5-9
收藏
得分:0 
呵呵  是错了 晚了 困了看不出来了  睡觉去了
LZ写程序格式要好好改改  不然自己都很难看出来
2008-05-12 00:10
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
既然你有了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
2008-05-12 04:36
★红狼
Rank: 2
等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
收藏
得分:0 
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的随机值..
2008-05-12 10:00
black_boy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-3-25
收藏
得分:0 
感谢
感谢大家指教。
尤其是 走一圈  广陵绝唱 ★红狼

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

主要是因为自己不细心造成的```
PS:我会好好改改写程序格式 不然真的自己都很难看出来`
2008-05-12 12:51
xnm890325
Rank: 1
来 自:福建福州
等 级:新手上路
帖 子:63
专家分:0
注 册:2008-5-10
收藏
得分:0 
代码应该这样

#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);
}
2008-05-12 13:42
海底的龙
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-5-13
收藏
得分:0 
楼上的发现问题了 ,LZ的程序中有一句程序有逻辑问题,Z=MIN(A,MAX(B,C));
通过这个语句得 出来的不是最小值 ,所以会有错误,而且通过,t=max(a,max(b,c);和z可以求出最大和最小就没有必要再用if求中间值了

[[it] 本帖最后由 海底的龙 于 2008-5-13 13:53 编辑 [/it]]
2008-05-13 13:50
快速回复:新手求教, 一个让我很晕的问题
数据加载中...
 
   



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

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