泡泡网blog

孙志岗的日记本

导航

<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

文章分类

档案

随笔分类

链接

登录

2004秋季C语言试卷点评

第一题:

成功:非单项选择杜绝了机会主义,要求了对知识掌握的精度。
失败:下次要叫“不定项选择”,以免落人口实。
教训:很多同学在这里失去的并不是分数,而是时间。算是没有开卷考试的经验吧

  1. Thompson和Ritchie一起创造了UNIX和C,但两人的工作有所侧重,所以Ritchie才是绝对的Father
  2. 不了解变量如何占用内存是用不好C语言的。占用的字节数是和编译器息息相关的,而编译器又是主要根据机器特性和用户设定来决定占用方式的。
  3. 软件工程届普遍接受的观点是“程序只能被证明有错,不能被证明无错”。当然,这话并不严密。假如我们需要一个什么都不干的程序,那么就写一个空的main,这个程序也有错吗?怎么证明它无错呢?
  4. 总的来说,只要存在于内存中的,就必有地址
  5. 声明只说明存在,定义就要占内存了

第二题:

成功:通过一些略显古怪的用法考查对知识的理解程度。如果只是从表面记忆C,很难答好这道题。
失败:一道题里涵盖太多知识点,却都通过一个结果来评价,导致一个小失误就满盘皆输。以后应该把知识点拆开考查

  1. printf("%d", (1-(2+8/6)*4%3*1)/2);
    这个有些过于繁杂了,应该再简化一下。有些同学的不细心也挺让人遗憾的。但面对诸如“1/2”、“0.XXXX”这样的答案,我除了无奈摇头,也做不出别的表情了。
  2. if关心的只是括号内的运算结果是否非零,从不关心这个结果由哪种运算得到。while、for等等均是如此。千万不要只看表面呀
  3. 大家对递归的掌握超出了我的预料。看来大家的数学基础和对函数调用的理解都是很不错的。答案是15。
  4. 这道题可能是第一个有必要翻书的地方。strcat和strlen的功能都需要确认一下。关键的知识点:
    • 每个汉字占2个字节
    • \t只是一个字符,占一个字节。\n也是
    • strcat进行字符串连接的工作
    • strlen不把\0计算在内
    • strlen("天下无贼\t刘德华\t刘若英\n")的结果是23BTW:天下无贼挺好看。刘若英越看越pp
  5. sizeof用于一个数组时,得到的是整个数组所占的字节数。字符数组初始化时加上的那个\0当然也是数组的一个成员。
    如果给数组的下标是负数,就会向数组首址之前访问。这个主要考对数组下标的理解,需要拓展自己的思维来解决此问题,但现实中不要使用这种用法。
  6. 这是整份考卷中最难的一道题,做出的人不超过5个。

    #include

     

    main()

    {

        struct {int m; int n} s = {0x70706168, 0x79};

        printf("%s", &(s.m));

    }

    32位x86平台,决定了int占4个字节,且整数0x70706168在内存保存为“68 61 70 70”,0x79保存为“79 00 00 00”。根据struct的特点,n紧挨在m之后,所以s所占内存内容为“68 61 70 70 79 00 00 00”。这样一段内存,被当作字符串打印,会打印出happy。发现很多同学不会用16进制查数,于是给出类似hajj这样的答案。

第三题:

成功:看似平淡无奇,其实是需要周全的思维和对语法的深刻理解
失败:还没想好

  1. #define min(A,B)  (((A)<(B)) ? (A) : (B))
    像这种求值类的宏,多加括号几乎是标准
  2. 要点:
    • getchar()的返回值是int类型,要用int型的变量赋值,否则不能处理好EOF
    • 要精准地防止下标越界问题,而且对字符数组必须给'\0'留好地方
    • 在每次使用一个字符串之前,都先想想,'\0'在不在
  3. 如果指针指向的内存是确定的,而且那块内存可由你控制,则把指针传到哪里都是可行的。反之,就不行。
    malloc申请的内存不会随着函数的退出而释放,绝对不会

第四题:

成功:能看到大家对程序设计的认识
失败:不知道大家的解答是不是发自肺腑的,因为是开卷考试

  1. 正确                        
  2. 对各种情况考虑周全                 
  3. 模块化                             
  4. 能适应未来的变化可能               
  5. 能复用                             
  6. 效率高(包括算法效率和代码效率)   
  7. 跨平台,可移植                     
  8. 安全                               
  9. 易测试                             
  10. 易维护(包括代码风格、注释、文档等)

答出其中四个就可得满分。

第五题:

