版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
二級C語言筆試37(總分:86.00,做題時間:90分鐘)一、{{B}}選擇題{{/B}}(總題數(shù):50,分?jǐn)?shù):50.00)1.以下程序執(zhí)行后sum的值是______。main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d/n",sum);}
(分?jǐn)?shù):1.00)
A.15
B.14
C.不確定
√
D.0解析:[評析]變量sum在使用時未賦初值,所以無法確定sum最終的值。2.軟件調(diào)試的目的是______。
(分?jǐn)?shù):1.00)
A.發(fā)現(xiàn)錯誤
B.改正錯誤
√
C.改善軟件的性能
D.挖掘軟件的潛能解析:[評析]由程序調(diào)試的概念可知:程序調(diào)試活動由兩部分組成,其一是根據(jù)錯誤的跡象確定程序中錯誤的確切性質(zhì)、原因和位置。其二,對程序進(jìn)行修改,排除這個錯誤。所以程序調(diào)試的目的就是診斷和改正程序中的錯誤。3.面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是______。
(分?jǐn)?shù):1.00)
A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系
B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念
C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
√
D.鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用實際領(lǐng)域的概念去思考解析:[評析]面向?qū)ο蟮脑O(shè)計方法基本原理:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用應(yīng)用領(lǐng)域的概念去思考。4.當(dāng)調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是______。
(分?jǐn)?shù):1.00)
A.數(shù)組的長度
B.數(shù)組的首地址
√
C.數(shù)組每一個元素的地址
D.數(shù)組每個元素中的值解析:[評析]當(dāng)調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是數(shù)組的首地址,函數(shù)中的形參可定義成以下三種形式:①形參定義成數(shù)組;②形參定義成可變長數(shù)組:⑧形參定義為指針變量。5.假定建立了以下鏈表結(jié)構(gòu),指針p、q分別指向如圖所示的結(jié)點,則以下可以將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句組是______。
(分?jǐn)?shù):1.00)
A.free(;p->next=q->next;
B.(*.next=(*.next;free(;
√
C.q=(*.next;(*.next=q;free(;
D.q=q->next;p->next=q;p=p->next;free(:解析:[評析]選項A的錯誤在于,先已經(jīng)把q結(jié)點給釋放,無法再進(jìn)行余下語句了;選項C和D的錯誤在于因為有了q=(*q).next做了賦值,則free(q)釋放了原來q后面的一個結(jié)點。6.設(shè)char型變量x中的值為10100111,則表達(dá)式(2+x)^(~3)的值為______。
(分?jǐn)?shù):1.00)
A.10101001
B.10101000
C.11111101
D.01010101
√解析:[評析]異或運算符(^)的運算規(guī)則是:參加運算的兩個相應(yīng)位同號,則結(jié)果為0(假);異號則為1(真)。取反運算符(-)的運算規(guī)則是:對一個二進(jìn)制數(shù)按位取反,即將0變?yōu)?,1變?yōu)?。本題(-3)是對3(二進(jìn)制形式為00000011)按位取反即11111100。表達(dá)式(2+x)^(-3)的值就等價于(00000010+10100111)^11111100,結(jié)果為01010101。7.有以下程序:main(){intx[8]={8,7,6,5,0,0},*s;S=x+3;printf("%d/n",s[2]);}程序運行后的輸出結(jié)果是______。
(分?jǐn)?shù):1.00)
A.隨機(jī)值
B.0
√
C.5
D.6解析:[評析]本題定義了數(shù)組x[8]和指針變量s,由C語言規(guī)定,指針加1的含義是使指針指向數(shù)組的下一個元素,而不是指針值簡單的加1,因此通過s=x+3;使s指向數(shù)組元素x[3]。由于指向數(shù)據(jù)的指針變量可以帶下標(biāo)表示,如s[i]與*(s+i)等價。因此題目要求輸出s[2]的值,即*(s+2)的值,也就是x[5]的值,為0。8.以下只有在使用時才為該類型變量分配內(nèi)存的存儲類說明是______。
(分?jǐn)?shù):1.00)
A.auto和static
B.auto和register
√
C.register和static
D.extern和register解析:[評析]extern、register、static、auto分別是定義外部變量、寄存器變量、靜態(tài)變量、自動變量,其中,自動變量和寄存器變量屬于動態(tài)存儲,調(diào)用時臨時分配單元;而靜態(tài)變量和外部變量屬于靜態(tài)存儲,在整個程時都存在。9.以下程序的輸出結(jié)果是______。longfum(intn){longs;if(n==||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%ld/n",fun(3));}
(分?jǐn)?shù):1.00)
A.1
√
B.2
C.3
D.4解析:[評析]這是一個遞歸函數(shù)。遞歸的結(jié)束條件是,n=1或者n=2。按照程序順序,即可得出本題結(jié)果為1。10.下列敘述中正確的是______。
(分?jǐn)?shù):1.00)
A.C語言編譯時不檢查語法
B.C語言的子程序有過程和函數(shù)兩種
C.C語言的函數(shù)可以嵌套定義
D.C語言中,根據(jù)函數(shù)能否被其他源文件調(diào)用,被區(qū)分為內(nèi)部函數(shù)和外部函數(shù)
√解析:[評析]選項A的錯誤在于編譯過程中是檢查語法的,若發(fā)現(xiàn)源程序有語法錯誤,則系統(tǒng)會提示出錯信息;選項B的錯誤在于C語言中,子程序的作用是由函數(shù)來完成的,無過程的概念;選項C的錯誤在于函數(shù)不可以嵌套定義,但可以嵌套調(diào)用。11.有以下程序:voidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=1;i>0;i--)sum(&aa[i]);print("%d/n",aa[0]);}程序運行后的輸出結(jié)果是______。
(分?jǐn)?shù):1.00)
A.4
B.3
C.2
D.1
√解析:[評析]C語言覿定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,只由實參傳給形參,而不能由形參傳回來給實參。函數(shù)調(diào)用結(jié)束后,形參單元被釋放,實參單元仍保留并維持原值。本題要求輸出aa[0]的值,結(jié)果應(yīng)為1。12.以下所列的各函數(shù)首部中,正確的是______。
(分?jǐn)?shù):1.00)
A.voidplay(vara:Integer,varb:Intege
B.voidplay(inta,
C.voidplay(inta,int
√
D.Subplay(aasinteger,basintege解析:[評析]除選項C項外,其他各項都沒有按照C語言中的函數(shù)定義規(guī)則定義函數(shù)。13.下列程序的運行結(jié)果是______。voidfun(int*a,int*B){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x’&a,*y’&b;fun(x,y);printf("%d%d",a,B);}
(分?jǐn)?shù):1.00)
A.63
B.36
√
C.編譯出錯
D.00解析:[評析]本題中主函數(shù)里的x、y,fun函數(shù)里的a/b/k,這些都是指針,fun函數(shù)中只是將a、b這兩個指針交換了位置,而并沒有改變主函數(shù)中變量a、b的值。14.假設(shè)a和b為int型變量,則執(zhí)行以下語句后,b的值為______。a=1;b=10;do{b-=a;a++;}while(b--<0);
(分?jǐn)?shù):1.00)
A.9
B.-2
C.-1
D.8
√解析:[評析]本題程序第一輪循環(huán)后b的值為9,在進(jìn)行循環(huán)條件測試時,先取b的現(xiàn)值9與0比較,然后再將b減1。由于9<0不成立,因此循環(huán)結(jié)束,這時b的值已變成8,本題正確答案為D。15.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是______。
(分?jǐn)?shù):1.00)
A.'a'<=c<='z'
B.(c>='a')||(c<='z')
C.('a'<=and('z'>=
D.(c>='a')&&(c<='z')
√解析:[評析](c>='a')和(c<'z')的關(guān)系應(yīng)該是“與”的關(guān)系。16.以下程序的輸出結(jié)果是______。fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(5,2,A);printf("%d",A);}
(分?jǐn)?shù):1.00)
A.0
B.29
C.31
√
D.無定值解析:[評析]本題中,a的值并沒有改變,因為傳遞到函數(shù)中的是變量值。17.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(1+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d/n",k);}
(分?jǐn)?shù):1.00)
A.20
B.21
√
C.22
D.23解析:[評析]按程序的流程走一遍,可以得到p[0]=0,p[1]=2,p[3]=6;執(zhí)行三次k+=p[i]*2,相當(dāng)于k=5+0*2+2*2+6*2=21。18.對于下面的程序#include<stdio.h>#include<string.h>char*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));strcpy(string,scmp(string,str[2]));printf("%s/n",string);}若運行時依次輸入abcd、abba和abc三個字符串,則輸出結(jié)果為______。
(分?jǐn)?shù):1.00)
A.abcd
B.abba
√
C.abc
D.abca解析:[評析]本題自定義函數(shù)scmp()的作用是比較字符串s1和s2的大小,如果s1<s2,函數(shù)返回s1的值,否則返回s2的值。若運行時依次輸入abcd、abba和abc三個字符串,執(zhí)行strcpy(string,scmp(str[0],str[1]));后,string的值為abba,再執(zhí)行strcpy(string,scmp(string,str[2]));,由于scmp(stringstr[2])返回string的值abba,再拷貝到字符串?dāng)?shù)組string中,所以本題輸出abba。19.當(dāng)執(zhí)行下.面的程序時,其輸出結(jié)果為______。unionst{inta;charb;}main(){unionsts;char*p=(char*)&s;s.a=0x3132;s.b=0x33;printf("%c",*p);}
(分?jǐn)?shù):1.00)
A.1
B.2
C.3
√
D.不確定解析:[評析]共用體類型結(jié)構(gòu)的特點是使幾個不同的變量共占同一段內(nèi)存,但在每一瞬時只能存放其中一種,而不是同時存放幾種,共用體變量中起作用的成員是最后一次存放的成員,在存入一個新的成員后原有的成員就失去作用。因此本題起作用的是成員b的值,所以程序打印輸出3。20.main(intargc,char*argv[]){while(--argc>0)printf("%s",argv[argc]);printf"/n");}假定以上程序經(jīng)編譯和連接后生成可執(zhí)行文件PROG.EXE,如果在此可執(zhí)行文件所在目錄的DOS提示符下鍵入PROGABCDEFGHIJKL↓,則輸出結(jié)果為______。
(分?jǐn)?shù):1.00)
A.ABCDEFG
B.IJHL
C.ABCDEFGHIJKL
√
D.IJKLABCDEFGH解析:[評析]本題主函數(shù)帶有兩個參數(shù),一個int型變量argc,另一個是char型的一維一級指針數(shù)組argv。當(dāng)主函數(shù)被執(zhí)行時,系統(tǒng)自動將根據(jù)命令行的情況,分別給主函數(shù)的兩個參數(shù)賦值。Argc中存放命令行中命令字和參數(shù)的總和的個數(shù),argv用來存放命令行中命令字和所有參數(shù)的字符串的,并規(guī)定argv[0]存放命令字字符串,argv[1]用來存放第一個參數(shù)的字符串,argv[2]用來存放第2個參數(shù)的字符串,依此類推。題中argc的值是2,執(zhí)行完-argc后為1,輸出argv[1],此數(shù)組存在第一個參數(shù)的字符串ABCDEFGHIJKL。21.下列程序段的輸出結(jié)果是______。voidfun(int*x,int*y){pnntf("%d%d",*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}
(分?jǐn)?shù):1.00)
A.2143
√
B.1212
C.1234
D.2112解析:[評析]本題中函數(shù)傳遞的是變量的地址,如果形參在函數(shù)中發(fā)生改變,相劉應(yīng)的實參也就有了改變。22.數(shù)據(jù)庫的物理設(shè)計是為一個給定的邏輯結(jié)構(gòu)選取一個適合應(yīng)用環(huán)境的______的過程,包括確定數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)和存取方法。
(分?jǐn)?shù):1.00)
A.邏輯結(jié)構(gòu)
B.物理結(jié)構(gòu)
√
C.概念結(jié)構(gòu)
D.層次結(jié)構(gòu)解析:[評析]根據(jù)數(shù)據(jù)庫物理設(shè)計的概念可知:為一個給定的邏輯數(shù)據(jù)模型選取一個最合適應(yīng)用要求的物理結(jié)構(gòu)的過程,就是數(shù)據(jù)庫的物理設(shè)計。數(shù)據(jù)庫的物理結(jié)構(gòu)就是指數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)與存取方法。23.在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是______。
(分?jǐn)?shù):1.00)
A.整型常量
B.整型表達(dá)式
C.整型常量或整型表達(dá)式
√
D.任何類型的表達(dá)式解析:[評析]C語言規(guī)定只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組,數(shù)據(jù)元素的表示形式為數(shù)組名[下標(biāo)],下標(biāo)可以是整型常量或整型表達(dá)式。24.設(shè)有以下聲明語句streetex{intx;floaty;charz;}example;則下面的敘述中不正確的是______。
(分?jǐn)?shù):1.00)
A.struct是結(jié)構(gòu)體類型的關(guān)鍵字
B.example是結(jié)構(gòu)體類型名
√
C.x,y,z都是結(jié)構(gòu)體成員名
D.structex是結(jié)構(gòu)體類型解析:[評析]example是結(jié)構(gòu)體變量名。25.按條件f對關(guān)系R進(jìn)行選擇,其關(guān)系代數(shù)表達(dá)式為______。
(分?jǐn)?shù):1.00)
A.
B.
C.
√
D.解析:[評析]選擇運算是一個一元運算,關(guān)系R通過選擇運算(并由該運算給出所選擇的邏輯條件)后仍為一個關(guān)系。這個關(guān)系是由R中那些滿足邏輯條件的元組所組成。如果關(guān)系的邏輯條件為f,則R滿足f的選擇運算可以寫成σF(R)。26.有以下程序段:intk=0;while(k=1)k++;while循環(huán)執(zhí)行的次數(shù)是______。
(分?jǐn)?shù):1.00)
A.無限次
√
B.有語法錯,不能執(zhí)行
C.一次也不執(zhí)行
D.執(zhí)行1次解析:[評析]C語言里關(guān)系表達(dá)式的等于應(yīng)該是“=”。一個等于號表示賦值,即這里面重復(fù)的把1賦給k,自然表達(dá)式k=1的值總為1,while后面的表達(dá)式恒為真,當(dāng)然會進(jìn)入死循環(huán)。27.下面的程序輸出結(jié)果是______。#definer16#ifr==16voidp(inta){printf("%x",a);}#elsevoidp(inta){printf("%d",a);}#endifmain(){p(32);}
(分?jǐn)?shù):1.00)
A.32
B.20
√
C.編譯時錯誤
D.運行時錯誤解析:[評析]“#definer16”的作用是指定用標(biāo)識符r來代替16,因此程序編譯時只編譯#if部分,故程序運行時,打印輸出十六進(jìn)制的32,即20。28.對長度為N的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為______。
(分?jǐn)?shù):1.00)
A.N+1
B.N
√
C.(N+1)/2
D.N/2解析:[評析]在進(jìn)行順序查找過程中,如果被查的元素是線性表中的最后一個,或者被查元素根本不在線性表中,則為了查找這個元素需要與線性表中所有元素進(jìn)行比較,這是順序查找最壞的情況。解析:[評析]“a>b?(b>c?1:0):0”的求解順序是:先判斷a>b是否為真,如果為真,則執(zhí)行b>c?1:0,如果b>c為真,則(b>c?1:0)的值為1,從而整個表達(dá)式返回1,否則整個表達(dá)式返回0;如果a仁b,則表達(dá)式返回0。因此功能等價的語句應(yīng)為if((a>b)&&(b>c)k=1;elsek=0;。30.在下列選項中,______不是一個算法一般應(yīng)該具有的基本特征。
(分?jǐn)?shù):1.00)
A.確定性
B.可行性
C.無窮性
√
D.擁有足夠的情報解析:[評析]一個算法,一般應(yīng)具有以下幾個基本特征:①可行性②確定性③有窮性④擁有足夠的情報。31.當(dāng)執(zhí)行下面的程序時,如果輸入ABC,則輸出結(jié)果是______。#include"stdio.h"#include"string.h"main(){charss[10]="12345";gets(ss);strcat(ss,"6789");printf("%s/n",ss);}
(分?jǐn)?shù):1.00)
A.ABC6789
√
B.ABC67
C.12345ABC6
D.ABC456789解析:[評析]strcat(strl,str2)合并字符串函數(shù)的作用是把str2所指字符串的內(nèi)容連接到strl字符串的后面,自動刪去strl原來串中的'0'。為了進(jìn)行這項操作,要求strl所指的字符串后面有足夠的空間來容納str2所指字符串中的內(nèi)容。函數(shù)值為strl所指第一個字符的地址。32.在結(jié)構(gòu)化方法中,軟件功能分解屬于軟件開發(fā)中的______階段。
(分?jǐn)?shù):1.00)
A.詳細(xì)設(shè)計
B.需求分析
C.總體設(shè)計
√
D.編程調(diào)試解析:[評析]總體設(shè)計過程通常由兩個主要階段組成:系統(tǒng)設(shè)計,確定系統(tǒng)的具體實現(xiàn)方案;結(jié)構(gòu)設(shè)計,確定軟件結(jié)構(gòu)。為確定軟件結(jié)構(gòu),首先需要從實現(xiàn)角度把復(fù)雜的功能進(jìn)一步分解。33.有以下程序段:intx=3;do{printf("%d",x-=2);}while(!(--x));其輸出結(jié)果是______。
(分?jǐn)?shù):1.00)
A.1
B.30
C.1-2
√
D.死循環(huán)解析:[評析]本題中循環(huán)執(zhí)行了兩次,第一次,執(zhí)行完printf語句后,x=1,而-x是先自減后執(zhí)行語句,所以(!(-x))的值為非零,所以又執(zhí)行了一次。第二次x的值為-2,-x的值為-3,求非后,值為0,跳出循環(huán)。34.若a為int類型,且其值為3,則執(zhí)行完表達(dá)式a+=a-=a*a后,a的值是______。
(分?jǐn)?shù):1.00)
A.-3
B.9
C.-12
√
D.6解析:[評析]C語言中對賦值運算的運算的運算順序是自右向左。本題中,計算a*a之后,a的值依然為3,表達(dá)式a*a的值為9;a-=9,a=3-9=-6:a+=-6,a=-6+-6=-12。35.以下程序的輸出結(jié)果是______。main(){intx=05;charz='a';printf("%d/n",(x&1)&&(z<'z'));}
(分?jǐn)?shù):1.00)
A.0
B.1
√
C.2
D.3解析:[評析]“&”是位運算符表示按位與運算,“&&”是邏輯運算符當(dāng)其兩邊的表達(dá)式都為真時返回真值。關(guān)系表達(dá)式(x&1)&&(z<'z'),(x&1)為真,(z<'z')為真,兩者相與,自然也為真,以整型輸出,則輸出1。36.若有定義int*p[3]:,則以下敘述中正確的是______。
(分?jǐn)?shù):1.00)
A.定義了一個基類型為int的指針變量p,該變量有三個指針
B.定義了一個指針數(shù)組p,該數(shù)組含有三個元素,每個元素都是基類型為int的指針
√
C.定義了一個名為*p的整型數(shù)組,該數(shù)組含有三個int類型元素
D.定義了一個可指向一維數(shù)組的指針變量p,所指一維數(shù)組應(yīng)具有三個int類型元素解析:[評析]由于運算符[]優(yōu)先級比*高,int*p[3];相當(dāng)于int*(p[3]);,表示數(shù)組p的三個元素都是指針變量,且每個元素都是基類型為int的指針。37.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f/n",a,c,f,x);}程序運行后的輸出結(jié)果是______。
(分?jǐn)?shù):1.00)
A.16516.5
B.1651.56.5
√
C.1651.06.5
D.2651.56.5解析:[評析]本題求解步驟如下:先進(jìn)行,"c*=(x=6.5)”的運算,由于x=6.5,表達(dá)式相當(dāng)于c=c*6.5=10*6.5=65。再進(jìn)行"f/=65"的運算,相當(dāng)于f=f/65=100.0/65,由于f為單精度實型變量,因此f的值約為1.538462。然后進(jìn)行'a=f'的運算,由于a為整型變量,因此a=1。最后將各個變量的值按照printf中的格式要求輸出到屏幕,注意變量f,x按照”%3.1f'格式輸出,即只輸出一位小數(shù)。38.若執(zhí)行以下程序時從鍵盤上輸入9,則輸出結(jié)果是______。main(){intn;scanf("%d:",&n);if(n++<10)printf("%d/n",n);elseprinf("%d/n",n--);}
(分?jǐn)?shù):1.00)
A.11
B.10
√
C.9
D.8解析:[評析]n++是在語句結(jié)束后再加1,因此,if語句中相當(dāng)于判斷的是9<10,當(dāng)然是執(zhí)行if語句后面的printf語句,而這時,因為if語句被執(zhí)行,n的值也被加1,所以在打印時,n值為10,而n-是在printf語句執(zhí)行完畢后再減1的。39.以下程序的輸出結(jié)果是______。#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k/m)/SQR(k+m);printf("%d/n",A);}
(分?jǐn)?shù):1.00)
A.16
B.2
√
C.9
D.1解析:[評析]C語言在預(yù)編譯時遇到帶實參的宏名,則按命令行中指定的字符串從左到右進(jìn)行置換。在做這題時,也不妨運用置換法。得到a/=k+m*k+m/k+m*k+m=16/7=2。注:a為整型,所以在做除法,自動取整。40.信息隱蔽的概念與下述______概念直接相關(guān)。
(分?jǐn)?shù):1.00)
A.軟件結(jié)構(gòu)定義
B.模塊獨立性
√
C.模塊類型劃分
D.模擬耦合度解析:[評析]信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不合晰問的。模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。衡量軟件的模塊獨立性的度量標(biāo)準(zhǔn)是耦合性和內(nèi)聚性。一個模塊的內(nèi)聚性越強,則該模塊的模塊獨立性越強。而內(nèi)聚性是信息隱蔽和局部化概念的自然擴(kuò)長。41.有以下程序:voidswap1(int*a,int*b){int*c=a;a=b,b=c;}voidswap2(int*a,int*b){intc=*a;*a=*b,*b=c;}main(){inta=10,b=15;swap1(&a,&b);printf("%d,%d,",a,b);a=10,b=15;swap2(&a,&b);printf("%d,%d",a,b);}其輸出結(jié)果為______。
(分?jǐn)?shù):1.00)
A.15,10,10,15
B.15,10,15,10
C.10,15,10,15
D.10,15,15,10
√解析:[評析]C語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,只由實參傳給形參,而不能由形參傳回來給實參。在內(nèi)函數(shù)調(diào)用結(jié)束后,形參單元被釋放,實參單元仍保留并維持原值。本題中swapl()函數(shù)中,雖然改變了形參指針的值,但實參指針的值并沒有改變,所以執(zhí)行第一個printf后應(yīng)輸出10,15,swap2()函數(shù)實現(xiàn)了交換兩個變量a和b的值,因此執(zhí)行第三個printf后輸出交換后的值15,10,所以本題答案為D。42.設(shè)x、y、t均為血型變量,則執(zhí)行語句x=y=3;t=++x||++y;后,y的值為______。
(分?jǐn)?shù):1.00)
A.不定值
B.4
C.3
√
D.1解析:[評析]C語言中在做邏輯或運算時,自左向右判斷各個參加或運算的表達(dá)式,一旦運算到某式的值為非零時,表明整個表達(dá)式一定為真,余下的語句則不再進(jìn)行運算。本題中,++x的值為真,則++y并沒有進(jìn)行運算,所以y值不變。43.以下變量x、y、z均為double類型且已正確賦值,不能正確表示數(shù)學(xué)式子x/(y*z)的C語言表達(dá)式是______。
(分?jǐn)?shù):1.00)
A.x/y*z
√
B.x*(1/(y*)
C.x/y*1/z
D.x/y/z解析:[評析]按照自左向右的運算邏輯,選項A是先做x/y,然后再乘以x,顯然與題意不符。44.下列關(guān)于隊列的敘述中正確的是______。
(分?jǐn)?shù):1.00)
A.在隊列中只能插入數(shù)據(jù)
B.在隊列中只能刪除數(shù)據(jù)
C.隊列是先進(jìn)先出的線性表
√
D.隊列是先進(jìn)后出的線性表解析:[評析]隊列是指允許在一端進(jìn)行插入、而在另一端進(jìn)行刪除的線性表。它又稱為“先進(jìn)先出”或“后進(jìn)后出”的線性表,體現(xiàn)了“先來先服務(wù)”的原則。45.下列不合法的main函數(shù)命令行參數(shù)的表示形式是______。
(分?jǐn)?shù):1.00)
A.main(inta,char*c[]);
B.main(ac,aintarc;char**av;
C.main(c,intc;char*v[];
D.main(argc,argintargc;charargv[];
√解析:[評析]main函數(shù)的參數(shù)通常有兩個,前者為整型,后者為字符型指針數(shù)組。參數(shù)的名字可以是任意合法的標(biāo)識符。而且,形如**av與*av[]等價,所以選項A、B、C均正確,選項D是錯誤的。46.希爾排序法屬于______類型的排序法。
(分?jǐn)?shù):1.00)
A.交換類排序法
B.插入類排序法
√
C.選擇類排序法
D.建堆排序法解析:[評析]希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進(jìn)行插入排入。所以希爾排序法屬于插入類排序,但它對簡單插入排序做了很大的改進(jìn)。47.下面程序運行后的輸出結(jié)果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d/n",*p);}
(分?jǐn)?shù):1.00)
A.1
B.7
C.9
√
D.11解析:[評析]本題a[2][3]定義為一個具有兩行三列的元素的數(shù)組,malloc()函數(shù)的作用是開辟了一個長度為sizeof(int)的內(nèi)存區(qū),p為指向整型數(shù)據(jù)的指針變量,程序調(diào)用fut()函數(shù),將第一行第一列對應(yīng)的元素值賦給**s,由于數(shù)組中第一行第一列對應(yīng)的元素為9,所以本題輸出值9。48.以下程序試圖把從終端輸入的字符輸出到名為abc.txt的文件中,直到從終端讀入字符串#號時結(jié)束輸入和輸出操作,但程序有錯#include<stdio.h>main(){FILE*fout;charch;fout=fopen('abc.txt''w');ch=fgetc(stdin);while(ch!='#'){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}出錯的原因是______。
(分?jǐn)?shù):1.00)
A.函數(shù)fopen調(diào)用形式錯誤
√
B.輸入文件沒有關(guān)閉
C.函數(shù)fgetc調(diào)用形式錯誤
D.文件指針stdin沒有定義解析:[評析]本題考查的是文件的打開函數(shù)fopen(),其調(diào)用方式通常為FLIE*fp;fp=fopen(文件名,使用文件方式);,如:fp=fopen("abc.txt","w");表示要打開名字為abc.txt的文件,使用文件方式寫入。fopen函數(shù)帶回指向abc.txt文件的指針并賦給fp,即fp指向文件abc.txt。49.下列程序的輸出結(jié)果是______。main(){chara[10]-(9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}
(分?jǐn)?shù):1.00)
A.非法
B.a[4]的地址
C.5
√
D.3解析:[評析]本題中char*p=a+5;即相當(dāng)于p;&a[5],而-p,是先要減1,則printf語句要輸出的值就是a[4]。50.對下面的程序進(jìn)行編譯與連接生成可執(zhí)行文件c.exe,并在DOS命令提示符下輸入:cIsaid"IloveChina"!程序代碼如下:main(intargc,char*argv[]){printf("%d",argC);}其輸出結(jié)果為______。
(分?jǐn)?shù):1.00)
A.4
B.5
√
C.6
D.7解析:[評析]帶參數(shù)的main()函數(shù)常用形式為:main(intargc,char*argv[]其中,參數(shù)的個數(shù)由C程序運行時自動計算出來。字符型指針數(shù)組argv的第一個元素存放命令名,其后各個元素依次存放命令行中各個參數(shù)的首地址;整型變量argc用來記錄命令行中的參數(shù)個數(shù),文件名也作為一個參數(shù),對于命令行中雙引號內(nèi)的字符串,即使有空格分開,也只算是一個參數(shù),同時雙引號本身不算參數(shù)的內(nèi)容,因此本題axgc的值等于5。二、{{B}}填空題{{/B}}(總題數(shù):18,分?jǐn)?shù):36.00)51.棧的基本運算有三種:入棧、退棧和{{U}}【1】{{/U}}。
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:讀棧頂元素)解析:[評析]棧的基本運算有三種:入棧、退棧和讀棧頂元素。入棧運算是指在棧頂位置插入一個新元素。這個運算有兩個基本操作:首先將棧頂指針進(jìn)一(即top加1),然后將新元素插入到棧頂指針指向的位置。退棧運算是指取出棧頂元素并賦給一個指定的變量。這個運算有兩個基本操作:首先將棧頂元素(棧頂指針指向的元素)賦給一個指定的變量,然后將棧頂指針退一(即top減1)。讀棧頂元素是指將棧頂元素賦給一個指定的變量。這個運算不刪除棧頂元素,只是將它的值賦給一個變量。52.在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對象的【2】性來實現(xiàn)的。
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:封裝)解析:[評析]軟件工程的基本原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。信息隱蔽是指采用封裝技術(shù),將程序模塊的實現(xiàn)細(xì)節(jié)隱藏起來,使模塊接口盡量簡單。53.數(shù)據(jù)流的類型有【3】和事務(wù)型。
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:變換型)解析:[評析]典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型:是指信息沿輸入通路進(jìn)入系統(tǒng),同時由外部形式變換為內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。事務(wù)型:在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。54.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【4】。
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:數(shù)據(jù)庫管理系統(tǒng)或DBMS)解析:[評析]數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。55.關(guān)系模型的數(shù)據(jù)操縱即是建立在關(guān)系上的數(shù)據(jù)操縱,一般有{{U}}【5】{{/U}}、增加、刪除和修改四種操作。
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:查詢)解析:[評析]關(guān)系模型的數(shù)據(jù)操縱即是建立在關(guān)系上的數(shù)據(jù)操縱,一股有查詢、增加、刪除和修改四種操作。數(shù)據(jù)查詢:用戶可以查詢關(guān)系數(shù)據(jù)庫中的數(shù)據(jù),它包括一個關(guān)系內(nèi)的查詢以及多個關(guān)系間的查詢。數(shù)據(jù)刪除的基本單位是一個關(guān)系內(nèi)的元組,它的功能是將指定關(guān)系內(nèi)的指定元組刪除。數(shù)據(jù)插入僅對一個關(guān)系而言,在指定關(guān)系中插入一個或多個元組。數(shù)據(jù)修改是在一個關(guān)系中修改指定的元組和屬性。56.下列程序的輸出結(jié)果是{{U}}【6】{{/U}}。main(){inta=1,b=2;a=a+b;b=a-b;a=a-b;printf("%d,%d/n",a,b);}
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:2,1)解析:[評析]本題中,執(zhí)行a=a+b時,a=1,b=2,a=1+2=3;b=a-b時,a=3,b=2,b=3-2=1;a=a-b時,a=3,b=1,a=3-1=2;因此,本題的輸出是2,157.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨簃ain()}inta=9,b=2;floatx={{U}}【7】{{/U}},y=1.1,z;z=a/2+b*x/y+1/2;printf("%5.2f/n",z);}
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:6.6)解析:[評析]本題,已知結(jié)果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a、b代入,得到16.0=(9/2+2*x/1.1+1/2。因為a=9,a是整型,所以9/2的值在沒有進(jìn)行類型轉(zhuǎn)換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。58.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁?。st=(char*){{U}}【8】{{/U}};
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:malloc(11))解析:[評析]malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū)。此題要分配11字節(jié)的單元,把11代入即可。59.下列程序段的輸出結(jié)果是{{U}}【9】{{/U}}。main(){charb[]="Hello,you";b[5]=0;printf("%s/n",B);}
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:Hello)解析:[評析]字符串中,數(shù)值0或符號'0'表示字符串的結(jié)束。本題中,b[5]被賦了0值,表明字符串b的第六個字符就是結(jié)束標(biāo)志。因此,只輸出前五個字符,即Hello。60.下列程序段的輸出結(jié)果是{{U}}【10】{{/U}}。intn='c';switch(n++){default:printf("error");break;case'a':case'A':case'b':case'B':printf("good");break;case'c':case'C':printf(”pass");case'd':case'D':printf(”warn");}
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:passwarn)解析:[評析]n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出“pass”;在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結(jié)果是passwarn。61.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請在填空欄內(nèi)寫出定義變量p的語句。voidfun(int*x,int*y){……}main(){inta=10,b=20;{{U}}【11】{{/U}}:p=fun;p(&a,&b);}
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:void(*p)();)解析:[評析]要定義p為指向函數(shù)的指針變量,需寫成void(*p)();,注意*p兩側(cè)的括弧不可以省略,表示p先與*結(jié)合,是指針變量,再與后面的()結(jié)合,表示此指針變量指向函數(shù),這個函數(shù)無返回值(同fun()函數(shù))。62.以下程序的輸出結(jié)果是{{U}}【12】{{/U}}。main(){intp[7]=(11,13,14,15,16,17,18};inti=0,j=0;while(i<7&&p[i]%2==1)j+=p[i++];printf("%d/n",j);}
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:24)解析:[評析]本題程序定義了一維數(shù)組p,有七個數(shù)組元素,整型變量i,j初值分別為0,當(dāng)while的條件表達(dá)式(i<7&&p[i]%2=1)的值為真時,執(zhí)行語句j+=p[i++];,如:當(dāng)i=0時,i<7為真,p[i]%2=11%2=1,表達(dá)式(p[i]%2=1)的值為真,所以接個表達(dá)式(i<7&&p[i]%2=1的值為真,執(zhí)行j=j+p[i++]=0+11=11,i=1;,依此類推可以得出答案24。63.下列程序的輸出結(jié)果是{{U}}【13】{{/U}}。voidfun(int*n){while((*n)--);printf("%d",++(*n));}main(){inta=100;fun(&a);}
(分?jǐn)?shù):2.00)填空項1:__________________
(正確答案:0)解析:[評析]在函數(shù)fun()中,while((*n)-)是先引用*n的值,再做(*n)-運算,所以循環(huán)結(jié)束時*n的值為0,再做(*n)-運算后,*n的值為-1;執(zhí)行++(*n)后,*n的值是0。64.以下程序的輸出結(jié)果是{{U}}【14】{{/U}}。main(){intarr[]={30,25,20,15,10,5},*p=arr;p++;printf("%d/n",*(p+3));}
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 液壓課程設(shè)計20篇
- 梁橋課程設(shè)計
- 環(huán)保過濾材料考核試卷
- 總賬初始設(shè)置課程設(shè)計
- 敏感詞過濾系統(tǒng)課程設(shè)計
- 畜牧業(yè)產(chǎn)業(yè)政策與發(fā)展趨勢考核試卷
- 淀粉產(chǎn)業(yè)的風(fēng)險管理與合規(guī)控制考核試卷
- 石油開采行業(yè)的可持續(xù)發(fā)展考核試卷
- 豬的飼養(yǎng)繁殖效率提高策略考核試卷
- 療養(yǎng)院護(hù)理信息化建設(shè)與應(yīng)用考核試卷
- 四線三格word模板
- 國家各部委專項資金申報種類
- 年會抽獎券可編輯模板
- 靜電場知識點例題結(jié)合
- 中醫(yī)醫(yī)案學(xué)三醫(yī)案的類型讀案方法
- 制造業(yè)信息化管理系統(tǒng)架構(gòu)規(guī)劃
- GB∕T 41170.2-2021 造口輔助器具的皮膚保護(hù)用品 試驗方法 第2部分:耐濕完整性和黏合強度
- 防雷裝置檢測質(zhì)量管理手冊
- 化學(xué)錨栓計算
- 燃?xì)忮仩t房和直燃機(jī)房防爆問題
- 測井曲線及代碼
評論
0/150
提交評論