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

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

    上一主题 下一主题
    离线wz82
     
    发帖
    597
    光币
    4709
    光券
    0
    只看楼主 倒序阅读 楼主  发表于: 2008-04-04
      等级考试(笔试)虽然知识面比较广,但不是很深,基础部分考的是你日常操作的能力,程序设计多数是考你的细心。辛辛苦苦准备了大半年,又经过2个小时的考场之战,交卷之后还很“自美”,成绩单上的“不及格”让你一时不敢相信自己的眼睛。  71R,R,  
    sWo`dZ\6WB  
      当对着答 案细细“品味”时,你会N次的感叹……原来“罪魁祸首”是“不细心”。 X?'cl]1?  
    CVa>5 vt  
      综观这四年来的考题,对容易出错的典型题例作了汇总和分析,也好给以后参加二级C考试的朋友增加点免疫力吧。本文将分三次刊登。 ad: qOm  
    ]@Zv94Z(  
      第一类,审题不清 :E.a.-  
    *yRsFC{,  
      1.审题时的一字之差。 nU>P%|loXx  
    _eiqs  
      一定要搞清题意,题目让我们选择的是“正确”还是“不正确”的;“能”还是“不能”的;本来要求选出一个错误的答 案,但题目中没有“错误”字样,而是说 “……请选出不正确的一项”,一不小心你就可能会把选项中最前面一个“正确”的选为答 案,因“正确”的有三个选项,当然觉得很容易,就这样,“错误”轻易地从你的笔尖溜走了。 XG.[C>  
    rpR yB9  
      2.不注意文字部分的要求和说明。 ~|} ]  
    %, psUOY  
      很多时候,为了省时间,上来就去看程序,这样不仅不能省时间,还会走弯路、出错误。看看下面的两个例子吧! +Umsr  
    w. k9{f  
      题例1:以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。 ]!/U9"_e"B  
    e%JIqKS  
      #include skcyLIb  
    }N[X<9^ Z  
      void f(char p[][10],int n) 2L](4Q[M  
    754MQK|g  
      {略} D!o[Sm}JO[  
    \ZLi Y  
      main() U*r54AyP  
    " !EnQB=  
      {char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i; w[-)c6JyE  
    <t"T'\3  
      f(p,5); printf("%d\n",strlen(p[0])); } ;0 B1P|7zK  
    z,TH}s6  
      程序运行后的输出结果是 Qfm$q~`D^W  
    A7X a  
      (A)6 (B)4 (C)5 (D)3 g3$'G hf  
    Czjb.c:a.Y  
      (为了节省版面,把函数f的内容略去了。)看过文字说明,接着看主函数,就可以锁定这个字符串是“dcdbe”,而不用花时间去分析函数f。要注意的是:别把最长的一串当成最大的字符串噢,看上“aabdfg”可就错了,答 案应为C。 TRm#H $  
    4{uQ}ea  
      题例2: 以下程序中给指针p分配三个double型动态内存单元,请填空。 @Ul3J )=m  
    :VT%d{Vp_  
      # include 44ty,M3  
    72s qt5C]  
      main ( ) Nu"v .]Y2  
    {6ZSf[Y6B  
      { double ?p; ;l*%IMB  
    /qIQE&V-  
       p=(double ?) malloc(【 】); _aFe9+y  
    r W`7<3  
       p[0]=1.5;p[1]=2.5;p[2]=3.5; vkE`T5??  
    S.!,qv z  
       printf("%f%f%f\n",p[0],p[1],p[2]);} Y#9W]78He  
    "'z}oS  
      如果上来就看程序,就会忽略“给指针p分配三个double型动态内存单元”,这里要求“三个”,如果大笔一挥写出了sizeof(double)可就太冤枉了,其实应该是3?sizeof(double)。 F\D iT|?}  
    :01d9|#  
      第二类,把“赋值”看成了“等于” yI: ;+K  
    r/sSkF F  
      题例:有以下程序段 `}?;Ow&2CY  
    `"=>lu2H   
      int k=0 inGUN??  
    _Xd"'cXw  
      while(k=1)k++; 01?+j%k=m/  
    6'^E ],:b  
      while 循环执行的次数是: a}%f +`z  
    X9Ch(nWX  
      (A)无限次 (B)有语法错,不能执行 ,->K)Rs;  
    R 0RxcB tG  
      (C)一次也不执行 (D)执行1次 7%  D4  
    ^`kwSC  
     此题如果理解为k等于1时循环才执行,那么“k++”不被执行,k的值就始终为0,这时就把C选上了。其实,while循环的条件是一个赋值表达式,答 案为A。 QR&e~rks  
    "UTW(~D'  
      第三类,表达式的值与变量的值 V5K/)\#  
    c7XBZ%D  
      题例:有以下程序 RzqgN*]lY  
    i3w~&y-  
      int a=2; 9`*ST(0/  
    v.(dOIrX  
      int f(int ?a) %aNm j)L  
    eNd&47lJ  
      {return (?a)++;} *tUOTA 3L  
    2f[;U"  
      main( ) I}_}VSG(  
    A08kwYxiW  
      { int s=0; wtYgHC}X  
    2=_$&oT**  
       { int a=5; $P{`-Y }a  
    @R5^J{T  
       s+=f(&&a); t+U.4mS-  
    =@!t/LR7kg  
       } _Tj&gyS  
    -P}A26qB  
       s+=f(&&a); 1Vu#:6%  
    xF[%R{Mn'  
       printf("%d\n",s); 6k t,q0  
    wyy 1M+  
      } 执行后输出结果是() W0f^!}f(  
    ^)-[g  
      (A)10 (B)9 (C)7 (D)8  >:-e  
    '{ _ X1  
      答 案是C。 e#*3X4<\K  
    bG]0|  
      此题有两个要点,1是局部变量与全局变量的作用范围,2是,函数f(&&a)返回的是表达式 (?a)++的值,而不? a的值。 Rge>20uTl$  
    iAz0 A  
      第四类,把关系表达式有别于数学上的关系式 ["D!IqI :  
    N6._J b  
      题例:有以下程序 Z[nHo'  
    n[Q(q[ULV  
      main() q\@Zf}  
    3Z?ornS  
      { int a=5,b=4,c=3,d=2; %D4)Bqr  
    q}Q G<%VR  
       if(a>b>c) i%FC lMF  
    vclc%ws  
       printf("%d\n",d); 2K9X (th1  
    xE 8?%N U  
      else if((c-1>=d)==1) *\XOQWrF  
    ^4fvV\ne_~  
       printf("%d\n",d+1); Uoe{,4T  
    c]{}|2u  
      else M 2hZ'  
    (X "J)x aQ  
       printf("%d\n",d+2); V*@aE  
    RB %+|@c  
      } 9295:Y| w1  
    p3Ux%/ZqPV  
      执行后输出结果是 ( ) 8NfXYR#  
    }[akj8U  
      (A)2 (B)3 <YW)8J  
    =6~  
      (C)4 (D)编译时有错,无结果 _ dAyw  
    :6Nb,Hh~  
      这道题的关键在(a>b>c),答 案容易判断为A,5大于4也大于3,就把整个表达式判断为真值,其实,a>b已为真值,1>c则成了假值,所以答 案为B。 "%Ok3Rvv  
    8_}t,BC  
      第五类,字符串的拷贝 d3c.lD)L9  
    m#UQ,EM  
      拷成了同一个字符 %j\&}>P4$  
    s6~;)(r  
      题例:若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式) .zgh,#=  
    1L!;lP2  
      while(){ d[j]= 【 】;j++;} Po)U!5Tm  
    7Vy_Cec1  
      d[j]=0; DT`HS/~fH  
    _|u}^MLO  
      这里容易只看到当前,忽略了还有其他字符,错填为s。答 案为s[i++]。
     
    分享到