首页 -> 登录 -> 注册 -> 回复主题 -> 发表主题
光行天下 -> 考试与认证 -> 计算机二级C考试心得分享 [点此返回论坛查看本帖完整版本] [打印本页]

wz82 2008-04-04 21:09

计算机二级C考试心得分享

  等级考试(笔试)虽然知识面比较广,但不是很深,基础部分考的是你日常操作的能力,程序设计多数是考你的细心。辛辛苦苦准备了大半年,又经过2个小时的考场之战,交卷之后还很“自美”,成绩单上的“不及格”让你一时不敢相信自己的眼睛。  OX;bA^+}P  
MT{1/A;`)  
  当对着答 案细细“品味”时,你会N次的感叹……原来“罪魁祸首”是“不细心”。 h4n~V:nNm  
+L09^I  
  综观这四年来的考题,对容易出错的典型题例作了汇总和分析,也好给以后参加二级C考试的朋友增加点免疫力吧。本文将分三次刊登。 5RT#H0/+  
AF:_&gF  
  第一类,审题不清 Hcf"u&%  
@1j*\gYz  
  1.审题时的一字之差。 {MtJP:8Jp  
c]*yo  
  一定要搞清题意,题目让我们选择的是“正确”还是“不正确”的;“能”还是“不能”的;本来要求选出一个错误的答 案,但题目中没有“错误”字样,而是说 “……请选出不正确的一项”,一不小心你就可能会把选项中最前面一个“正确”的选为答 案,因“正确”的有三个选项,当然觉得很容易,就这样,“错误”轻易地从你的笔尖溜走了。 EZj rX>"#  
 ]! ZZRe  
  2.不注意文字部分的要求和说明。 (Nzh1ul\}  
`Am|9LOT  
  很多时候,为了省时间,上来就去看程序,这样不仅不能省时间,还会走弯路、出错误。看看下面的两个例子吧! -c>3|bo  
4zs0+d +  
  题例1:以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。  KcT(/!  
;1~n|IY  
  #include }oD^tU IK  
=sW K;`  
  void f(char p[][10],int n) Ea4zC|;  
TFHYB9vV  
  {略} BD"Dzq  
2z;nPup,  
  main() 4l0>['K&{  
OIFjc0  
  {char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i; kiF}+,z"  
5B%KiE&p  
  f(p,5); printf("%d\n",strlen(p[0])); } fhg'4FO  
p4uzw  
  程序运行后的输出结果是 \>\ERVEd  
c6b51)sQ"  
  (A)6 (B)4 (C)5 (D)3 ~JRq :  
j~b NH~3  
  (为了节省版面,把函数f的内容略去了。)看过文字说明,接着看主函数,就可以锁定这个字符串是“dcdbe”,而不用花时间去分析函数f。要注意的是:别把最长的一串当成最大的字符串噢,看上“aabdfg”可就错了,答 案应为C。 n%WjU)<  
2?qT,pN  
  题例2: 以下程序中给指针p分配三个double型动态内存单元,请填空。 <mJ8~  
g8/ ,E-u  
  # include E|-oUz t  
+/_XSo  
  main ( ) kP5I+ B  
[m! P(o  
  { double ?p; 9<&*iIrM  
[VX5r1-F  
   p=(double ?) malloc(【 】); otaRA  
+6:  
   p[0]=1.5;p[1]=2.5;p[2]=3.5; a,fcKe&B  
0[H />%3O  
   printf("%f%f%f\n",p[0],p[1],p[2]);} 5ms]Wbh)  
F(j;|okf;  
  如果上来就看程序,就会忽略“给指针p分配三个double型动态内存单元”,这里要求“三个”,如果大笔一挥写出了sizeof(double)可就太冤枉了,其实应该是3?sizeof(double)。 9y[U\[H  
&CQ28WG X  
  第二类,把“赋值”看成了“等于”  zv"NbN  
<0Y<9+g!  
  题例:有以下程序段 8@doKOA~T  
S5gBVGh  
  int k=0 I\Y N!  
,+d8   
  while(k=1)k++; %$Fe[#1  
[zl4"|_`  
  while 循环执行的次数是: 83]m/Iz  
hKg +A  
  (A)无限次 (B)有语法错,不能执行 cD9U ^SOS  
R:l&2  
  (C)一次也不执行 (D)执行1次 UFZOu%Y  
` ,SNqi  
 此题如果理解为k等于1时循环才执行,那么“k++”不被执行,k的值就始终为0,这时就把C选上了。其实,while循环的条件是一个赋值表达式,答 案为A。 $[Ut])4 ~  
o; 6^:  
  第三类,表达式的值与变量的值 JPL`/WA 0  
>Q_ '[!S  
  题例:有以下程序 -cJ,rrN_9  
h=6D=6c  
  int a=2; /]0SF_dZ  
