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

wz82 2008-04-04 21:09

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

  等级考试(笔试)虽然知识面比较广,但不是很深,基础部分考的是你日常操作的能力,程序设计多数是考你的细心。辛辛苦苦准备了大半年,又经过2个小时的考场之战,交卷之后还很“自美”,成绩单上的“不及格”让你一时不敢相信自己的眼睛。  8lF:70wia  
l,ra24  
  当对着答 案细细“品味”时,你会N次的感叹……原来“罪魁祸首”是“不细心”。 = '<*mT<  
='fN xabB  
  综观这四年来的考题,对容易出错的典型题例作了汇总和分析,也好给以后参加二级C考试的朋友增加点免疫力吧。本文将分三次刊登。 5h p)Z7  
+$B#] ,  
  第一类,审题不清 ~uEI}z  
+aRHMH  
  1.审题时的一字之差。 laaoIL^  
W+aW2  
  一定要搞清题意,题目让我们选择的是“正确”还是“不正确”的;“能”还是“不能”的;本来要求选出一个错误的答 案,但题目中没有“错误”字样,而是说 “……请选出不正确的一项”,一不小心你就可能会把选项中最前面一个“正确”的选为答 案,因“正确”的有三个选项,当然觉得很容易,就这样,“错误”轻易地从你的笔尖溜走了。 &(~"OD  
~{[,0,lWU  
  2.不注意文字部分的要求和说明。 p+Icq!aH5  
g715+5z[  
  很多时候,为了省时间,上来就去看程序,这样不仅不能省时间,还会走弯路、出错误。看看下面的两个例子吧! wK  Je^7  
\w2X.2b.F  
  题例1:以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。 }1P v6L(o)  
2yA+zJ 46B  
  #include =p#:v  
7OLchf  
  void f(char p[][10],int n) x$6FvgP(  
_"- ,ia[D  
  {略} #YB3Ug]z  
e)]DFP[ n  
  main() 9a{9|p>L  
0Y/k /)Ul]  
  {char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i; Xh`Oin}<  
@ jD#Tn-*  
  f(p,5); printf("%d\n",strlen(p[0])); } 3y-P-NI~=  
yeN(_t2.  
  程序运行后的输出结果是 {)& b6}2h  
<"!'>ZUt  
  (A)6 (B)4 (C)5 (D)3 \D}$foHg  
g (V_&Y  
  (为了节省版面,把函数f的内容略去了。)看过文字说明,接着看主函数,就可以锁定这个字符串是“dcdbe”,而不用花时间去分析函数f。要注意的是:别把最长的一串当成最大的字符串噢,看上“aabdfg”可就错了,答 案应为C。 zWf(zxGAz  
*5R91@xt  
  题例2: 以下程序中给指针p分配三个double型动态内存单元,请填空。 61`tQFx,  
=<z~OE'lV  
  # include wbh^ZMQ  
WFMQ;  
  main ( ) 1:Xg&4s  
2w /qH4  
  { double ?p; ' g Fewo  
Kg#s<#h  
   p=(double ?) malloc(【 】); hPrE  
s:Z1 ZAxv  
   p[0]=1.5;p[1]=2.5;p[2]=3.5; z. xRJ  
-|_io,eL;  
   printf("%f%f%f\n",p[0],p[1],p[2]);} q??N,  
<& =3g/Y  
  如果上来就看程序,就会忽略“给指针p分配三个double型动态内存单元”,这里要求“三个”,如果大笔一挥写出了sizeof(double)可就太冤枉了,其实应该是3?sizeof(double)。 &Ef6'  
8:}$L)[V  
  第二类,把“赋值”看成了“等于” %)j^>W5  
+g8uV hC  
  题例:有以下程序段 "gq _^&  
t: qPW<wc  
  int k=0 ~Ec@hz]js  
Z n]e2  
  while(k=1)k++; f'B#h;`  
UJGmaE  
  while 循环执行的次数是: (r$QQO) /  
"'mr0G9X  
  (A)无限次 (B)有语法错,不能执行 DP4l %2m0  
8^"P'XQ  
  (C)一次也不执行 (D)执行1次 5c3&4,,eR  
LX iis)1  
 此题如果理解为k等于1时循环才执行,那么“k++”不被执行,k的值就始终为0,这时就把C选上了。其实,while循环的条件是一个赋值表达式,答 案为A。 &^@IAjxn  
<N\#6m  
  第三类,表达式的值与变量的值 _@ @"'  
\DRYqLT`  
  题例:有以下程序 Gm'Ch}E  
_CXXgF[OCA  
  int a=2; s&Qil07 Vl  
yy$7{9!  
  int f(int ?a) /R)(u@jk  
p?eQN Y  
  {return (?a)++;} S:xG:[N@  
&?B\(?*  
  main( ) Ov8{ny  
^W<uc :L7  
  { int s=0; zd#/zUPI  
 Q-Rt  
   { int a=5; 9 A1w5|X  
"Kt[jV;6  
   s+=f(&&a); p&,2@(Q  
<t4l5nr#  
   } ?3Dsz  
v0S7 ]?_  
   s+=f(&&a); f=*xdOB3  
N^&T5cAC  
   printf("%d\n",s); ' 8bT9  
0qMf6  
  } 执行后输出结果是() .=-K7.X.)  
Vch!&8xii  
  (A)10 (B)9 (C)7 (D)8 \.jT"Z~  
Og3bV_,"  
  答 案是C。  <IL$8a  
FR@## i$  
  此题有两个要点,1是局部变量与全局变量的作用范围,2是,函数f(&&a)返回的是表达式 (?a)++的值,而不? a的值。 WXC}Ie  
NX4}o&mDwn  
  第四类,把关系表达式有别于数学上的关系式 6sp?'GO`~  
LXQ-J  
  题例:有以下程序 Qr l>A*  
eA(c{  
  main() gAgP("  
S[W|=(f9  
  { int a=5,b=4,c=3,d=2; d6hso  
#s'  
   if(a>b>c) L(!mm  
1p9+c~4l:  
   printf("%d\n",d); |);-{=.OdQ  
SRx `m,535  
  else if((c-1>=d)==1) /K]<7  
)#l,RJ(  
   printf("%d\n",d+1); "|l-NUe  
/^z5;aG  
  else *qm@;!C  
;{Kx$Yt+  
   printf("%d\n",d+2); !xxu~j^T  
13nXvYo'  
  } W!BIz&SY:-  
m*S[oy&  
  执行后输出结果是 ( ) "*E%?MG  
R_2JP C  
  (A)2 (B)3 \kGi5G]  
T=QV =21qn  
  (C)4 (D)编译时有错,无结果 :3x|U,wC  
6M`N| %  
  这道题的关键在(a>b>c),答 案容易判断为A,5大于4也大于3,就把整个表达式判断为真值,其实,a>b已为真值,1>c则成了假值,所以答 案为B。 )} H46  
0UB,EI8   
  第五类,字符串的拷贝 C%csQ m  
VfiMR%i}  
  拷成了同一个字符 !~&vcz0>)9  
eY1$s mh t  
  题例:若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式) ^^I3%6UY  
iZ3%'~K<3J  
  while(){ d[j]= 【 】;j++;} 0#rv.rJ{  
1wa zJj=v  
  d[j]=0; ![BQ;X  
yw%5W=<  
  这里容易只看到当前,忽略了还有其他字符,错填为s。答 案为s[i++]。
查看本帖完整版本: [-- 计算机二级C考试心得分享 --] [-- top --]

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