二級C語言筆試379-真題(含答案與解析)-交互_第1頁
二級C語言筆試379-真題(含答案與解析)-交互_第2頁
二級C語言筆試379-真題(含答案與解析)-交互_第3頁
二級C語言筆試379-真題(含答案與解析)-交互_第4頁
二級C語言筆試379-真題(含答案與解析)-交互_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

二級C語言筆試379(總分100,做題時間90分鐘)一、選擇題1.

語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是(

)。A

a\bhow\'are\'y\\bouB

a\bhow\'are\'y\bouC

how'are'youD

ahow'are'y\bou

分值:2答案:C[解析]“\b”格式符表示退格,功能是將它后面的字母把它前面的字母覆蓋,導(dǎo)致“\b'’

格式符前面的字母不能輸出;“\'”格式符表示輸出單引號字符;“\\”格式符表示輸出反斜線字符。2.

下列程序中c的二進(jìn)制值是(

)。

chara=2,b=4,C;

c=a^b>>2;A

00000011B

00010100C

00011100D

00011000

分值:2答案:A[解析]本題主要考查按位異或和右移運(yùn)算。b=4的二進(jìn)制為00000100,b>>2后為00000001,a=2的二進(jìn)制為00000010,兩者異或?yàn)?0000011。3.

下列描述中正確的是(

)。A

軟件工程只是解決軟件項(xiàng)目的管理問題B

軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題C

軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則D

軟件工程只是解決軟件開發(fā)過程中的技術(shù)問題

分值:2答案:C[解析]軟件工程是指將工程化的思想應(yīng)用于軟件的開發(fā)、應(yīng)用和維護(hù)的過程,包括軟件開發(fā)技術(shù)和軟件工程管理。4.

兩次運(yùn)行下列的程序,如果從鍵盤上分別輸入3和1,則輸出結(jié)果是(

)。

main()

{

intx;

scanf("%d",&x);

if(x++>2)printf("%d",x);

elseprintf("%d\n",x--);

}A

4和2B

4和1C

4和0D

3和1

分值:2答案:A[解析]本題考查ifelse語句。首先scanf函數(shù)通過鍵盤讀入x的值。,當(dāng)x=3時,第一個if語句,先判斷條件,取x的值3和2比較,然后將x的值加1,發(fā)現(xiàn)條件成立,執(zhí)行下列的printf語句,輸出x的值4。當(dāng)x=1時,第一個if語句,先判斷條件,取x的值1和2比較,然后將x的值加1(x的值變?yōu)?),發(fā)現(xiàn)條件不成立,執(zhí)行下列的else語句,先輸出x的值2,再將x的值減1。5.

下列合法的字符型常量是(

)。A

'\x13'B

'\081'C

'65'D

"\n"

分值:2答案:A[解析]C語言的字符常量是用單引號(')括起來的一個字符,也可以用以一個“\”開頭的字符序列來表示字符常量。其中形式\ddd表示1到3位8進(jìn)制數(shù)所代表的字符;形式\xhh表示1到2位16進(jìn)制數(shù)所代表的字符。在本題中'\x13'表示回車符,是一個字符常量;而'\081'用8進(jìn)制數(shù)所代表的字符形式不正確,因?yàn)?進(jìn)制數(shù)所表示的字符中不會出現(xiàn)數(shù)字“8”;'65'單引號(即撇號)括起來的不是一個字符,而是一個+進(jìn)制數(shù)字:"\n"是用雙引號括起來的一個字符,表示一個字符串,而不是字符常量。6.

下列程序段的運(yùn)行結(jié)果是(

)。

#include<stdio.h>

voidmain()

{

charstr[]="ABC",*p=str;

printf("%d\n",*(p+3));

}A

67B

0C

字符'C'的地址D

字符'C'

分值:2答案:B[解析]先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],又因?yàn)樽址蛿?shù)組在存放字符串時會自動在末尾加上'\0',所以*(p+3)=0。7.

下列程序的輸出結(jié)果是(

)。

#include<stdio.h>

main()

{

stmctst

{

inty,x,z;

};

union

{

longi;

intj;

chark;

}un;

printf("%d,%d\n",sizeof(stmctst),sizeof(un));

}A

6,2B

6,4C

8,4D

8,6

