切换到宽版
  • 广告投放
  • 稿件投递
  • 繁體中文
    • 4510阅读
    • 0回复

    [计算机]计算机二级C考试心得分享 [复制链接]

    上一主题 下一主题
    离线wz82
     
    发帖
    597
    光币
    4707
    光券
    0
    只看楼主 倒序阅读 楼主  发表于: 2008-04-04
      等级考试(笔试)虽然知识面比较广,但不是很深,基础部分考的是你日常操作的能力,程序设计多数是考你的细心。辛辛苦苦准备了大半年,又经过2个小时的考场之战,交卷之后还很“自美”,成绩单上的“不及格”让你一时不敢相信自己的眼睛。  Q%:Z&lg y  
    pnTz.)'46  
      当对着答 案细细“品味”时,你会N次的感叹……原来“罪魁祸首”是“不细心”。 (tCBbPW6T?  
    /V }Z,'+  
      综观这四年来的考题,对容易出错的典型题例作了汇总和分析,也好给以后参加二级C考试的朋友增加点免疫力吧。本文将分三次刊登。 %)w7t[A2D  
    ?=,7'@e  
      第一类,审题不清 "0Z5cQjg  
    +y^'\KN  
      1.审题时的一字之差。 5fy{!  
    >mj WC) U  
      一定要搞清题意,题目让我们选择的是“正确”还是“不正确”的;“能”还是“不能”的;本来要求选出一个错误的答 案,但题目中没有“错误”字样,而是说 “……请选出不正确的一项”,一不小心你就可能会把选项中最前面一个“正确”的选为答 案,因“正确”的有三个选项,当然觉得很容易,就这样,“错误”轻易地从你的笔尖溜走了。 `Y3\R#  
    wUfm)Q#  
      2.不注意文字部分的要求和说明。 cs 58: G5  
     s&iu+>  
      很多时候,为了省时间,上来就去看程序,这样不仅不能省时间,还会走弯路、出错误。看看下面的两个例子吧! Md&K#)9,(  
    Ln8r~[tVE<  
      题例1:以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。 7ufTmz#j<  
    _:>t$* _  
      #include Sq x'nXgO  
    KMx '(  
      void f(char p[][10],int n) \A6 }=  
    !p Q*m`Xo  
      {略} ,0eXg  
    kDG?/j90D  
      main() :<v@xOzxx  
    R[l~E![!j  
      {char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i; x *a_43`  
    M5 P3;  
      f(p,5); printf("%d\n",strlen(p[0])); } ?:6w6GwAA  
    6,!$S2(zT  
      程序运行后的输出结果是 U, 8mYv2|  
    /m4Y87  
      (A)6 (B)4 (C)5 (D)3 "jf_xZ$H-  
    MkWbPm)  
      (为了节省版面,把函数f的内容略去了。)看过文字说明,接着看主函数,就可以锁定这个字符串是“dcdbe”,而不用花时间去分析函数f。要注意的是:别把最长的一串当成最大的字符串噢,看上“aabdfg”可就错了,答 案应为C。 J&bMox  
    [ OS& eK 8  
      题例2: 以下程序中给指针p分配三个double型动态内存单元,请填空。 .hjN*4RY  
     & [ ,*  
      # include rP#&WSLVj  
    >-y}t9[/  
      main ( ) +1r><do;  
    (+}44Ldt  
      { double ?p; wScr:o+K>L  
    cUO$IR)yL  
       p=(double ?) malloc(【 】); 3_>=Cv}  
    tF\_AvL_8  
       p[0]=1.5;p[1]=2.5;p[2]=3.5; -wVuM.n(Z  
    *J{E1])<a  
       printf("%f%f%f\n",p[0],p[1],p[2]);} \(}pm#O  
    q3`~uTzk  
      如果上来就看程序,就会忽略“给指针p分配三个double型动态内存单元”,这里要求“三个”,如果大笔一挥写出了sizeof(double)可就太冤枉了,其实应该是3?sizeof(double)。 q{+}0!o  
    >>cL"m  
      第二类,把“赋值”看成了“等于” e'p"gX  
    6n;? :./  
      题例:有以下程序段 5=b6B=\*~  
    Q n.3 B  
      int k=0 f ~bgZ  
    h gu\~}kD  
      while(k=1)k++; ^])s\a$  
    t#%J=zF{  
      while 循环执行的次数是: !}sF#  
    ! %B-y 9\  
      (A)无限次 (B)有语法错,不能执行 Ua4P@#cU  
    E= .clA  
      (C)一次也不执行 (D)执行1次 L* ScSxw  
    .HRd6O;  
     此题如果理解为k等于1时循环才执行,那么“k++”不被执行,k的值就始终为0,这时就把C选上了。其实,while循环的条件是一个赋值表达式,答 案为A。 e7tio!  
    5H,(\Xd  
      第三类,表达式的值与变量的值 v^;vH$B  
    pD }b$  
      题例:有以下程序 g?K? Fn.}  
    m}]QP\  
      int a=2; 2`> (LH  
    c7R&/JV  
      int f(int ?a) I}m>t}QRI_  
    `R!2N4|;  
      {return (?a)++;} Ocz21gl-?`  
    nU0##  
      main( ) Qz"//=hC|H  
    Wys$#pJ  
      { int s=0; Kjpsz];  
    t gHN\@yj  
       { int a=5; 5DO}&%.xt  
    T!Lv%i*|Y  
       s+=f(&&a); :&LV^ A  
    c._!dq&#R  
       } P@x@5uC2  
    # %'%LY=  
       s+=f(&&a); R]RLy#j  
    bJkFCI/  
       printf("%d\n",s); :XTxrYt28  
    \Ym!5,^o  
      } 执行后输出结果是() vl?fCO  
    2/Ye<.#  
      (A)10 (B)9 (C)7 (D)8 8#9OSupp  
    E^m)&.+'M  
      答 案是C。 o{ccO29H/  
    ]mjKF\  
      此题有两个要点,1是局部变量与全局变量的作用范围,2是,函数f(&&a)返回的是表达式 (?a)++的值,而不? a的值。 R/ x-$VJ  
    9;rZ)QD  
      第四类,把关系表达式有别于数学上的关系式 Hl*#iUq  
    }WF6w+  
      题例:有以下程序 XpA|<s  
    F!2VTPm9z  
      main() JeAyT48!M  
    3$BO=hI/-  
      { int a=5,b=4,c=3,d=2; (a~V<v"  
    ;&kZ7%  
       if(a>b>c) )}vUYTU1  
    R;uP^  
       printf("%d\n",d); ?,C'\8'  
    " Lh XR  
      else if((c-1>=d)==1) '*t<g@2$  
    ]iZ-MG)J  
       printf("%d\n",d+1); @&9< )1F  
    3M'Y'Szm  
      else [|YJg]i-  
    1{ ehnH  
       printf("%d\n",d+2); 4 XGEw9`3  
    Nov An+  
      } 8^R~qpg%  
    n@S|^cH  
      执行后输出结果是 ( ) &yqk96z  
    Ie8SPNY-H  
      (A)2 (B)3 |>-0q~  
     q ^Gj IP  
      (C)4 (D)编译时有错,无结果 N ]GF>kf:  
    G B>T3l"  
      这道题的关键在(a>b>c),答 案容易判断为A,5大于4也大于3,就把整个表达式判断为真值,其实,a>b已为真值,1>c则成了假值,所以答 案为B。 $c LZ,N24  
    ZJ[p7XP  
      第五类,字符串的拷贝 k\ZU%"^J  
    t1G2A`  
      拷成了同一个字符 s5X51#J#~  
    lg 1r]  
      题例:若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式) nQn=zbZ3  
    SV^[)p )  
      while(){ d[j]= 【 】;j++;} 6*I=% H|  
    {P%\& \{F  
      d[j]=0; 5o0H7k]  
    9FF  
      这里容易只看到当前,忽略了还有其他字符,错填为s。答 案为s[i++]。
     
    分享到