成功:5个题目难度相当,都属于那种有1-2个关键点的程序,只要关键点能想通,就很容易做出,代码量不大。而且几乎与平时实验课的程序大相径庭,考查考生临场思考能力和综合运用知识解决问题的能力。
失败:很多同学就选三个做,一点不多作,哪怕有时间的情况下

  1. 与实验课最贴近的一道题。用指针访问二维数组是实验课练习过的内容,但能做好的人并不多。至于不知道什么是对称矩阵,那就怪不得别人了。
  2. 静态变量和全局变量是两种解决此问题的方法。静态变量因为只作用于局部,封装得更好,所以是更好的选择。
  3. 通过返回值返回三个数,那就要用到结构。至于找最大值和最小值,挨个比较就可以了。算平均值要小心溢出问题。
  4. 用递归来算更好。这倒不是因为递归容易实现云云,而是因为这里给出的递归算法不涉及到大量运算。如果用公式一,阶乘不仅速度慢,而且是非常容易溢出的。
  5. 首先,一行不超过80个字符,但必须给'\0'也留好空间。因为以行为单位进行处理,所以fgets()是最合适的选择。strstr()的用法不肖说了。最后别忘了fclose()

2005年1月4日 13:49

评论

# 回复: 2004秋季C语言试卷点评

怎么不把试卷也扫描一份放上?

2005-1-4 21:12   by iamxiaohan--

# 回复: 2004秋季C语言试卷点评

1. 出题是一件非常困难的事情,我不知道以后我是否每年都能出漂亮的卷子却不复用以前的题目。
2. 我更希望我的学生把眼光不仅仅放在几道题目之上,去研究答题技巧。他们应该面向知识学习,然后综合运用自己的知识去应对从未见过的考题

所以,试卷虽然有电子版,但还是不share了

2005-1-4 22:00   by Sunner Sun--

# 回复: 2004秋季C语言试卷点评

这题是不简单,估计我要去考也得挂。 sun要求现在的

ddmm们太严格了。
BTW:新年快乐。

2005-1-4 23:14   by don--

# 回复: 2004秋季C语言试卷点评

don过谦了
最后的总平均分是72.48,很不错的说,:-)


2005-1-5 0:08   by Sunner Sun--

# 回复: 2004秋季C语言试卷点评

真不甘心,再考一次!

2005-1-5 13:37   by Zn--

# 回复: 2004秋季C语言试卷点评

给各答案也好

2005-1-5 15:56   by 及格了--

# 回复: 2004秋季C语言试卷点评

我觉得第三个程序不适合返回一个结构体,因为做成这样的话,就在无形中要求用户也定义一个结构体,我认为这是不太好的。
我认为比较好的做法是在函数的参数里面加上一个模式选项。比如需要最大值就用模式1,最小值就用模式2,平均值就用模式3。这样,用户可以单独使用每一个返回值,也可以把所有返回值都放进一个结构里

2005-1-6 20:13   by 怪物史瑞克--

# 回复: 2004秋季C语言试卷点评

我也很不甘心。
曾经有一份很好的试题摆在我面前,我没有去珍惜。
如果上天再给我一次机会,我会对 SUNNER 说:“我会达到九十分”,如果给我的承诺一个时限,我希望是—— 明年!

2005-1-6 20:20   by 怪物史瑞克--

# 回复: 2004秋季C语言试卷点评

Shrek,我同意你的看法。
不过更实际的做法,应该是分成三个函数,分别是最大、最小和平均。一个函数包含这三个功能就是不应该的,不符合高内聚的原则。
这道题出得矫揉造作了,纯粹为了考查结构体做返回值。

2005-1-6 20:25   by Sunner Sun--

# 回复: 2004秋季C语言试卷点评

大家看重成绩是好事,但不要成为成绩的奴隶。
你们应该比谁都清楚,成绩根本就无法证明一个人。

2005-1-6 20:31   by Sunner Sun--

# 回复: 2004秋季C语言试卷点评

看过的最漂亮的C语言卷子答案.真想去考考.就像想吃KFC的蛋挞那么想:)...
要是我第一次上C语言课,真的好难.
连Happy new year都有,太精致了.

2005-1-7 21:53   by Once--

# 回复: 2004秋季C语言试卷点评

时间真的好紧,答题时很紧张,手都在打抖。

2005-1-15 18:24   by hah--

# 回复: 2004秋季C语言试卷点评

偶服了你了,这种题目让偶答绝对不过,羡慕现在的师d师m,有泡泡这么好的老师,当然师d师m更应该羡慕偶,做sun师妹的那段日子是偶成长最快的日子

2005-1-17 11:47   by QQ--

主题  
姓名  
主页
验证码  
内容   

请不要发表可能给我们带来伤害的政治言论,谢谢配合