分值:2答案:B[解析]本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨(dú)立;聯(lián)合所占用的內(nèi)存空間為最長的成員所占用的空間。8.

下列說法不正確的是(

)。A

C程序是以函數(shù)為基本單位的,整個程序由函數(shù)組成B

C語言程序的一條語句可以寫在不同的行上C

C程序的注釋行對程序的運(yùn)行功能不起任何作用,所以注釋應(yīng)該盡可能少寫D

C程序的每個語句都以分號結(jié)束

分值:2答案:C[解析]本題涉及C語言基本的3個知識點(diǎn):①C語言的源程序是由函數(shù)構(gòu)成的,函數(shù)是其基本單位,每一個函數(shù)完成相對獨(dú)立的功能,其中只能包括一個主函數(shù);②C語言規(guī)定每個語句以分號結(jié)束,其書寫格式是自由的,一條語句可以寫在不同的行上,或者一行也可以寫多條語句;⑧注釋行雖然對程序的運(yùn)行不起作用,但是它可以方便程序員閱讀,提高程序的可讀性和可移植性,所以書寫注釋行還是很有必要的。9.

下列程序的運(yùn)行結(jié)果是(

)。

#include<stdio.h>

#include<string.h>

main()

{

char*s1="abDuj";

char*s2="ABdUG";

intt;

t=strcmp(s1,s2);

printf("%d",t);

}A

正數(shù)B

負(fù)數(shù)C

零D

不確定的值

分值:2答案:A[解析]本題考查字符串比較函數(shù)和兩個字符串比較的原則兩個知識點(diǎn):①原則是依次比較兩個字符串同一位置的一對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大。②strcmp(s1,s2)的返回值,當(dāng)str1<str2時,返回值<0:當(dāng)str1=str2時,返回值為0;當(dāng)str1>str2,返回值>0。10.

設(shè)有下列定義:

structsk

{

intm;

floatx;

}data,*q;

若要使q指向data中的m域,正確的賦值語句是(

)。A

q=&datm;B

*q=datm;C

q=(structsk*)&datm;D

q=(structsk*)datm;

分值:2答案:C[解析]利用強(qiáng)制類型轉(zhuǎn)換(streetsk*),把整數(shù)型地址&data.m轉(zhuǎn)換成結(jié)構(gòu)體變量指針賦給結(jié)構(gòu)體指針變量q。11.

下列4個關(guān)于C語言的結(jié)論中錯誤的是(

)。A

可以用do…while語句實(shí)現(xiàn)的循環(huán)一定可以用while語句實(shí)現(xiàn)B

可以用for語句實(shí)現(xiàn)的循環(huán)一定可以用while語句實(shí)現(xiàn)C

可以用while語句實(shí)現(xiàn)的循環(huán)一定可以用for語句實(shí)現(xiàn)D

do…while語句與while語句的區(qū)別僅是關(guān)鍵字“while”出現(xiàn)的位置不同

分值:2答案:D[解析]本題考查幾個循環(huán)語句的關(guān)系。①do…while語句、while語句、for語句所實(shí)現(xiàn)的循環(huán)可以相互替代;②do…while語句和while語句的區(qū)別是do…while語句至少執(zhí)行一次。12.

待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),要按關(guān)鍵碼值遞增的順序排序,采取以第一個關(guān)鍵碼為基準(zhǔn)元素的快速排序法,第一趟排序后關(guān)鍵碼33被放到第(

)個位置。A

3B

5C

7D

9

