| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4682 人关注过本帖
标题:此帖关闭
只看楼主 加入收藏
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
其实我一直觉得她是飞燕。

钱嘛,娱乐也是要付钱的,对不对?

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-02 15:24
VxWorks
Rank: 3Rank: 3
来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
收藏
得分:0 
int main()
{
    int n;
    FILE *a=fopen("a.txt","r"),
            *b=fopen("b.txt","w");
    if(!a||!b)return 1;
    while (fscanf(a,"%d%*c",&n)!=EOF)c[n]++;
    for (n=0;!c[n];n++);
    fprintf(b,"%d",n);c[n]--;
    while (n<N)
        if (c[n]) fprintf(b,",%d",n),c[n]--;
        else n++;
    fclose(a);fclose(b);
    return 0;

之所以说丑陋是因为
1.用a,b做流指针变量名
2.fprintf(b,"%d",n);c[n]--;这一句将两行并做一行,后面也有这样的问题
总结一下编码风格很烂,不要说只是应付作业,好的风格是习惯,我是写不出这种烂风格的,因为我没有这种习惯。

另外程序固定了输入输出文件名,如果是我写,我会让程序从stdin读,向stdout输出,用户通过重定向选择该怎么用程序。这样的程序更灵活。

为了防止世界被破坏,为了守护世界的和平,贯彻爱与真实的邪恶,可爱又迷人的反派角色,VxWorks!
Don't ask me any question.I'm just here to buy soy sauce.
2008-07-02 15:28
qGemini
Rank: 1
等 级:禁止访问
帖 子:100
专家分:0
注 册:2008-6-28
收藏
得分:0 
[bo][un]VxWorks[/un] 在 2008-7-2 15:28 的发言:[/bo]
int main()
{
    int n;
    FILE *a=fopen("a.txt","r"),
            *b=fopen("b.txt","w");
    if(!a||!b)return 1;
    while (fscanf(a,"%d%*c",&n)!=EOF)c[n]++;
    for (n=0;!c[n];n++);
    fprintf(b,"%d",n);c[n]--;
    while (n<N)
        if (c[n]) fprintf(b,",%d",n),c[n]--;
        else n++;
    fclose(a);fclose(b);
    return 0;

之所以说丑陋是因为
1.用a,b做流指针变量名
2.fprintf(b,"%d",n);c[n]--;这一句将两行并做一行,后面也有这样的问题
总结一下编码风格很烂,不要说只是应付作业,好的风格是习惯,我是写不出这种烂风格的,因为我没有这种习惯。

另外程序固定了输入输出文件名,如果是我写,我会让程序从stdin读,向stdout输出,用户通过重定向选择该怎么用程序。这样的程序更灵活。

把文件名或者操作固定死了是让楼主在自己不懂的情况下无法修改
让楼主仍然产生依赖,迫他交钱

Gemini  C/C++群57751397
本人不对自己的言论负责

http://
2008-07-02 15:32
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
有句话,是程序就有Bug。你要怎么说当然是你的自由。
我不求程序完全没有缺陷(那不可能),只要那些缺陷是我的目的,在我的控制之下就可以了。
这是C的思想,是C的哲学。

LS不懂C,鉴定完毕。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-02 15:32
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
重定向是可以用freopen
但是,如果我想调试
直接a=stdin就可以了

再者,这个东西是starwing的主体,我的代码没看规模,虽然适用性强,但效率低一些,我的代码用的是starwing的第二版代码做主体改的

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-02 15:34
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
fprintf(b,"%d",n);c[n]--;
    while (n<N)
        if (c[n]) fprintf(b,",%d",n),c[n]--;

你说的两行并在一起,并不是看见“有某个东西出现了”就是坏习惯。人是活的。就像goto一样,不一定就一定是坏习惯。
这两行在逻辑上是一个操作,所以和在一起写,而且下面if里面的操作也是合二为一的,两者是对应的。而且更容易让人理解这两行逻辑的一致性。

照你这么说,很明显的出栈工作var=stack[top--];是不是非要写成var=stack[top];top--;啊,上面哪个操作流畅优雅,哪个生硬支离,大家看得出来。

还有,代码风格是见仁见智的事情,不要拿你的一己之私去限制别人的思想与创造力。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-02 15:36
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
不过我希望starwing虚心接受别人的建议
虽然代码短,但我也会用FILE *in,*out;最起码易于识别
说个插曲,我改您代码的时候,曾经错把n当数据个数...
您的代码您虽然能看懂,但一个代码还有必要让其它人容易读懂.

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-02 15:37
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
[bo][un]卧龙孔明[/un] 在 2008-7-2 15:37 的发言:[/bo]

不过我希望starwing虚心接受别人的建议
虽然代码短,但我也会用FILE *in,*out;最起码易于识别
说个插曲,我改您代码的时候,曾经错把n当数据个数...
您的代码您虽然能看懂,但一个代码还有必要让其它人容易读懂.



我同意您的观点,这方面,我的确有不足。
平时写代码注意变量名要有意义,结果仓促起来,就开始乱写了。
这一点的确是我的不对,我接受,不过其余的,似乎没有足够的理由让我接受。

我文件指针的a,b不是随手写的,而是用的文件名。
n指代整数,c指count,计数排序数组。
这些其实都是下意识的行为。

这一点我会努力去克服,整数写完整的num,而不是n,文件名写fa,fb。

还是谢谢孔明的教导。

[[it] 本帖最后由 StarWing83 于 2008-7-2 15:45 编辑 [/it]]

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-02 15:41
VxWorks
Rank: 3Rank: 3
来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
收藏
得分:0 
我说的重定向是用户在命令行运行程序时使用符号<和>指定stdin和stdout
$ foo < in.txt > out.txt
运行foo程序时指定输入输出文件分别为in.txt 和out.txt

代码风格问题,你的程序是否易懂是别人阅读你代码时感觉出来的,你可以把你的代码给别人看看,听别人的评价

为了防止世界被破坏,为了守护世界的和平,贯彻爱与真实的邪恶,可爱又迷人的反派角色,VxWorks!
Don't ask me any question.I'm just here to buy soy sauce.
2008-07-02 15:45
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
[bo][un]VxWorks[/un] 在 2008-7-2 15:45 的发言:[/bo]

我说的重定向是用户在命令行运行程序时使用符号指定stdin和stdout
$ foo < in.txt > out.txt
运行foo程序时指定输入输出文件分别为in.txt 和out.txt

代码风格问题,你的程序是否易懂是别人阅读你代码时感觉出来 ...



这个我知道,但是我只是问,符合LZ的要求么?再优雅,再灵活,不符合要求都扯淡。
对于代码风格,我只能说,如果我一行一注释,傻子都看得懂,但是如果我规规矩矩地完全符合最良好的习惯写个数学的XX算法,但是不写注释,计算机专家也未必看得懂。这种代码我就看过,风格良好的没话说,我照样看不懂。

我的意见是,C的部分,我不会写注释,看不懂就代表你水平不够,但是数据逻辑,算法,数据结构,这种东西,我会很小心很仔细地写注释和注意风格。

很可惜,在这个代码里面,并看不出来。所以也不用争论什么了。你提出的,我接受,也在实际编程中使用过。可惜任何东西都有适用范围。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-02 15:49
快速回复:此帖关闭
数据加载中...
 
   



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

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