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

wz82 2008-04-04 21:09

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

  等级考试(笔试)虽然知识面比较广,但不是很深,基础部分考的是你日常操作的能力,程序设计多数是考你的细心。辛辛苦苦准备了大半年,又经过2个小时的考场之战,交卷之后还很“自美”,成绩单上的“不及格”让你一时不敢相信自己的眼睛。  C2=iZ`Z>T  
p6y0W`U  
  当对着答 案细细“品味”时,你会N次的感叹……原来“罪魁祸首”是“不细心”。 Dq%r !)  
eGe[sv"k  
  综观这四年来的考题,对容易出错的典型题例作了汇总和分析,也好给以后参加二级C考试的朋友增加点免疫力吧。本文将分三次刊登。 w*xUuwi  
m|2]lb  
  第一类,审题不清 3 [)s;e  
!eAdm  
  1.审题时的一字之差。 ENx@Ex  
nB@iQxcz  
  一定要搞清题意,题目让我们选择的是“正确”还是“不正确”的;“能”还是“不能”的;本来要求选出一个错误的答 案,但题目中没有“错误”字样,而是说 “……请选出不正确的一项”,一不小心你就可能会把选项中最前面一个“正确”的选为答 案,因“正确”的有三个选项,当然觉得很容易,就这样,“错误”轻易地从你的笔尖溜走了。 *(&ClUQQ  
%3c|  
  2.不注意文字部分的要求和说明。 DkF2R @  
hp]ng!I{\u  
  很多时候,为了省时间,上来就去看程序,这样不仅不能省时间,还会走弯路、出错误。看看下面的两个例子吧! <+-Yh_D  
qz=#;&ZU  
  题例1:以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。 KjwY'aYwr:  
S|q!? /jqj  
  #include &e]]F#  
2~&hstd%  
  void f(char p[][10],int n) _95}ifSVm  
<[y$D=n  
  {略} x !:9c<  
{~p7*j^0  
  main() Ng'ZAG;O  
[cQ<dVaTX  
  {char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i; ',H$zA?i  
5h|m4)$  
  f(p,5); printf("%d\n",strlen(p[0])); } Z'}(t,  
L;--d`[  
  程序运行后的输出结果是 MB8SB   
4Ay`rG  
  (A)6 (B)4 (C)5 (D)3 ;]&~D +XH  
y  KYP  
  (为了节省版面,把函数f的内容略去了。)看过文字说明,接着看主函数,就可以锁定这个字符串是“dcdbe”,而不用花时间去分析函数f。要注意的是:别把最长的一串当成最大的字符串噢,看上“aabdfg”可就错了,答 案应为C。 :(l $^ M  
dm,}Nbc91(  
  题例2: 以下程序中给指针p分配三个double型动态内存单元,请填空。 s !hI:$J.  
[<Os~bfOv  
  # include X<Th{kM2  
ckf<N9  
  main ( ) eg2U+g4  
&>W  (l.  
  { double ?p; 'wz\tT^  
;J(rw  
   p=(double ?) malloc(【 】); 0eqi1;$b]  
aVppOxA  
   p[0]=1.5;p[1]=2.5;p[2]=3.5; %kK ][2e  
B.22 DuE#  
   printf("%f%f%f\n",p[0],p[1],p[2]);} fou_/Nrue  
h6\3vfj^f  
  如果上来就看程序,就会忽略“给指针p分配三个double型动态内存单元”,这里要求“三个”,如果大笔一挥写出了sizeof(double)可就太冤枉了,其实应该是3?sizeof(double)。 . 0 s[{x  
U/X|i /  
  第二类,把“赋值”看成了“等于” M[YTk=IM#  
JO2ZS6k[  
  题例:有以下程序段 `dv}a-Q)c  
 (# 6<k  
  int k=0 |*tWF! D6`  
j\`EUC  
  while(k=1)k++; {Ax)[<i  
Ew %{ i(d  
  while 循环执行的次数是: axK6sIxx  
sK`~Csb iB  
  (A)无限次 (B)有语法错,不能执行 4<G?  
t."g\;  
  (C)一次也不执行 (D)执行1次 W\@?e32  
V#'26@@  
 此题如果理解为k等于1时循环才执行,那么“k++”不被执行,k的值就始终为0,这时就把C选上了。其实,while循环的条件是一个赋值表达式,答 案为A。 }+9 1s'/c  
AT B\^;n.  
  第三类,表达式的值与变量的值 U1,~bO9  
RzA2*]%a  
  题例:有以下程序 M.ZEqV+k  
`Yx-~y5X  
  int a=2; Em e'Gk  
1Pk mg%+  
  int f(int ?a) (Wd_G-da  
:+~KPn>w5  
  {return (?a)++;} {$EH@$./  
_:35d1[  
  main( ) =?/N5O(  
-VS9`7k  
  { int s=0; dB@Wn!Y  
#yW.o'S+  
   { int a=5; ([:]T$0 #  
9$7&URwSDI  
   s+=f(&&a); &w+;N5}3  
TZ?Os4+  
   } ^)&Ly_xrU  
3B@y &a#&  
   s+=f(&&a); wYZT D*A2h  
G 9DJa_]X  
   printf("%d\n",s); 2R^O,Vu*W  
J+Q+&-a  
  } 执行后输出结果是() M]}l^ m>L  
3`8dii  
  (A)10 (B)9 (C)7 (D)8 kf<c, 3A  
7#QLtU  
  答 案是C。 W7H&R,  
Q*]$)D3n  
  此题有两个要点,1是局部变量与全局变量的作用范围,2是,函数f(&&a)返回的是表达式 (?a)++的值,而不? a的值。 bf& }8I$  
!C Vuw  
  第四类,把关系表达式有别于数学上的关系式 24#bMt#^  
|#{-.r6Y]  
  题例:有以下程序 k@#5$Ejc2  
gfi AK%  
  main() C\ tprnY  
<3d;1o   
  { int a=5,b=4,c=3,d=2; 2ck 4C/ h  
)FRM_$t  
   if(a>b>c) <"W?<VjO  
U4Z[!s$  
   printf("%d\n",d); C)NC&fV  
pgT9hle/  
  else if((c-1>=d)==1) 1%%'6cWWu  
*myG"@P4hW  
   printf("%d\n",d+1); nSS>\$  
WvujcmOf  
  else  >1A*MP4  
2K;#Evn'j  
   printf("%d\n",d+2); $[g_=Z  
moMYdArj  
  } BPqk "HG]T  
:p' VbQZ{  
  执行后输出结果是 ( ) %?bcT[|3  
bp#:UUO%S  
  (A)2 (B)3 `-_N@E1'>  
QdQ d(4/1  
  (C)4 (D)编译时有错,无结果 SyO79e*t  
Ir5WN_EaS  
  这道题的关键在(a>b>c),答 案容易判断为A,5大于4也大于3,就把整个表达式判断为真值,其实,a>b已为真值,1>c则成了假值,所以答 案为B。 RPVT*`o  
77V .["=7  
  第五类,字符串的拷贝 p,F^0OU2}:  
[*)Z!)  
  拷成了同一个字符 yPV' pT)  
nU(DYHc+l  
  题例:若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式) V  }>n  
ZsZcQj6G,  
  while(){ d[j]= 【 】;j++;} %K(0W8&  
{^5?)/<  
  d[j]=0; q@n^ZzTx  
\?DR s  
  这里容易只看到当前,忽略了还有其他字符,错填为s。答 案为s[i++]。
查看本帖完整版本: [-- 计算机二级C考试心得分享 --] [-- top --]

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