分值:2答案:B[解析]快速排序的基本思想是:從表中選取一個元素(如本題中的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果把線性表分割成兩部分(兩個子表),此元素插入到其分界線的位置處。然后分別對兩個子表再次分割……本題中33作為分割的中界線,第一趟排序后排在比它小的18、9、25、12后面。13.

分值:2答案:C[解析]帶參數(shù)宏的格式為:#define標(biāo)識符(形參表)形參表達(dá)式。其功能是:預(yù)處理程序?qū)⒊绦蛑谐霈F(xiàn)的所有帶實(shí)參的宏名,展開成由實(shí)參組成的表達(dá)式。14.

數(shù)據(jù)庫系統(tǒng)的核心是(

)。A

數(shù)據(jù)模型B

數(shù)據(jù)庫管理系統(tǒng)C

數(shù)據(jù)庫D

數(shù)據(jù)庫管理員

分值:2答案:B[解析]數(shù)據(jù)庫系統(tǒng)由數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、硬件平臺(硬件)、軟件平臺5個部分構(gòu)成。其中數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,它負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等工作。15.

棧和隊列的共同點(diǎn)是(

)。A

都是先進(jìn)先出B

都是先進(jìn)后出C

只允許在端點(diǎn)處插入和刪除元素D

沒有共同特點(diǎn)

分值:2答案:C[解析]棧和隊列都是操作受限制的線性表,只允許在端點(diǎn)插入和刪除。不同點(diǎn)是:棧只允許在表的一端進(jìn)行插入和刪除操作,而隊列允許在表的一端進(jìn)行插入操作,而在另一端進(jìn)行刪除操作。16.

下列程序段的輸出結(jié)果為(

)。

#include<stdio.h>

main()

{

staticchara[]="language";

char*p;

p=a;

for(p=a;p<a+8;p+=2)

putchar(*p);

}A

languageB

lnugC

有語法錯誤D

lang

分值:2答案:B[解析]本程序首先定義了靜態(tài)字符數(shù)組a,然后將指針p指向數(shù)組a的首地址。

第1次for循環(huán),p=a,p指向數(shù)組的第1個元素,*p是取指針p所指地址的內(nèi)容,輸出1;第2次for循環(huán),p=p+2,則p指向數(shù)組的第3個元素,*p是取指針p所指地址的內(nèi)容,輸出n;第3次for循環(huán),p=p+2,則p指向數(shù)組的第5個元素,*p是取指針p所指地址的內(nèi)容,輸出u;第4次for循環(huán),p=p+2,則p指向數(shù)組的第7個元素,*p是取指針p所指地址的內(nèi)容,輸出g,結(jié)束循環(huán)。17.

下列二維數(shù)組初始化語句中,不正確的是(

)。A

intb[][2]={1,2,3,4,5,6,7};B

intb[3][5]={0,0,0};C

intb[][4]={{1,2},{3,4,5},{6}};D

intb[3][2]={(1,2),(3,4),(5,6)};

分值:2答案:D[解析]在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0;C語言規(guī)定,對于二維數(shù)組,只可以省略第1個方括號中的常量表達(dá)式,而不能省略第2個方括號中的常量表達(dá)式:賦的初值不能多于事先定義好的數(shù)組元素個數(shù)。選項(xiàng)D)賦值表達(dá)式中對每一維的元素賦初值應(yīng)用{},而不是()。18.

源程序的文檔化不包括(

)。A

符號名的命名要有實(shí)際意義B

正確的文檔形式C

良好的視覺組織D

正確的程序注釋

分值:2答案:B[解析]源程序的文檔化主要包括3點(diǎn):①符號名應(yīng)具有一定實(shí)際的含義,便于理解程序功能;②正確的程序注釋;⑧良好的視覺組織(利用空格、空行、縮進(jìn)等技巧使程序?qū)哟吻逦?。19.

下列程序的運(yùn)行結(jié)果是(

)。

main()

{

inta=-5,b=1,c=1;

intx=0,y=2,z=0;

if(c>0)x=x+y;

if(a<=0)

{

if(b>0)

if(c<=0)y=x-y;

}

elseif(c>0)y=x-y;

elsez=y;

printf("%d,%d,%d\n",x,y,z);

}A

2,2,0B

2,2,2C

0,2,0D

2,0,2

分值:2答案:A[解析]本題考查ifelse語句的使用。

先判斷第1個if語句,因?yàn)閏=1>0,所以x=x+y=0+2=2。第1個if語句,因?yàn)閍=-5<0,所以進(jìn)入下列的復(fù)合語句。經(jīng)判斷發(fā)現(xiàn),復(fù)合語句中第2個汀語句的條件均不滿足,不執(zhí)行任何語句退出,在這個過程中y和x的值沒有發(fā)生變化。20.

數(shù)據(jù)的存儲結(jié)構(gòu)是指(

)。A

數(shù)據(jù)所占的存儲空間B

數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的存放形式C

數(shù)據(jù)在計算機(jī)中的順序存儲方式D

存儲在計算機(jī)外存中的數(shù)據(jù)

