回 帖 发 新 帖 刷新版面

主题:[原创]第一界编程比赛_结论

首先感谢大家对该活动的支持!
此次共有7位朋友在规定的时间内给出了程序!
他们是:黄金风格,wanyunzhou,shaneqi,Knocker,eastcowboy,中国台湾,cccP.
其中Wanyunzhou,Shaneqi,cccP,写的是C++,而我又没有相应的编译器.
所以只能看着程序研究一阵,然后得出结论:程序应该没错!!

另外那四个C程序我都编译运行过了,我用的P4 2.8G WindowsXP WIN-TC1.9.1
下面发表一下我的看法:
1:黄金风格,程序简洁明了,通俗易懂,功能完全符合要求.
  所以我决定下一界的就由他来出题.请黄金风格尽快公布出题时间!!

2:Knocker,他的程序是这次比赛中关注的焦点!我的看法是短小精悍,打印出来的话可以节省一点纸!!!
  为什么这么说呢?因为:
  1.编程风格很烂,难以理解,难以调试,难以排错,难以维护,不值得学习!!
  2.未对输入范围做检查.输入超出范围的数后,居然会输出乱码!!
  3.有人说运行速度高,我看未必!对该程序我不想做多的解释(因为它实在不值得我们去学习).只是告诉大家他用的不是循环,而是递归.就是用递归来代替循环.然而递归会做大量的进栈和出栈工作!所以运行速度反而会比用循环慢.
  4.生成的代码少吗?那也不是!!!我看过,黄金风格的执行代码是9796Byte,Knocker的执行代码是9732Byte,只少64个Byte,约少0.6%到0.7%.已经是微不足道的啦!Knocker未对输入范围做检查,如果我把黄金风格程序中的对输入范围做检查的部分去掉,那黄金风格的执行代码就是9674Byte,反而比Knocker的执行代码少!!!

3.eastcowboy,他的程序实现算法与黄金风格的差不多.差别在于用buf[2*20]转了一个弯!,从而每一行只用一个printf就可以了!!但我觉得这好象没必要(也许有好处只是我不知道!).

4.中国台湾,程序写的也很好,只是对输入范围做检查时用的if(n!=0),而不是if(n!=0&&n<=20).说实话,还好他出了这么一个小失误!不然我,不然我真的不知道该在他和黄金风格之中挑谁来在下一界出题!!!

以下几位超过规定的时间才给出了程序!!!我想应该是他们来晚了吧!!希望他们下次能早一点!!
5.PgiLvSny,如果不是他来晚了!!这次的冠军非他莫属!!
因为他用自己的getnum()来获取输入,解决了一个重要的问题,别的人都用的是Scanf(),这样一来如果我输入的不是数字而是英文字母的话会发生什么现象了!!有兴趣的可以自己试试。而他用自己的getnum()来获取输入,则避免了这种现象发生!!!
虽然他用getnum()来获取输入但没有解决另一个重要的问题,就是如果我输入65537的话程序会怎么样呢!会提示超出范围吗?不会!!有兴趣的可以自己试试。。用自己的getnum()来获取输入应该是可以避免这一点的!!!

6.tanran,作为一个新手,能写出有这样的程序,很好!!!!

7.探路者二号,程序风格很好,有注释!!!唯一一个有注释的程序!!!
  
8.iAkiak,程序风格有点儿艺术!希望只是在网上玩玩而已,动真格的时候可千万不能这样·

下一界黄金风格来出题.请黄金风格尽快公布出题时间!!
比赛题目及过程:
http://www.programfan.com/club/showbbs.asp?id=112966

因为论坛上的贴很多!!!而版主又没有将编程比赛的贴置顶!!!所以很难找!!
告诉大家一个小窍门!!就是在论坛搜索中(编程爱好者论坛那个页面) 输入关键字 "编程比赛"就能找到了!!!

谢谢大家支持!!!

回复列表 (共17个回复)

沙发

“就是如果我输入65537的话程序会怎么样呢!”
--- 我感到很有意思的是,你们使用什么编译器,在什么平台上运行?

板凳

第二个题呢?
别太难了;
难了我们这些小鸟不会。。。。。。。。。。。。。

3 楼

第一界编程比赛
强烈建议,论坛的活动应该置顶,方便大家找
最好通过系统群发消息通知论坛里的人

4 楼

因为论坛上的贴很多!!!而版主又没有将编程比赛的贴置顶!!!所以很难找!!
告诉大家一个小窍门!!就是在论坛搜索中(编程爱好者论坛那个页面) 输入关键字 "编程比赛"就能找到了!!!

5 楼

^_^,过奖过奖,第一次有人夸我的程序,写getnum()是因为我在看K&R的The C Programming Language,里面都是这么写的,还在学样阶段。所以没有考虑到比2byte大的数字,我想了一下,感觉好复杂,如果我写就像是一段又臭又长的裹脚布了。

6 楼

K&R的The C Programming Language?
我没看过!!发给我看看好吗??
civiler@sina.com
谢谢!!!

7 楼

好啊,但我错过了,呵呵。
也把我的程序弄来了。
#include <stdio.h>
main()
{
    int i,j,num;
    printf("n=?\n");
    for(scanf("%d",&num);num>20 || num<1;scanf("%d",&num))
       printf("Wrong!\n n=?\n");
    for(i=1;i<=num;i++)
      {
          for(j=1;j<=num+i-1;j++)
             if(j>num-i)printf("*");
             else printf(" ");
          printf("\n");
      }
}

我用VC编的。

8 楼

to bluelight 这本书网上很多的,哪里都可以下到,google一下好多下载的,不过都是E文版的,我就看E文的

9 楼

下一次比赛可以根据大家的水平出不同的题目,这样大家都有的乐了,可以根据专家分来来划分以下难度,不知道怎么样。呵呵

10 楼

黄金风格已定下了比赛日期!!
http://www.programfan.com/club/showbbs.asp?id=113903
因为论坛上的贴很多!!!而版主又没有将编程比赛的贴置顶!!!所以很难找!!
告诉大家一个小窍门!!就是在论坛搜索中(编程爱好者论坛那个页面) 输入关键字 "编程比赛"就能找到了!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册