|aU8WRq  
  int f(int ?a) mcidA%  
y5KeUMcu  
  {return (?a)++;} RnC+]J+?4  
!5h8sD;  
  main( ) s1sn,?  
ue?3;BF 5  
  { int s=0; pyX:$j2R+%  
FjizPg/|!  
   { int a=5; #l`\'0`.  
i`<L#6RBT  
   s+=f(&&a); QrFKjmD<  
hi(e%da  
   } >hSu1s:  
B#`'h~(7  
   s+=f(&&a); XM"Qs.E  
9Nna-}e?W  
   printf("%d\n",s); eU`O=uE   
PJ&L7   
  } 执行后输出结果是() \b6{u6?+  
T~L V\}h  
  (A)10 (B)9 (C)7 (D)8 BHU$QX  
LXJ;8uW2y  
  答 案是C。 N5`z S79W  
'Q 7^bF^  
  此题有两个要点,1是局部变量与全局变量的作用范围,2是,函数f(&&a)返回的是表达式 (?a)++的值,而不? a的值。 O0 Uh  
/s+IstW  
  第四类,把关系表达式有别于数学上的关系式 g]N'6La  
}kItVx  
  题例:有以下程序 f8WI@]1F  
SO STtuT  
  main() g)ZMU^1  
~:0w%  
  { int a=5,b=4,c=3,d=2; 4{vEW(  
-I6t ^$HA  
   if(a>b>c) fE)o-q6Z  
XpkOCo02  
   printf("%d\n",d); XjP;O,x  
 f}*:wj  
  else if((c-1>=d)==1) %{3q=9ii  
Ac*J;fI  
   printf("%d\n",d+1); M=&,+#z<V  
[dz3k@ >0  
  else <Uj9~yVN]  
xsPt  
   printf("%d\n",d+2); {,*vMQ<^  
h~CLJoK<  
  } > KdV]!H  
Z zp"CK 5  
  执行后输出结果是 ( ) $)X8'1%6  
i'>5vU0?3  
  (A)2 (B)3 4$ihnb`DQN  
Y.tT#J^=  
  (C)4 (D)编译时有错,无结果 dkDPze9l  
< FO=PM  
  这道题的关键在(a>b>c),答 案容易判断为A,5大于4也大于3,就把整个表达式判断为真值,其实,a>b已为真值,1>c则成了假值,所以答 案为B。 U1lqg?KO  
q3h& V  
  第五类,字符串的拷贝 5F ^VvzNn  
E'U x2sh  
  拷成了同一个字符 5U+4vV/*  
]{\M,txo8  
  题例:若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式) )i[Vq|n  
d}ycC.h4k  
  while(){ d[j]= 【 】;j++;} '6>*J  
G-RDQ  
  d[j]=0; hLk6Hqr7  
z,^~H  
  这里容易只看到当前,忽略了还有其他字符,错填为s。答 案为s[i++]。
查看本帖完整版本: [-- 计算机二级C考试心得分享 --] [-- top --]

Copyright © 2005-2025 光行天下 蜀ICP备06003254号-1 网站统计