分值:2答案:B[解析]數(shù)據(jù)的存儲結(jié)構(gòu),又稱為數(shù)據(jù)的物理結(jié)構(gòu),是數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的存放形式,數(shù)據(jù)的存儲結(jié)構(gòu)有順序結(jié)構(gòu)、鏈?zhǔn)浇Y(jié)構(gòu)、散列結(jié)構(gòu)和索引結(jié)構(gòu)等。21.

若有說明inta[][3]={0,0};,則不正確的敘述是(

)。A

數(shù)組a的每個元素的初值都是0B

數(shù)組a的第一維大小為1C

數(shù)組a的行數(shù)為1D

只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

分值:2答案:D[解析]本題考查給二維數(shù)組元素賦值。給二維數(shù)組元素賦值時應(yīng)注意下列兩點(diǎn):①在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。②二維數(shù)組第一維的大小由下列規(guī)則確定:當(dāng)初值的個數(shù)能被第二維的常量表達(dá)式的值除盡時,所得商數(shù)就是第一維的大小;當(dāng)初值的個數(shù)不能被第二維的常量表達(dá)式的值除盡時,第一維的大?。核蒙虜?shù)+1。22.

已知i、j、k為int型變量,若要從鍵盤輸入2、3、4<CR>,使i、j、k的值分別為2、3、4,下列正確的輸入語句是(

)。A

