| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 823 人关注过本帖
标题:请教,看似相同的代码为什么结果不同
只看楼主 加入收藏
ahjszll
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-5-17
收藏
 问题点数:0 回复次数:10 
请教,看似相同的代码为什么结果不同

程序一:
#include<stdio.h>
void main()
{
int max(int a,int b,int c);
int x,y,z,d;
scanf("%d,%d,%d",&x,&y,&z);
d=max(x,y,z);
printf("The max is %d\n",d);

}
int max(int a,int b,int c)
{
int midway; /*midway为中间值*/
midway=(a>b?a:b);
midway=(midway>c?midway:c);
return midway;
}

程序二:
#include<stdio.h>
void main()
{
int max(int a,int b,int c);
int x,y,z,d;
scanf("%d,%d,%d",&x,&y,&z);
d=max(x,y,z);
printf("The max is %d\n",d);

}
int max(int a,int b,int c)
{
int midway1,midway2; /*midway1,midway2为中间值*/
printf("%d,%d,%d\n",a,b,c); /*观察a,b,c此时的数值*/
midway1=(a>b?a:b);
midway1=(midway2>c?midway2:c);
return midway1;
}

程序三:
#include<stdio.h>
void main()
{
int max(int a,int b,int c);
int x,y,z,d;
scanf("%d,%d,%d",&x,&y,&z);
d=max(x,y,z);
printf("The max is %d\n",d);

}
int max(int a,int b,int c)
{
int midway1,midway2; /*midway1,midway2为中间值*/
midway1=(a>b?a:b);
midway1=(midway2>c?midway2:c);
return midway1;
}

测试结果:其中上面的程序1和程序2经测试正确的,但程序3测试后的结果是错误的(它的结果总是2463).
问题:感觉好象类型的错误,但怎么也想不明白的地方是程序2仅仅是比程序3多了一行代码"printf("%d,%d,%d\n",a,b,c);"这代码到底起了什么作用??


搜索更多相关主题的帖子: 代码 结果 
2007-07-28 19:16
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

你第三个程序中
int midway1,midway2; /*midway1,midway2为中间值*/
midway1=(a>b?a:b);
midway2=(midway1>c?midway1:c);
return midway2;

并且你输入的时候每个数之间的分隔符只能是逗号


天行健,君子以自强不息!!QQ:68660681
2007-07-28 19:47
czl
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-7-1
收藏
得分:0 

第二个程序怎么会对呢 有和LS说的同样问题啊

2007-07-28 20:09
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

第二个也错


天行健,君子以自强不息!!QQ:68660681
2007-07-28 20:10
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
得分:0 

int midway1,midway2; /*midway1,midway2为中间值*/
printf("%d,%d,%d\n",a,b,c); /*观察a,b,c此时的数值*/
midway1=(a>b?a:b);
midway1=(midway2>c?midway2:c);
return midway1;
} printf("%d,%d,%d\n",a,b,c); 这个只是观察此时.a,b,c在形参问题上.实参与形参之间 在值方面.. 只能是单项的从实参传给形参..
还有就是你这里的.. midway2 根本就没赋值.... 估计是你的笔误?midway1=(a>b?a:b); 应该是midway2=(a>b?a:b); 


2007-07-28 20:12
ahjszll
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-5-17
收藏
得分:0 
以下是引用maoguoqing在2007-7-28 19:47:36的发言:

你第三个程序中
int midway1,midway2; /*midway1,midway2为中间值*/
midway1=(a>b?a:b);
midway2=(midway1>c?midway1:c);
return midway2;

并且你输入的时候每个数之间的分隔符只能是逗号

哦,原来是我的原程序错了,程序2最后也是有问题的,谢谢楼上这么多热心朋友的指教.
这次出错的原因还是自己的粗心大意,以后一定改正.
再次感谢
总结错误原因和新的问题:
1..没有发现错误的原因是我只用1,2,3这三个数字的固定顺序作为测试原码的正确行,这才使得程序2所得的结果总是3,让我勿以为程序2是正确的.
2..但我在程序3上加上printf("%d,%d,%d\n",a,b,c); 这一句就让程序3的结果和程序2结果不同,这是为什么?新的问题,希望指教!

[此贴子已经被作者于2007-7-28 20:21:12编辑过]

2007-07-28 20:18
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

加上后2 和 3 不就是同一个程序嘛,输入相同他们的结果相同的


天行健,君子以自强不息!!QQ:68660681
2007-07-28 20:24
ahjszll
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-5-17
收藏
得分:0 

真的是不一样的同样是用1,2,3这个顺序测试,用程序2的代码所的结果是3,去掉哪个printf语句后所的结果是2455.

我用的上是win-tc1.9

2007-07-28 20:32
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
  我在VC上运行了下,一样的

天行健,君子以自强不息!!QQ:68660681
2007-07-28 20:37
ahjszll
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-5-17
收藏
得分:0 
2007-08-07 20:08
快速回复:请教,看似相同的代码为什么结果不同
数据加载中...
 
   



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

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