| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1867 人关注过本帖
标题:求助哦 3129
只看楼主 加入收藏
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
楼主要做的是用函数解决,我想他的思路是正确的,结构化程序基本是利用函数的(我自己的理解,也许有误)。

PS:上战场,如果是远程,当然用枪。可这次可能是去敌后方突袭,当然是用匕首类无声短兵器。无论做什么事,要根据行动目的和过程制定所需工具,不能说有了原子弹,就不用54式手枪了。
2008-03-09 20:58
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
回复 11# 的帖子
有个问题问楼上哈,打仗,如果是远程,当然用枪。可这次可能是去敌后方突袭,当然是用匕首类无声短兵器。无论做什么事,要根据行动目的和过程制定所需工具,不能说有了原子弹,就不用54式手枪了。
但是现在为什么没有什么软件开发者用tc呢?
c最正式的环境是unix

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-09 21:21
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
匕首、手枪之类的只适合单兵作战,如果是大规模战斗,当然得用到先进武器,包括核武器了。

    TC只适合一些小程序,那是因为在当时即要省内存,又要出好程序的条件下产生的。现在一些大的工程当然不必要用到它了,但它还是有生存的土壤和适合的人群的,不然为什么它还存在着?淘汰是必然的,但不是现在。
2008-03-09 21:25
花田一路
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-3-5
收藏
得分:0 
好了好了,别把注意力放在这些上了,这些再争论也没有用,做好自己份内事情就好,真正学点东西才是真的
2008-03-10 12:13
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
你重新编译一下,输出的弄不好还识别的数字呢!!
2008-03-10 13:28
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 
[bo]以下是引用 [un]广陵绝唱[/un] 在 2008-3-9 21:25 的发言:[/bo]

匕首、手枪之类的只适合单兵作战,如果是大规模战斗,当然得用到先进武器,包括核武器了。

    TC只适合一些小程序,那是因为在当时即要省内存,又要出好程序的条件下产生的。现在一些大的工程当然不必要用到它了,但它还是有生 ...

为什么TC没有被淘汰,那是因为中国的教材太落后了,都是十几年前的版本,只是改了一些错误而已。落后的教材当然要提倡TC了,因为它里面的源程序无法通过新的编译器的编译,它怎么敢提倡新的IDE呢?做事不要像矮人看戏那样,要有自己的思考和探索,要尝试改变,不要一味的继承。
2008-03-12 21:20
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 
[bo]以下是引用 [un]花田一路[/un] 在 2008-3-10 12:13 的发言:[/bo]

好了好了,别把注意力放在这些上了,这些再争论也没有用,做好自己份内事情就好,真正学点东西才是真的

工欲善其事,必先利其器。要学编程,第一步就是选择好的IDE和参考书!Do you understand?
2008-03-12 21:25
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
楼主,你让我怎么说你呢,!

你有两个极其严重的错误,我理解,因为这种错误如果不告诉你,你自己意识不到。
(1)如果你的max函数在main函数的后面,那么在调用max之前请先声明它,告诉编译器你有这么一个函数。放一条函数声明在前面:
int max(int,int,int);
这样编译器就知道了,你将在后面定义一个叫做max的函数。这样是一个比较好的习惯,但是比较麻烦的是,如果你的函数改动了,那么声明也要做相应改变。如果你想避免这个麻烦,那么把你的main函数放到最后面去!

(2)你的max函数里面犯了个很严重的逻辑错误,正确的逻辑是:(先不论你的代码效率了,假设按照你的思维来写:)
 if (x>=y&&x>=z) m=x;
 [bo]else[/bo] if (y>=x&&y>=z) m=y;  /* 注意!!!这里的else被你给漏掉了!!!*/
 else m=z;
请注意上面的第一个else不可以缺少!否则你的最后一个else就是和第二个if匹配!这样会导致逻辑错误。换句话说,只要y不是最大的情况,那么返回的就是z。例如你输入124,23,5;结果返回的是什么?返回的是5!这就是你缺少第一个else造成的严重后果。连续的if,else if,else,相当于switch-case分支选择结构,换句话说,类似并联的支路。只能走一条支路。而你缺少else之后,变成非switch-case的顺序结构,类似支路串联的结果了。这两种逻辑是有本质区别的,你可以自己花出这两种逻辑的流程图也是不同的。

请注意另一个逻辑错误是,上面的比较必须是“大于等于”,而不是“大于”,否则会导致什么错误呢,例如你输入100,100,3, 结果返回的是3!!!。

我觉得你这种思维非常的不清楚,其实很直观的,用stdlib.h中的宏来表达应该是:
return max(max(x,y),z); 它展开就是:
return (x>y? x:y)>z? (x>y? x:y):z;

如果我们用你所定义的m来写,那么应该是这样:
m=max(x,y);
return max(m,z);
展开结果是:
m=x>y? x:y;
return m>z? m:z;
 

我希望你能意识到这个问题的严重性!你的逻辑错误,比第一个那种经验上的错误更加严重100倍!三个数的找最大值写成这样,要是输入5个数,返回最大的数,不一定写成什么样子了,对于这种代码来说,我也真是没什么话可说了。

[[it] 本帖最后由 hoodlum1980 于 2008-3-13 02:22 编辑 [/it]]
2008-03-13 01:48
快速回复:求助哦 3129
数据加载中...
 
   



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

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