scanf("%3d,%3d,%3d",&i,Aj,&;B

scanf("%d,%d,%d",&i,&j,&;C

scanf("%d%d%d",&i,&J,&;D

scanf("i=%d,j=%d,k=%d",&i,&j,&;

分值:2答案:B[解析]scanf函數(shù)的調(diào)用形式是:scanf(格式字符串,輸入項(xiàng)地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項(xiàng)地址表”是要輸入的變量的地址。

若在格式符中插入了其他字符,則在輸入時要求按一一對應(yīng)的位置原樣輸入這些字符,其中的逗號也必須輸入。23.

下列敘述中正確的是(

)。A

算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)B

算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)C

算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止D

以上三種描述都不對

分值:2答案:C[解析]算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)。算法的空間復(fù)雜度是指算法執(zhí)行過程中所需的存儲空間。24.

若變量已正確定義,下列正確的程序段是(

)。A

while(ch=getchar()=='\N')putchar(c;B

while((ch=getchar())=='\n')putchar(c;C

while((ch=getchar())!='\N')putchar(c;D

while((ch=getchar())!='\n')putchar(c;

分值:2答案:D[解析]本題考查兩個知識點(diǎn):①C語言用'\n'這個字符常量表示換行:②getchar函數(shù)的作用是從終端輸入一個字符,當(dāng)遇到換行時結(jié)束輸入。25.

下列程序的輸出結(jié)果是(

)。

#include<stdio.h>

intfun(intx)

{

inta;

if(x==0‖x==1)

return3;

else

a=x-fun(x-2);

returna;

}

voidmain()

{

printf("%d",fun(7));

}A

2B

8C

9D

5

分值:2答案:A[解析]本題考查函數(shù)的遞歸調(diào)用。在函數(shù)遞歸調(diào)用時,fun(7):a=7-fun(5)→fun(5):a=5-fun(3)→fun3:a=3-fun(1)→fun(1):a=3,反推回去fun(3):a=3-3=0→fun(5):a=5-0=5→fun(7):a=7-5=2,最后的計算結(jié)果為2。26.

若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是(

)。

w=2,x=3,y=4,z=5;

m=(w<x)?W:x:

m=(m<z)?m:Z;

m=(m<y)?m:y;A

2B

3C

5D

4

分值:2答案:A[解析]條件表達(dá)式“a?b:c”的含義是:當(dāng)a為真時,其值等于表達(dá)式b的值,當(dāng)a為假時,其值等于表達(dá)式c的值。

表達(dá)式運(yùn)算過程:第1個表達(dá)式:w=2<x=3為真,所以返回w的值,即m=w=2;第2個表達(dá)式:m=2<z=5為真,所以返回m的值,即m=2;第3個表達(dá)式:w=2<y<4為真,所以返回m的值,即m=2。27.

有下列函數(shù)定義:

intfun(doublea,doubleB)

{returna*b;}

若下列選項(xiàng)中所用變量都已正確定義并賦值,錯誤的函數(shù)調(diào)用是(

)。A

if(fun(x,){……}B

z=fun(fun(x,,fun(x,);C

z=fun(fun(x,x,;D

fun(x,;

分值:2答案:C[解析]本題考查函數(shù)調(diào)用時的參數(shù)傳遞。C項(xiàng)中第一個參數(shù)的表達(dá)式不正確,因此不能得到正確的結(jié)果。28.

下列標(biāo)識符不是關(guān)鍵字的是(

)。A

breakB

charC

SwitchD

return

分值:2答案:C[解析]break、char、return、switch都是C語言中的關(guān)鍵字,Switch不是。因?yàn)镃語言區(qū)分字母的大小寫。29.

標(biāo)準(zhǔn)庫函數(shù)fgets(s,n,file)的功能是(

)。A

從文件file中讀取長度為n的字符串存入字符數(shù)組s中B

從文件file中讀取長度不超過n-1個字符的字符串放到字符數(shù)組s中C

從文件file中讀取n個字符串存入字符數(shù)組s中D

從文件file中讀取長度為n-1個字符的字符串存入字符數(shù)組s中

分值:2答案:B[解析]字符串輸入函數(shù)fgets()的調(diào)用形式為:fgets(s,n,fp)。fgets函數(shù)參數(shù)說明:“s”可以是一個字符數(shù)組名,也可以是指向字符串的指針;“n”為要讀取的最多的字符個數(shù);“fp”是指向該文件的文件型指針。

fgets函數(shù)的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串放到字符數(shù)組s中;讀入字符串后會自動在字符串末尾加入“'\0'”結(jié)束符,表示字符串結(jié)束。30.

下列敘述中正確的是(

)。A

break語句只能用于switch語句體中B

continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)C

break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)D

在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

分值:2答案:C[解析]只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。當(dāng)break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強(qiáng)行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設(shè)置break語句,滿足某種條件則跳出本層循環(huán)體。31.

下列程序的運(yùn)行結(jié)果是(

)。

#include<stdio.h>

voidfun(int*s,int*p)

{

staticintt=3;

*p=s[t];

t--;

}

voidmain()

{

inta[]={2,3,4,5},k;

intx;

for(k=0;k<4;k++)

{

fun(a,&x);

printf("%d,",x);

}

}A

5,4,3,2B

2,3,4,5,C

2,2,2,2,D

5,5,5,5,

分值:1答案:A[解析]分析fun函數(shù)程序段,可知fun函數(shù)要實(shí)現(xiàn)的功能是將s中第(t+1)個元素以前的元素逆置賦給數(shù)組p。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,在主函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)組x,最后輸出x數(shù)組。32.

下列選項(xiàng)中不合法的+六進(jìn)制數(shù)是(

)。A

OxffB

OXllC

OxlgD

OXabc

分值:1答案:C[解析]+六進(jìn)制是以“0x”或“0X”開頭的字符串,字符串中只能含有0~9這10個數(shù)字和a、b、c、d、s、f這6個字母。33.

分值:1答案:D[解析]由題意可知,小寫字符a和大寫字符A的ASCⅡ代碼相差為32,所以選項(xiàng)C)能將大寫字符c的ASCⅡ代碼轉(zhuǎn)換為小寫字符c的ASCⅡ代碼:選項(xiàng)A)和C)左側(cè)的表達(dá)式都是大寫字符c與大寫字符A的差與'a'的ASCⅡ代碼的和就是小寫字符c的ASCⅡ代碼。而選項(xiàng)D)中應(yīng)該是加上'a',而不是減去'a'。34.

對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較的次數(shù)為(

)。A

125B

n/2C

nD

n+1

分值:1答案:C[解析]對線性表進(jìn)行順序查找時,從表中的第一個元素開始,將給定的值與表中逐個元素的關(guān)鍵字進(jìn)行比較,直到兩者相符,查找到所要找的元素為止。在最壞情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進(jìn)行比較,因此比較次數(shù)為n。35.

有下列函數(shù):

intfun(char*S)

{char*t=s;

while(*t++);

return(t-s);

}

該函數(shù)的功能是(

)。A

比較兩個字符串的大小B

計算s所指字符串占用內(nèi)存字節(jié)的個數(shù)C

計算s所指字符串的長度D

將s所指字符串復(fù)制到字符串t中

分值:1答案:C[解析]在函數(shù)fun(char*s)中,首先用字符指針變量t指向s,而循環(huán)語句while(*t++);的功能是使指針變量t指向字符串變量s的末尾,這時退出循環(huán),因而語句return(t-s);返回的就是字符串s所指字符串的長度。36.

下列程序的執(zhí)行結(jié)果是(

)。

#include<stdio.h>

main()

{

inta,b,c;

a=b=2;

c=(a++)-1;printf("%d,%d",a,c);

c+=-a+++(++b);printf("%d,%d",a,c);

}A

3,14,1B

3,14,2C

2,04,1D

2,14,1

分值:1答案:A[解析]本題主要考查自加運(yùn)算符(++、--)的使用。①前綴變量“++i、--i”,在使用i之前,先使i的值加1或者減1,再使用此時的表達(dá)式的值參與運(yùn)算;②后綴變量“i++、i--”,先使用此時的表達(dá)式的值參與運(yùn)算,在使用i之后,再使i的值加1或者減1。

本題中計算表達(dá)式c=(a++)-1時先使用a的值進(jìn)行計算,結(jié)果為c=2-1=1,然后將a的值加1,即執(zhí)行完此語句后a的值是3;表達(dá)式c+=-a+++(++b)等價于c=c+(-a++)+(++b),

c=1+(-3)+3=1,

此時a=4,b=3。37.

為了提高軟件模塊的獨(dú)立性,模塊之間最好是(

)。A

控制耦合B

公共耦合C

內(nèi)容耦合D

數(shù)據(jù)耦合

分值:1答案:D[解析]耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個定性標(biāo)準(zhǔn),是互相關(guān)聯(lián)的。在程序設(shè)計中,各模塊間的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,有利于提高模塊的獨(dú)立性。38.

有下列二叉樹,對此二叉樹中序遍歷的結(jié)果為(

)。

A

ABCDEFB

BDAECFC

ABDCEFD

ABCDFE

分值:1答案:B[解析]對二叉樹的中序遍歷是指:首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。在遍歷左、右子樹時,注意依舊按照“左子樹一根結(jié)點(diǎn)一右子樹”的順序。39.

在C語言中,函數(shù)返回值的類型最終取決于(

)。A

函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型B

return語句中表達(dá)式值的類型C

調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實(shí)參類型D

函數(shù)定義時形參的類型

分值:1答案:A[解析]在C語言中,應(yīng)當(dāng)在定義函數(shù)時指定函數(shù)值的類型。凡不加類型說明的函數(shù),默認(rèn)按整型處理。在定義函數(shù)時對函數(shù)值說明的類型一般應(yīng)該和return語句中的表達(dá)式類型一致。如果函數(shù)值的類型和return語句中的表達(dá)式類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)自動進(jìn)行轉(zhuǎn)換。即函數(shù)類型決定返回值的類型。40.

判斷字符串s1是否大于字符串s2,應(yīng)該使用(

)。A

if(strcmp(s1,s2)<0)B

if(s1>s2)C

if(strcmp(s2,s1)<0)D

if(strcmp(s1,s2))

分值:1答案:C[解析]本題考查字符串比較函數(shù)strcmp()。調(diào)用形式:strcmp(s1,s2),其中s1、s2分別是字符串存儲區(qū)的首地址。函數(shù)功能:比較字符串str1和str2,當(dāng)str1<str2時,返回值為負(fù)數(shù);當(dāng)str1=str2時,返回0;當(dāng)str1>str2,返回值為正數(shù)(注意:不能使用關(guān)系運(yùn)算符比較兩個字符串的大小)。二、填空題1.

在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。

分值:2答案:前后件關(guān)系[解析]在數(shù)據(jù)存儲結(jié)構(gòu)中,除了要存儲數(shù)據(jù),還要存儲數(shù)據(jù)的前后件關(guān)系,對于順序存儲的數(shù)據(jù)結(jié)構(gòu),前后件之間的關(guān)系,是通過存儲空間的位置來實(shí)現(xiàn)的,而對于鏈?zhǔn)酱鎯碚f,數(shù)據(jù)元素之間的前后件關(guān)系是通過指針來實(shí)現(xiàn)的。2.

按照“先進(jìn)先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。

分值:2答案:隊列[解析]隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進(jìn)先出的原則組織數(shù)據(jù)的。3.

深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個數(shù)為______。

分值:2答案:16

[解析]滿二叉樹的葉子結(jié)點(diǎn)都在最后一層,即第4層,且第4層的結(jié)點(diǎn)達(dá)到最大數(shù),即25-1=16。4.

在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。

分值:2答案:類[解析]在面向?qū)ο蟮姆椒ㄖ?,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實(shí)例。5.

Jackson方法是一種面向______的結(jié)構(gòu)化方法。

分值:2答案:數(shù)據(jù)結(jié)構(gòu)[解析]Jackson方法是一種結(jié)構(gòu)化分析方法,它是一種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化方法。6.

若a是血型變量,則表達(dá)式(a=2*3,a*2),a+6的值為______。

分值:2答案:12[解析]本題考查逗號表達(dá)式的運(yùn)算規(guī)則。逗號表達(dá)式的基本格式為:“表達(dá)式1,表達(dá)式2,…”,其整個表達(dá)式的結(jié)果取最后一個子表達(dá)式的值。

本題中首先計算逗號表達(dá)式中的第1個表達(dá)式a=2*3=6,然后計算第2個表達(dá)式a*2,這時整個表達(dá)式的值為12,但要注意,因?yàn)榈?個表達(dá)式并沒有給a賦值,因此a的值不變;接下來執(zhí)行最后一個表達(dá)式a+6=12,所以整個表達(dá)式最后的值為12。7.

