計算機(jī)等級中,最重要的舊是細(xì)心,很多考生,往往在考試后,無數(shù)次的感嘆,而究其原因就是“不細(xì)心”,面對自己辛辛苦苦準(zhǔn)備半年的考試,最后卻因為不小心而失敗, 對于這樣的打擊,是不是很令人痛心呢?
綜觀這四年來的考題,對容易出錯的典型題例作了匯總和分析,也好給以后參加二級C考試的朋友增加點(diǎn)免疫力吧。
第一類,審題不清
1.審題時的一字之差。
一定要搞清題意,題目讓我們選擇的是“正確”還是“不正確”的;“能”還是“不能”的;本來要求選出一個錯誤的答案,但題目中沒有“錯誤”字樣,而是說 “……請選出不正確的一項”,一不小心你就可能會把選項中最前面一個“正確”的選為答案,因“正確”的有三個選項,當(dāng)然覺得很容易,就這樣,“錯誤”輕易地從你的筆尖溜走了。
2.不注意文字部分的要求和說明。
很多時候,為了省時間,上來就去看程序,這樣不僅不能省時間,還會走彎路、出錯誤。看看下面的兩個例子吧!
題例1:以下程序中函數(shù)f的功能是將n個字符串,按由大到小的順序進(jìn)行排序。
以下是引用片段:
#include
void f(char p[][10],int n)
{略}
main()
{char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i;
f(p,5); printf("%d\n",strlen(p[0])); }
程序運(yùn)行后的輸出結(jié)果是
(A)6 (B)4 (C)5 (D)3
(為了節(jié)省版面,把函數(shù)f的內(nèi)容略去了。)看過文字說明,接著看主函數(shù),就可以鎖定這個字符串是“dcdbe”,而不用花時間去分析函數(shù)f。要注意的是:別把最長的一串當(dāng)成最大的字符串噢,看上“aabdfg”可就錯了,答案應(yīng)為C。
題例2: 以下程序中給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>
以下是引用片段:
# include
main ( )
{ double ?p;
p=(double ?) malloc(【 】);
p[0]=1.5;p[1]=2.5;p[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);}
如果上來就看程序,就會忽略“給指針p分配三個double型動態(tài)內(nèi)存單元”,這里要求“三個”,如果大筆一揮寫出了sizeof(double)可就太冤枉了,其實(shí)應(yīng)該是3?sizeof(double)。
第二類,把“賦值”看成了“等于”
題例:有以下程序段
int k=0
while(k=1)k++;
while 循環(huán)執(zhí)行的次數(shù)是:
(A)無限次 (B)有語法錯,不能執(zhí)行
(C)一次也不執(zhí)行 (D)執(zhí)行1次
此題如果理解為k等于1時循環(huán)才執(zhí)行,那么“k++”不被執(zhí)行,k的值就始終為0,這時就把C選上了。其實(shí),while循環(huán)的條件是一個賦值表達(dá)式,答案為A。
等 main ( )級考試(筆試)雖然知識面比較廣,但不是很深,基礎(chǔ)部分考的是你日常操作的能力,程序設(shè)計多數(shù)是考你的細(xì)心。辛辛苦苦準(zhǔn)備了大半年,又經(jīng)過2個小時的考場之戰(zhàn),交卷之后還很“自美”,成績單上的“不及格”讓你一時不敢相信自己的眼睛。當(dāng)對著答案細(xì)細(xì)“品味”時,你會N次的感嘆……原來“罪魁禍?zhǔn)?rdquo;是“不細(xì)心”。
綜觀這四年來的考題,對容易出錯的典型題例作了匯總和分析,也好給以后參加二級C考試的朋友增加點(diǎn)免疫力吧。本文將分三次刊登。
第一類,審題不清
1.審題時的一字之差。
一定要搞清題意,題目讓我們選擇的是“正確”還是“不正確”的;“能”還是“不能”的;本來要求選出一個錯誤的答案,但題目中沒有“錯誤”字樣,而是說 “……請選出不正確的一項”,一不小心你就可能會把選項中最前面一個“正確”的選為答案,因“正確”的有三個選項,當(dāng)然覺得很容易,就這樣,“錯誤”輕易地從你的筆尖溜走了。
2.不注意文字部分的要求和說明。
很多時候,為了省時間,上來就去看程序,這樣不僅不能省時間,還會走彎路、出錯誤??纯聪旅娴膬蓚€例子吧!
題例1:以下程序中函數(shù)f的功能是將n個字符串,按由大到小的順序進(jìn)行排序。
以下是引用片段:
#include
void f(char p[][10],int n)
{略}
main()
{char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i;
f(p,5); printf("%d\n",strlen(p[0])); }
程序運(yùn)行后的輸出結(jié)果是
(A)6 (B)4 (C)5 (D)3
(為了節(jié)省版面,把函數(shù)f的內(nèi)容略去了。)看過文字說明,接著看主函數(shù),就可以鎖定這個字符串是“dcdbe”,而不用花時間去分析函數(shù)f。要注意的是:別把最長的一串當(dāng)成最大的字符串噢,看上“aabdfg”可就錯了,答案應(yīng)為C。
題例2: 以下程序中給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>
以下是引用片段:
# include
{ double ?p;
p=(double ?) malloc(【 】);
p[0]=1.5;p[1]=2.5;p[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);}
如果上來就看程序,就會忽略“給指針p分配三個double型動態(tài)內(nèi)存單元”,這里要求“三個”,如果大筆一揮寫出了sizeof(double)可就太冤枉了,其實(shí)應(yīng)該是3?sizeof(double)。
第二類,把“賦值”
看成了“等于”
題例:有以下程序段
int k=0
while(k=1)k++;
while 循環(huán)執(zhí)行的次數(shù)是:
(A)無限次 (B)有語法錯,不能執(zhí)行
(C)一次也不執(zhí)行 (D)執(zhí)行1次
此題如果理解為k等于1時循環(huán)才執(zhí)行,那么“k++”不被執(zhí)行,k的值就始終為0,這時就把C選上了。其實(shí),while循環(huán)的條件是一個賦值表達(dá)式,答案為A。
第三類,表達(dá)式的值與變量的值
題例:有以下程序
以下是引用片段:
int a=2;
int f(int ?a)
{return (?a)++;}
main( )
{ int s=0;
{ int a=5;
s+=f(&&a);
}
s+=f(&&a);
printf("%d\n",s);
}
執(zhí)行后輸出結(jié)果是()
(A)10 (B)9 (C)7 (D)8
答案是C。
此題有兩個要點(diǎn),1是局部變量與全局變量的作用范圍,2是,函數(shù)f(&&a)返回的是表達(dá)式 (?a)++的值,而不? a的值。
第四類,把關(guān)系表達(dá)式有別于數(shù)學(xué)上的關(guān)系式
題例:有以下程序
以下是引用片段:
main()
{ int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
}
執(zhí)行后輸出結(jié)果是 ( )
(A)2 (B)3
(C)4 (D)編譯時有錯,無結(jié)果
這道題的關(guān)鍵在(a>b>c),答案容易判斷為A,5大于4也大于3,就把整個表達(dá)式判斷為真值,其實(shí),a>b已為真值,1>c則成了假值,所以答案為B。
第五類,字符串的拷貝,
拷成了同一個字符
題例:若有定義語句:char s[100],d[100]; int j=0, i=0;,且s中已賦字符串,請?zhí)羁找詫?shí)現(xiàn)字符串拷貝。(注:不得使用逗號表達(dá)式)
while([i]){ d[j]= 【 】;j++;}
d[j]=0;
這里容易只看到當(dāng)前,忽略了還有其他字符,錯填為s[i]。答案為s[i++]。
以上介紹的是關(guān)于計算機(jī)等級考試中,最為容易出錯的地方,也是考生最不細(xì)心,最容易忽視的,希望通過我們以上的介紹,能夠給您起到一個提醒的作用,避免在自己的考試中出現(xiàn)類似的馬虎情況。
所屬頻道:培訓(xùn)動態(tài)
責(zé)任編輯: