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

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

    上一主题 下一主题
    离线wz82
     
    发帖
    597
    光币
    4660
    光券
    0
    只看楼主 倒序阅读 楼主  发表于: 2008-04-04
      等级考试(笔试)虽然知识面比较广,但不是很深,基础部分考的是你日常操作的能力,程序设计多数是考你的细心。辛辛苦苦准备了大半年,又经过2个小时的考场之战,交卷之后还很“自美”,成绩单上的“不及格”让你一时不敢相信自己的眼睛。  @oXGa>Ru  
    vSgT36ZF  
      当对着答 案细细“品味”时,你会N次的感叹……原来“罪魁祸首”是“不细心”。 5 UEZpxnv  
    WZ CI*'  
      综观这四年来的考题,对容易出错的典型题例作了汇总和分析,也好给以后参加二级C考试的朋友增加点免疫力吧。本文将分三次刊登。 J@3,  
    &,nv+>D  
      第一类,审题不清 Ew8@{X y  
    ^? fOccfQ{  
      1.审题时的一字之差。 f"MID6  
    ?UXF z'  
      一定要搞清题意,题目让我们选择的是“正确”还是“不正确”的;“能”还是“不能”的;本来要求选出一个错误的答 案,但题目中没有“错误”字样,而是说 “……请选出不正确的一项”,一不小心你就可能会把选项中最前面一个“正确”的选为答 案,因“正确”的有三个选项,当然觉得很容易,就这样,“错误”轻易地从你的笔尖溜走了。 oTw!#Re)  
    zm_8a!.  
      2.不注意文字部分的要求和说明。 *;<fh,wOk  
    /3b *dsYsl  
      很多时候,为了省时间,上来就去看程序,这样不仅不能省时间,还会走弯路、出错误。看看下面的两个例子吧! SI7rTJ]/  
    1NZ"\9=U  
      题例1:以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。 q}{E![ZTu  
    Xaq;d'  
      #include GP} ;~  
    [M|^e;tWK  
      void f(char p[][10],int n) r4yz{^G  
    t~Q 9} +  
      {略} OH`a3E{e  
    z*.AuEK?  
      main() ]Ry9{:  
    &YhAB\Rw  
      {char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i; j\y;~ V  
    8`4M4" lj  
      f(p,5); printf("%d\n",strlen(p[0])); } pBsb>wvej  
    3?93Pj3oPt  
      程序运行后的输出结果是 !<[+u  
    q<YM,%mgj  
      (A)6 (B)4 (C)5 (D)3 Oa[  
    ",#.?vT`  
      (为了节省版面,把函数f的内容略去了。)看过文字说明,接着看主函数,就可以锁定这个字符串是“dcdbe”,而不用花时间去分析函数f。要注意的是:别把最长的一串当成最大的字符串噢,看上“aabdfg”可就错了,答 案应为C。 Al$z.i?R  
    X4;U4pU#  
      题例2: 以下程序中给指针p分配三个double型动态内存单元,请填空。 3smkY  
    2#wnJdr6E  
      # include )2f#@0SVL  
    }Fe~XO`  
      main ( ) wh:;G`6S  
    \/ bd  
      { double ?p; s^k G]7  
    J)|3jbX"I]  
       p=(double ?) malloc(【 】); P\U<,f  
    t@%w:*&  
       p[0]=1.5;p[1]=2.5;p[2]=3.5; j7I=2xnTWu  
    @6 he!wW  
       printf("%f%f%f\n",p[0],p[1],p[2]);} V?mP7  
    v?8WQNy  
      如果上来就看程序,就会忽略“给指针p分配三个double型动态内存单元”,这里要求“三个”,如果大笔一挥写出了sizeof(double)可就太冤枉了,其实应该是3?sizeof(double)。 K@.5   
    sY ]J!"  
      第二类,把“赋值”看成了“等于” sW>%mnx  
    -&/?&{Q0  
      题例:有以下程序段 C,|&  
    9{Hs1 MD[  
      int k=0 =z1Lim-  
    [$y(>] ~.  
      while(k=1)k++; h&"9v~  
    vs@d)$N  
      while 循环执行的次数是: bZowc {!\  
    N[{rsUBd  
      (A)无限次 (B)有语法错,不能执行 u8f\)m  
     _){|/Zd  
      (C)一次也不执行 (D)执行1次 z "@^'{.l  
    WjV Bz   
     此题如果理解为k等于1时循环才执行,那么“k++”不被执行,k的值就始终为0,这时就把C选上了。其实,while循环的条件是一个赋值表达式,答 案为A。 [LVXXjkFI  
    mWviWHK  
      第三类,表达式的值与变量的值 bT:u |/I  
    (UkP AE  
      题例:有以下程序 ~j!n`#.\  
    tP'v;$)9F  
      int a=2; u>>|ZPe  
    {&1L &f<  
      int f(int ?a) _}[ Du/c  
    `d <`>  
      {return (?a)++;} U,rI/'  
    t{})6  
      main( ) tU4#7b:Y  
    {;$oC4  
      { int s=0; [RF,0>^b  
    PT>b%7Of  
       { int a=5; teok*'b:  
    }*x1e_m}H  
       s+=f(&&a); n_kwtWX(  
    p6JTNx D  
       } &xGdKH  
    @pH2"k| @  
       s+=f(&&a); 7L~ *%j  
    [6VB&   
       printf("%d\n",s); 4Kj.o  
    'sEnh<  
      } 执行后输出结果是() * + T(i  
    +wi=IrRr  
      (A)10 (B)9 (C)7 (D)8 ZU 3Psj  
    ,{*g Q%7  
      答 案是C。 .s{ "NqRA  
    7Kw'Y8  
      此题有两个要点,1是局部变量与全局变量的作用范围,2是,函数f(&&a)返回的是表达式 (?a)++的值,而不? a的值。 Nm)3   
    oidZWy  
      第四类,把关系表达式有别于数学上的关系式 ')jItje|  
    J 2O,wb)U  
      题例:有以下程序 qd a 2  
    @.;+WQE  
      main() x?AG*' h&  
    YZ~MByu  
      { int a=5,b=4,c=3,d=2; M`Y^hDl6  
    )^:H{1'  
       if(a>b>c) J;& y?%{@5  
    f-~Y  
       printf("%d\n",d); D07M!U  
    H(y`[B,}*  
      else if((c-1>=d)==1) cSt)Na~C  
    Vb,V N?l  
       printf("%d\n",d+1); xpdpD  
    ` GF w?G  
      else 6]7csOE  
    ' ]k<' `b|  
       printf("%d\n",d+2); Lu#qo^  
    uw mN !!TS  
      } VR (R.  
    Q}#Je.;  
      执行后输出结果是 ( ) #-yCR  
    P~ObxY|  
      (A)2 (B)3 sq$v6x sl  
    4*EMd!E=<  
      (C)4 (D)编译时有错,无结果 TOwqr T/  
    V 20h\(\\  
      这道题的关键在(a>b>c),答 案容易判断为A,5大于4也大于3,就把整个表达式判断为真值,其实,a>b已为真值,1>c则成了假值,所以答 案为B。 U[wx){[|  
    x2!R&q8U>  
      第五类,字符串的拷贝 *OLqr/ yb  
    =E9\fRGU  
      拷成了同一个字符 Lt*P&  
    aAjl 58  
      题例:若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式) D:T]$<=9  
    !q\8`ss  
      while(){ d[j]= 【 】;j++;} y_m+&Oe  
    H )ej]DXy  
      d[j]=0; bYsX?0T!p  
    R`(2Fy%0\k  
      这里容易只看到当前,忽略了还有其他字符,错填为s。答 案为s[i++]。
     
    分享到