表達(dá)式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類型為______。

分值:2答案:整型[解析]上面的表達(dá)式中,通過強(qiáng)制類型轉(zhuǎn)換把最后參與運(yùn)算的數(shù)據(jù)都轉(zhuǎn)換成了int型,所以最后得到的結(jié)果也是int類型。8.

下列程序段的輸出結(jié)果是______。

intn='C';

switch(n++)

{

default:printf("error");break;

case'a':printf("good");break;

case'C':printf("moming");

case'd':printf("class");

}

分值:2答案:morningclass[解析]本題考查了兩個知識點(diǎn):①“++、--”運(yùn)算后綴形式是先使用變量原來的值,使用完后再使其增1或減1;②在switch語句中,當(dāng)n='c'時,執(zhí)行“case'c':”,輸出morning;因?yàn)榇司渲袥]有break語句,因此接著執(zhí)行“case'd':”,輸出class,最終輸出結(jié)果為morningclass。9.

寫出下列程序的輸出結(jié)果______。

main()

{

intn=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

分值:2答案:3,3[解析]本題在while(n++<=1”語句后,直接加了分號,說明如果while()的條件為真時,該循環(huán)什么都不做;n++是先取n的當(dāng)前值和1做比較,然后再將n加1。第一次循環(huán),n=0時,循環(huán)條件n++=0<=1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時,循環(huán)條件a++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時,循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時仍將n加1,得到n=3。退出循環(huán)后執(zhí)行printf語句,第二個printf語句輸出n++,是先輸出n的當(dāng)前值3,然后再將n加1,即程序結(jié)束后得到n=4,但輸出的是3。10.

下列程序的功能是對輸入的一行字符中的數(shù)字字符的字面值累加,輸出此累加和,請?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype.h>

main()

{

charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

printf("s=%d",s);

}

分值:2答案:(c=getchar())!='\n'[解析]分析題目可知,程序中運(yùn)用函數(shù)c=getchar()從標(biāo)準(zhǔn)輸入設(shè)備讀取下一個字符,而且是一行的字符(即沒有換行),所以條件為(c=getchar())!='\n'。11.

下列程序輸出的結(jié)果是______。

intm=17;

intfun(intx,inty)

{

intm=3;

return(X*y-m);

}

main()

{

inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

分值:2答案:1[解析]本題考查局部變量和全局變量的區(qū)別:局部變量是指作用域在函數(shù)級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。

本程序首先定義了一個全局變量m=17,m=17的作用域在整個程序內(nèi)。在fun函數(shù)內(nèi)部定義了一個局部變量m=3,m=3的作用域僅在fun函數(shù)內(nèi)部,通過fun函數(shù)返回兩個形參的積再減m。在主函數(shù)中,輸出fun(a,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論