國家二級C語言機試(選擇題)模擬試卷7(共350題)_第1頁
國家二級C語言機試(選擇題)模擬試卷7(共350題)_第2頁
國家二級C語言機試(選擇題)模擬試卷7(共350題)_第3頁
國家二級C語言機試(選擇題)模擬試卷7(共350題)_第4頁
國家二級C語言機試(選擇題)模擬試卷7(共350題)_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級C語言機試(選擇題)模擬試卷7(共9套)(共350題)國家二級C語言機試(選擇題)模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棧的順序是()。A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA標準答案:B知識點解析:棧是先進后出的原則組織數(shù)據(jù),所以入棧最早的最后出棧,所以選擇B)。2、下列敘述中正確的是()。A、循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)B、在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況C、在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況D、循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定標準答案:D知識點解析:循環(huán)隊列有隊頭和隊尾兩個指針,但是循環(huán)隊列仍是線性結(jié)構(gòu)的,所以A)錯誤;在循環(huán)隊列中只需要隊頭指針與隊尾兩個指針來共同反映隊列中元素的動態(tài)變化情況,所以B)與C)錯誤。3、在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數(shù)是()。A、O(n)B、O(n2)C、(log2n)D、O(nlog2n)標準答案:C知識點解析:當有序線性表為順序存儲時才能用二分法查找。可以證明的是對于長度為n的有序線性表,在最壞情況下,二分法查找只需要比較log2n次,而順序查找需要比較n次。4、下列敘述中正確的是()。A、順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈式存儲結(jié)構(gòu)的存儲空間不一定是連續(xù)的B、順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈式存儲結(jié)構(gòu)只針對非線性結(jié)構(gòu)C、順序存儲結(jié)構(gòu)能存儲有序表,鏈式存儲結(jié)構(gòu)不能存儲有序表D、鏈式存儲結(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間標準答案:A知識點解析:鏈式存儲結(jié)構(gòu)既可以針對線性結(jié)構(gòu)也可以針對非線性結(jié)構(gòu),所以B)與C)錯誤。鏈式存儲結(jié)構(gòu)中每個結(jié)點都由數(shù)據(jù)域與指針域兩部分組成,增加了存儲空間,所以D)錯誤。5、數(shù)據(jù)流圖中帶有箭頭的線段表示的是()。A、控制流B、事件驅(qū)動C、模塊調(diào)用D、數(shù)據(jù)流標準答案:D知識點解析:數(shù)據(jù)流圖中帶箭頭的線段表示的是數(shù)據(jù)流,即沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標注數(shù)據(jù)流名。6、在軟件開發(fā)中,需求分析階段可以使用的工具是()。A、N-S圖B、DFD圖C、PAD圖D、程序流程圖標準答案:B知識點解析:在需求分析階段可以使用的工具有數(shù)據(jù)流圖DFD圖,數(shù)據(jù)字典DD,判定樹與判定表,所以選擇B)。7、在面向?qū)ο蠓椒ㄖ?,不屬?對象"基本特點的是()。A、一致性B、分類性C、多態(tài)性D、標識唯一性標準答案:A知識點解析:對象有如下一些基本特點:標識唯一性、分類性、多態(tài)性、封裝性、模塊獨立性好。所以選擇A)。8、一間宿舍可住多個學(xué)生,則實體宿舍和學(xué)生之間的聯(lián)系是()。A、一對一B、一對多C、多對一D、多對多標準答案:B知識點解析:因為一間宿舍可以住多個學(xué)生即多個學(xué)生住在一個宿舍中,但一個學(xué)生只能住一間宿舍,所以實體宿舍和學(xué)生之間是一對多的關(guān)系。9、在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。A、人工管理階段B、文件系統(tǒng)階段C、數(shù)據(jù)庫系統(tǒng)階段D、三個階段相同標準答案:C知識點解析:數(shù)據(jù)管理發(fā)展至今已經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中最后一個階段結(jié)構(gòu)簡單,使用方便邏輯性強物理性少,在各方面的表現(xiàn)都最好,一直占據(jù)數(shù)據(jù)庫領(lǐng)域的主導(dǎo)地位,所以選擇C)。10、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為。A、笛卡爾積B、交C、并D、自然連接標準答案:D知識點解析:自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉,所以根據(jù)T關(guān)系中的有序組可知R與S進行的是自然連接操作。11、以下不能用于描述算法的是A、文字敘述B、程序語句C、偽代碼和流程圖D、E-R圖標準答案:D知識點解析:算法的描述有偽代碼、流程圖、N-S結(jié)構(gòu)圖等,E-R是實體聯(lián)系模型,所以選擇D。12、以下選項中合法的實型常量是A、0B、3.13e-2.1C、.914D、2.0*10標準答案:C知識點解析:A選項為整型數(shù)據(jù),B選項中e后面必須為整數(shù),D選項是表達式,不是常量,所以選擇C。13、以下敘述中正確的是A、a是實型變量,a=10在C語言中是允許的,因此可以說:實型變量中可以存放整型數(shù)B、在賦值表達式中,賦值號的右邊可以是變量,也可以是任意表達式C、若有inta=4,b=9;執(zhí)行了a=b后,a的值已由原值改變?yōu)閎的值,b的值變?yōu)?D、若有inta=4,b=9;執(zhí)行了a=b;b=a;之后,a的值為9,b的值為4標準答案:B知識點解析:B選項中a是實型變量,a=10在C語言中是允許的,但是實型變量中不可以存放整型數(shù)?C選項中執(zhí)行a=b后,a的值變?yōu)閎的值,為9,b的值不變,仍為9,D選項中執(zhí)行a=b后,a的值為9,b的值為9,執(zhí)行b=a后,a的值為9,b的值也為9,所以選擇B。14、以下選項中合法的變量是A、5aB、_10_C、A%D、sizeof標準答案:B知識點解析:變量的命名要符合標識符的命名規(guī)則,即由下劃線、字母或數(shù)字組成,且必須以下劃線或字母開始,也不能和關(guān)鍵字相同,所以選擇B。15、不能正確表示數(shù)學(xué)式的表達式是A、a/c*bB、a*b/cC、a/b*cD、a*(b/c)標準答案:C知識點解析:/號和*號的優(yōu)先級處于平級,結(jié)合性都是自左至右?所以選擇C,C式子表示的是。16、有以下程序#includemain(){inta=3;printf("%d\n",(a+=a-=a*a));}程序運行后的輸出結(jié)果是A、3B、9C、0D、-12標準答案:D知識點解析:首先計算a*a,結(jié)果為9,然后執(zhí)行a=a-9,即3-9,結(jié)果為-6,然后執(zhí)行a=(-6)+(-6),即a=的值為-12,所以選擇D。17、若變量已正確定義,以下選項中非法的表達式是A、a!=4||’b’B、’a’=1/2*(x=y=20,x*3)C、’a’%4D、’A’+32標準答案:B知識點解析:A選項中’a’即表示a為字符常量,再給’a’賦值1/2*(x=y=20,x*3),是不正確的。因此B選項正確。18、有以下程序#includemain(){intx=35,B;charz=’B’;B=((x)&&(z<’b’));printf("%d\n",B);}程序運行后的輸出結(jié)果是A、1B、0C、35D、66標準答案:A知識點解析:本題重點考察邏輯運算符和關(guān)系運算符的相關(guān)知識,已知變量x為整型變量,并賦值為35,變量z為字符型變量,并賦值為’B’。語句B=((x)&&(z<’b’));中,(x)的值為1,’B’的asscii碼小于’b’的asscii碼,所以(z<’b’)的值也為1,1&&1結(jié)果為1。因此A選項正確。19、與數(shù)學(xué)表達式x≥y≥z對應(yīng)的C語言表達式是A、(x>=y)||(y>=x)B、(x>=y>=z)C、(x>=y)!(y>=z)D、(x>=y)&&(y>=z)標準答案:D知識點解析:本題考察關(guān)系表達式和邏輯表達式,y大于等于x同時y小于等于z,因此x<=y和y<=z是邏輯與的關(guān)系。因此D選項正確。20、有以下程序#includemain(){doublex=2.0,y;if(x<0.0)y=0.0;elseif((x<5.0)&&(!x))y=1.0/(x+2.0);elseif(x<10.0)y=1.0/x;elsey=10.0;printf("%f\n",y);}程序運行后的輸出結(jié)果是A、0.000000B、0.250000C、0.500000D、1.000000標準答案:C知識點解析:本題重點考察if語句,變量x和y均為double類型,由于變量x賦值為2.0,因此執(zhí)行if((x<5.0)&&(!x)),即條件為0,繼續(xù)執(zhí)行if(x<10.0),條件為1,即執(zhí)行y=1.0/x;。依據(jù)printf()函數(shù)輸出類型中f是以小數(shù)形式輸出單、雙精度實數(shù)。因此C選項正確。21、有以下程序#includemain(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}程序運行后的輸出結(jié)果是A、隨機值B、0C、15D、16標準答案:A知識點解析:本題重點考察for語句,變量沒有初始化的情況下,默認值與編譯器有關(guān)系,不同的編譯器有不同的值。因此A選項正確。22、有以下程序#includemain(){inta=3;do{printf("%d,",a-=2);}while(!(--a));printf("\n");}程序運行后的輸出結(jié)果是A、1B、1,-2,C、3,0,D、1,0標準答案:B知識點解析:本題重點考察do……while語句,該循環(huán)語句的特點是,先執(zhí)行循環(huán)中的語句,然后再判斷表達式是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。因此,do-while循環(huán)至少要執(zhí)行一次循環(huán)語句。變量a賦初值為3,每循環(huán)一次需執(zhí)行語句a-=2一次,同時循環(huán)條件使變量a自減1,所以第一次循環(huán)后變量a變?yōu)?,第2次循環(huán)后變量a變?yōu)?2。因此A選項正確。23、有以下程序#includevoidfun(inta,intb,intc){a=b;b=c;c=a;}main(){inta=10,b=20,c=30;fun(a,b,c);printf("%d,%d,%d\n",c,b,a);}程序運行后的輸出結(jié)果是A、10,20,30B、30,20,10C、20,30,10D、0,0,0標準答案:B知識點解析:函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實參中的值不會變化。因此B選項正確。24、有以下程序#includemain(){intc[6]={10,20,30,40,50,60},*p,*s;p=c;s=&c[5];printf("%d\n",s-p);}程序運行后的輸出結(jié)果是A、5B、50C、6D、60標準答案:A知識點解析:首先初始化一維數(shù)組c[6],語句p=c;指將c[0]元素的地址賦給指針變量p;語句s=&c[5];指將c[5]元素的地址賦給指針變量s。程序最后輸出s-p,即結(jié)果為5。因此A選項正確。25、有以下程序#includemain(){inta[3]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)a[j]=a[i]+1;printf("%d\n",a[1]);}程序運行后的輸出結(jié)果是A、0B、2C、1D、3標準答案:D知識點解析:該題首先初始化一維數(shù)組a[3]所有元素都為0;執(zhí)行嵌套循環(huán)for語句,當i=0、j=0時,a[0]=a[0]+1=1;當i=0、j=1時,a[1]=a[0]+1=2;當i=1、j=0時,a[0]=a[1]+1=3;當i=1、j=1時,a[1]=a[1]+1=3;因此D選項正確。26、有以下程序#includemain(){inta[5]={2,4,6,8,10},*p,**k;p=a;k=&p;printf("%d",*(p++));printf("%d\n",**k);}程序運行后的輸出結(jié)果是A、46B、44C、22D、24標準答案:D知識點解析:首先通過p=a使p指向數(shù)組的第1個元素,所以輸出2;在輸出2以后,由于p++,即p就指向數(shù)組的第2個元素,**k就是取出p所指向元素的值,而p指向的是數(shù)組的第2個元素,即輸出4。因此D選項正確。27、有以下程序#includemain(){intaa[3][3]={{2},{4},{6}},i,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}程序運行后的輸出結(jié)果是A、26B、23C、43D、46標準答案:B知識點解析:觀察題目,可以發(fā)現(xiàn),*p=&aa[0][0]語句實際是將數(shù)組aa的首地址賦給了指針變量p,將i的值帶入for循環(huán)中,i=0時,aa[0][1]=3,*p=2;*p輸出的是指針所指向的數(shù)組值,此時p所指向的是aa[0][0],輸出2,而i=1時執(zhí)行了++p操作使指針向后移動指向了aa[0][1],所以在輸出*p時應(yīng)為3。因此B選項正確。28、以下fun函數(shù)返回數(shù)組中最大值的下標#includeintfun(int*s,intn){inti,k;for(i=0,k=i;iA、++kB、i=kC、k++D、k=i標準答案:D知識點解析:fun函數(shù)的功能是返回數(shù)組中最大值的下標。通過for循環(huán)語句,每次將最大的數(shù)給k,即k=i。因此D選項正確。29、有以下程序#includeintfun(chars[]){char*p=s;while(*p!=0)p++;return(p-s);}main(){printf("%d\n",fun("0ABCDEF"));}程序運行后的輸出結(jié)果是A、1B、6C、7D、0標準答案:C知識點解析:本題考查字符串作為函數(shù)參數(shù)以及while語句,本題中傳入字符串OABCDEF,然后執(zhí)行fun后,就得到了該字符串中字符的個數(shù),不包括結(jié)尾符,該字符串有7個字符,所以答案為C。30、若有以下程序段charstr[4][12]={"aa","bbb","ccccc","d"},*strp[4];inti;for(i=0;i<4;i++)strp[i]=str[i];不能正確引用字符串的選項是A、str[0]B、strpC、strp[3]D、*strp標準答案:B知識點解析:本題考查字符串指針作為函數(shù)參數(shù),本題中p作為字符串指針傳入fun中,p指向的內(nèi)容并沒有發(fā)生變化,所以選項B正確。31、有以下程序#include#includevoidfun(char*s){chara[10];strcpy(a,"STRING");s=a;}main(){char*p="PROGRAM";fun(p);printf("%s\n",p);}程序運行后的輸出結(jié)果是(此處□代表空格)A、STRINGB、STRING□□□□C、STRING□□□D、PROGRAM標準答案:D知識點解析:本題考查字符串指針作為函數(shù)參數(shù),本題中p作為字符串指針傳入fun中,p指向的內(nèi)容并沒有發(fā)生變化,所以選項D正確。32、有以下程序#includevoidfun(intn,int*s){intf;if(n==1)*s=n+1;else{fun(n-1,&f);*s=f;}}main(){intx=0;fun(4,&x);printf("%d\n",x);}程序運行后的輸出結(jié)果是A、3B、1C、2D、4標準答案:C知識點解析:本題考查函數(shù)的遞歸調(diào)用,將函數(shù)參數(shù)帶入函數(shù)中,一步步遞歸即可得到結(jié)果,結(jié)果為2,選項C正確。33、有以下程序#includemain(){charc[2][5]={"6938","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=c[i];for(i=0;i<2;i++)for(j=0;p[i][j]>0;j+=2)s=10*s+p[i][j]-’0’;printf("%d\n",s);}程序運行后的輸出結(jié)果是A、9284B、9824C、6982D、6385標準答案:D知識點解析:本題中首先是將二維字符數(shù)組c賦值指針數(shù)組p,然后遍歷p找到兩個字符串中的偶數(shù)位置的字符并組成一個數(shù)值輸出,根據(jù)代碼執(zhí)行即可得到結(jié)果為6385。34、有以下程序#includevoidfun(int*s){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){inti,a[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=1;i<5;i++)printf("%d",a[i]);printf("\n");}程序運行后的輸出結(jié)果是A、34756B、5745C、5795D、35745標準答案:B知識點解析:本題主要考查do…while語句,執(zhí)行fun函數(shù)后,a數(shù)組里面的元素變?yōu)?5745,輸出后四個字符,所以結(jié)果為5745,選項B正確。35、若要求使p指向一個int35.有以下程序段int*p;p=_______malloc(sizeof(int));若要求使p指向一個int型的動態(tài)存儲單元,在橫線處應(yīng)填入的是A、(int*)B、intC、int*D、(*int)標準答案:A知識點解析:本題考查malloc函數(shù),題目中要求p指向一個int型的動態(tài)存儲單元,那么就應(yīng)該將分配的存儲單元轉(zhuǎn)化為int,所以選項A正確。36、有以下程序#include#defineSUB(X,Y)(X+1)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}程序運行后的輸出結(jié)果是A、25B、20C、12D、16標準答案:D知識點解析:本題考查宏定義,宏定義只是做個簡單的替換,執(zhí)行SUB(a++,b++)=(a+++1)*b++=16,選項D正確。37、有以下程序#includemain(){charc[2][5]={"6938","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=c[i];for(i=0;i<2;i++)for(j=0;p[i][j]>0;j+=2)s=10*s+p[i][j]-’0’;printf("%d\n",s);}程序運行后的輸出結(jié)果是A、6938B、9824C、4528D、6385標準答案:D知識點解析:本題中首先是將二維字符數(shù)組c賦值指針數(shù)組p,然后遍歷p找到兩個字符串中的偶數(shù)位置的字符并組成一個數(shù)值輸出,根據(jù)代碼執(zhí)行即可得到結(jié)果為6385。38、若有以下程序段structst{intn;structst*next;};structsta[3]={5,&a[1],7,&a[2],9,’\0’},*p;p=&a[0];則以下選項中值為6的表達式是A、p->nB、(*p).nC、p->n++D、++(p->n)標準答案:D知識點解析:本題考查結(jié)構(gòu)體變量的引用,其中a為定義的結(jié)構(gòu)體數(shù)組,D選項中p->n為5,++(p->n)為6,所以D選項正確。39、有以下程序#includemain(){inti=1;i=i^i;printf("%d\n",i);}程序運行后的輸出結(jié)果是A、1B、-1C、0D、7標準答案:C知識點解析:本題考查位運算中按位異或運算符,異或運算只有在兩個比較的位不同時其結(jié)果是1,否則結(jié)果為0,i^i運算符兩邊相同,所以結(jié)果為0,選項C正確。40、以下程序用來統(tǒng)計文件中字符的個數(shù)(函數(shù)feof用以檢查文件是否結(jié)束,結(jié)束時返回非零)#includemain(){FILE*fp;longnum=0;fp=fopen("fname.dat","r");while(_______){fgetc(fp);num++;}printf("num=%d\n",num);fclose(fp);}下面選項中,填入橫線處不能得到正確結(jié)果的是A、feof(fp)==NULLB、!feof(fp)C、feof(fp)D、feof(fp)==0標準答案:C知識點解析:本題考查文件的定位,feof函數(shù)的用法是從輸入流讀取數(shù)據(jù),如果到達文件末尾(遇文件結(jié)束符),eof函數(shù)值為非零值,否則為0,while判斷條件應(yīng)是如果沒有到達文件末尾,所以選項C不能得到正確的結(jié)果。國家二級C語言機試(選擇題)模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、對長度為n的線性表作快速排序,在最壞情況下,比較次數(shù)為A、nB、n-1C、n(n-1)D、n(n-1)/2標準答案:D知識點解析:快速排序最壞情況就是每次選的基準數(shù)都和其他數(shù)做過比較,共需比較(n-1)+(n-2)+…+1=n(n-1)/2,選D。2、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)A、3B、6C、8D、12標準答案:D知識點解析:二叉樹中,度為0的節(jié)點數(shù)等于度為2的節(jié)點數(shù)加1,即n2=n0-1,葉子節(jié)點即度為0,n0=1,則n2=0,總節(jié)點數(shù)為12=n0+n1+n2=1+n1+0,則度為1的節(jié)點數(shù)n1=11,故深度為12,選D。3、下列敘述中正確的是A、線性表鏈式存儲結(jié)構(gòu)的存儲空間一般要少于順序存儲結(jié)構(gòu)B、線性表鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)的存儲空間都是連續(xù)的C、線性表鏈式存儲結(jié)構(gòu)的存儲空間可以是連續(xù)的,也可以是不連續(xù)的D、以上說法均錯誤標準答案:C知識點解析:線性表的順序存儲結(jié)構(gòu)具備如下兩個基本特征:(1)線性表中的所有元素所占的存儲空間是連續(xù)的;(2)線性表中各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。用一組任意的存儲單元來依次存放線性表的結(jié)點,這組存儲單元既可以是連續(xù)的,也可以是不連續(xù)的,甚至是零散分布在內(nèi)存中的任意位置上的。因此C正確。4、下列敘述中正確的是A、算法的效率只與問題的規(guī)模有關(guān),而與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)B、算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量C、數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)是一一對應(yīng)的D、算法的時間復(fù)雜度與空間復(fù)雜度一定相關(guān)標準答案:B知識點解析:算法的效率與問題的規(guī)模和數(shù)據(jù)的存儲結(jié)構(gòu)都有關(guān),A錯誤。算法的時間復(fù)雜度,是指執(zhí)行算法所需要的計算工作量,B正確。由于數(shù)據(jù)元素在計算機存儲空間中的位置關(guān)系可能與邏輯關(guān)系不同,因此數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)不是一一對應(yīng)的,C錯誤。算法的時間復(fù)雜度和空間復(fù)雜度沒有直接的聯(lián)系,D錯誤。5、結(jié)構(gòu)化程序設(shè)計中,下面對goto語句使用描述正確的是A、禁止使用goto語句B、使用goto語句程序效率高C、應(yīng)避免濫用goto語句D、以上說法均錯誤標準答案:C知識點解析:結(jié)構(gòu)化程序設(shè)計中,要注意盡量避免goto語句的使用,故選C。6、下面不屬于軟件測試實施步驟的是A、集成測試B、回歸測試C、確認測試D、單元測試標準答案:B知識點解析:軟件測試主要包括單元測試、集成測試、確認測試和系統(tǒng)測試。7、下面不屬于軟件需求分析階段主要工作的是A、需求變更申請B、需求分析C、需求評審D、需求獲取標準答案:A知識點解析:需求分析階段的工作可概括為4個方面:①需求獲取。②需求分析。③編寫需求規(guī)格說明書。④需求審評。8、一般情況下,當對關(guān)系R和S進行自然連接時,要求R和S含有一個或者多個共有的A、記錄B、行C、屬性D、元組標準答案:C知識點解析:自然連接是一種特殊的等值連接,它滿足下面的條件:①兩關(guān)系間有公共域;②通過公共域的等值進行連接,選C。9、以下敘述中錯誤的是A、數(shù)值型常量有正值和負值的區(qū)分B、常量可以用一個符號名來代表C、定義符號常量必須用類型名來設(shè)定常量的類型D、常量是在程序運行過程中值不能被改變的量標準答案:C知識點解析:數(shù)值型常量有整型常量,實型常量,不論是整型常量還是實型常量都有正值和負值之分,所以A正確。在C語言的預(yù)編譯處理中,可以用符號名代表一個常量,定義時不必指定常量類型,所以C錯誤,B正確。常量的定義就是常量是在程序運行過程中值不能被改變的量,所以D正確。10、C語言主要是借助以下哪種手段來實現(xiàn)程序模塊化A、定義函數(shù)B、定義常量和外部變量C、使用豐富的數(shù)據(jù)類型D、使用三種基本結(jié)構(gòu)語句標準答案:A知識點解析:C語言程序的模塊化通過函數(shù)來體現(xiàn),所以選擇A。11、以下選項中合法的常量是A、999B、2.7eC、0XabD、123E0.2標準答案:C知識點解析:A選項中含有非法的空格,所以錯誤。C語言中十六進制常量以0x開頭,所以C正確。實型常量中e的前后必須均有數(shù)據(jù),且其后必須為整數(shù),所以B和D錯誤。12、C語言中的標識符分為關(guān)鍵字、預(yù)定義標識符和用戶標識符,以下敘述正確的是A、關(guān)鍵字可用作用戶標識符,但失去原有含義B、預(yù)定義標識符可用作用戶標識符,但失去原有含義C、在標識符中大寫字母和小寫字母被認為是相同的字符D、用戶標識符可以由字母和數(shù)字任意順序組成標準答案:B知識點解析:關(guān)鍵字不可用作C語言的標識符,所以A錯誤。在標識符中大寫字母與小寫字母作為不同字符處理,所以C錯誤。標識符由下劃線、字母、數(shù)字組成,且必須以下劃線和字母開始,所以D錯誤。13、以下敘述中正確的是A、每個后綴為.C的C語言源程序都可以單獨進行編譯B、每個后綴為.C的C語言源程序都應(yīng)該包含一個main函數(shù)C、在C語言程序中,main函數(shù)必須放在其他函數(shù)的最前面D、在C語言程序中,只有main函數(shù)才可單獨進行編譯標準答案:A知識點解析:一個普通的C函數(shù)可以單獨作為一個C的程序文件存在被包含到其他程序中,每個后綴為.C的C語言源程序都可以單獨進行編譯,所以B、D錯誤。main函數(shù)可以放在程序的開始,中間,最后,所以C錯誤。14、有表示公司和職員及工作的三張表,職員可在多家公司兼職。其中公司C(公司號,公司名,地址,注冊資本,法人代表,員工數(shù)),職員S(職員號,姓名,性別,年齡,學(xué)歷),工作W(公司號,職員號,工資),則表W的鍵(碼)為A、公司號,職員號B、職員號,工資C、職員號D、公司號,職員號,工資標準答案:A知識點解析:由于職員可以再多加公司兼職,表W的鍵(碼)應(yīng)為公司關(guān)系和職員關(guān)系的主碼,即公司號和職員號。15、若有定義和語句:inta,b;scanf("%d,%d,",&a,&b);以下選項中的輸入數(shù)據(jù),不能把值3賦給變量a、5賦給變量b的是A、3,5,4B、3,5C、3,5,D、3,5標準答案:D知識點解析:scanf()的格式控制串可以使用其他非空白字符,如本題中的逗號,但在輸入時必須輸入這些字符,以保證匹配。所以在3和5之間必須輸入逗號,不能有其他符號,才能保證a和b的正確賦值。所以選擇D。16、C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為A、1B、2C、3D、4標準答案:A知識點解析:每個字符變量被分配一個字節(jié)的內(nèi)存空間。因此A選項正確。17、以下敘述中正確的是A、程序必須包含所有三種基本結(jié)構(gòu)才能成為一種算法B、我們所寫的每條C語句,經(jīng)過編譯最終都將轉(zhuǎn)換成二進制的機器指令C、如果算法非常復(fù)雜,則需要使用三種基本結(jié)構(gòu)之外的語句結(jié)構(gòu),才能準確表達D、只有簡單算法才能在有限的操作步驟之后結(jié)束標準答案:B知識點解析:C語言程序可以不包含三種基本結(jié)構(gòu),也可以包含其中的一種或多種,所以A錯誤。三種基本結(jié)構(gòu)可以表示任何復(fù)雜的算法,所以C錯誤。正確的算法,不管是簡單算法還是復(fù)雜算法都可以在有限的操作步驟之后結(jié)束,這是算法的有窮性,所以D錯誤。18、下列關(guān)系表達式中,結(jié)果為"假"的是A、3<=4B、(3<4)==1C、(3+4)>6D、(3!=4)>2標準答案:D知識點解析:B選項中,關(guān)系表達式(3<4)==1即1==1,結(jié)果為真;C選項中,(3+4)>6即7>6,結(jié)果為真;A選項中,3<=4結(jié)果為真。D選項中,(3!=4)>2即1>2,結(jié)果為假。因此D選項正確。19、若以下選項中的變量a,b,y均已正確定義并賦值,則語法正確的switch語句是A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}B、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}C、switch(a+9){casea:y=a-b;caseb:y=a+b;}D、switcha*b{case10:y=a+b;default:y=a-b;}標準答案:A知識點解析:switch語句,其一般形式為:switch(表達式){case常量表達式1:語句1;case常量表達式2:語句2;…case常量表達式n:語句n;default:語句n+1;}B選項中,case1和case2有錯誤,;C選項中,casea和caseb不正確,case后面應(yīng)該跟常量表達式;D選項中,switcha*b,有誤。因此A選項正確。20、有以下程序#includemain(){inta=-2,b=0;while(a++&&++b);printf("%d,%d\n",a,b);}程序運行后輸出結(jié)果是A、0,2B、0,3C、1,3D、1,2標準答案:D知識點解析:本題重點考察while語句,變量a和b分別賦初值為-2和1,while語句的語義是:計算表達式的值,當值為真(非0)時,執(zhí)行循環(huán)體語句。a++即a參與運算后,a的值再自增1。++b即b自增1后再參與其它運算。當表達式的值為0時,退出循環(huán),最后輸出a和b的值為1和2。因此D選項正確。21、設(shè)有定義:intx=0,*p;緊接著的賦值語句正確的是A、*p=NULL;B、p=NULL;C、p=x;D、*p=x;標準答案:B知識點解析:題目中定義指針變量p,指針變量的賦值只能賦予地址,決不能賦予任何其它數(shù)據(jù),否則將引起錯誤。不允許把一個數(shù)賦予指針變量,被賦值的指針變量前不能再加"*"說明符,因此B選項正確。22、下列敘述中正確的是A、空字符串不占用內(nèi)存,其內(nèi)存空間大小是0B、兩個連續(xù)的單引號(’’)是合法的字符常量C、可以對字符串進行關(guān)系運算D、兩個連續(xù)的雙引號("")是合法的字符串常量標準答案:D知識點解析:字符串常量是由一對雙引號括起的字符序列。A選項描述不正確。B選項描述的不夠完善;字符常量占一個字節(jié)的內(nèi)存空間。D選項正確;字符常量是用單引號括起來的一個字符。C語言字符串比較不能直接用關(guān)系運算符進行正確比較??梢杂米址容^函數(shù)strcmp來實現(xiàn),C選項是錯誤的;字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。因此D選項正確。23、有以下程序#includemain(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+32):a;printf("%c\n",a);}程序運行后的輸出結(jié)果是A、HB、hC、AD、a標準答案:B知識點解析:條件運算符構(gòu)成的選擇結(jié)構(gòu)的一般形式為:表達式1?表達式2:表達式3。其求值規(guī)則為:如果表達式1的值為真,則以表達式2的值作為條件表達式的值,否則以表達式2的值作為整個條件表達式的值。該題目中首先給字符變量a賦值為’H’。語句a=(a>=’A’&&a<=’Z’)?(a+32):a;即將大寫字母變?yōu)樾懽帜浮R虼薆選項正確。24、有以下程序#includeintf(intx);main(){inta,b=0;for(a=0;a<3;a+=1){b+=f(a);putchar(’A’+b);}}intf(intx){returnx*x+1;}程序運行后輸出結(jié)果是A、ABEB、BCDC、BDID、BCF標準答案:C知識點解析:在函數(shù)main()中,第一次執(zhí)行for循環(huán)時,b的值等于1,此時輸出字母B;第二次執(zhí)行for循環(huán)時,b的值等于3,此時輸出字母D;第三次執(zhí)行for循環(huán)時,b的值等于8,此時輸出字母I。因此C選項正確25、設(shè)有定義:intx[2][3];則以下關(guān)于二維數(shù)組x的敘述錯誤的是A、元素x[0]可看作是由3個整型元素組成的一維數(shù)組B、數(shù)組x可以看作是由x[0]和x[1]兩個元素組成的一維數(shù)組C、可以用x[0]=0;的形式為數(shù)組所有元素賦初值0D、x[0]和x[1]是數(shù)組名,分別代表一個地址常量標準答案:C知識點解析:x[0]可看作是由3個整型元素組成的一維數(shù)組,不可以用語句x[0]=0;為數(shù)組所有元素賦初值0。因此C選項正確。26、設(shè)p是指針變量,語句p=NULL;等價于A、p=’0’;B、p=’’;C、p="";D、p=0;標準答案:D知識點解析:p=NULL;等價p=0;因此D選項正確。27、有以下程序#includemain(){inta[]={10,20,30,40},*p=a,i;for(i=0;i<=3;i++){a[i]=*p;p++;}printf("%d\n",a[2]);}程序運行后的輸出結(jié)果是A、10B、20C、30D、40標準答案:C知識點解析:因為指針變量p的初始值指向數(shù)組a,所以執(zhí)行for循環(huán)語句后,數(shù)組a中的元素的值不變。因此C選項正確。28、有以下程序#include#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;i<N;i++){b[i]=a[i][0];for(j=1;j<N;j++)if(b[i]<a[i][j])b[i]=a[i][j];}}main(){intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);for(i=0;i<N;i++)printf("%d,",y[i]);printf("\n");}程序運行后的輸出結(jié)果是A、3,5,7B、1,3,5,C、2,4,8,D、3,6,9,標準答案:D知識點解析:函數(shù)fun()的作用是求出二維數(shù)組a[][N]中每一行中的最大元素,所以在main()函數(shù)中執(zhí)行完fun(x,y)后,數(shù)組y中的元素為二維數(shù)組x[N][N]每一行的最大元素。因此D選項正確。29、有以下程序(strcpy為字符串復(fù)制函數(shù),strcat為字符串連接函數(shù))#include#includemain(){chara[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);puts(strcat(a,c+1));}程序運行后的輸出結(jié)果是A、a12xyzB、bc2yzC、a2yzD、12yz標準答案:C知識點解析:本題考查字符串處理函數(shù)strcpy和strcat,執(zhí)行完strcpy(a+1,b+2);后,a變?yōu)閍2,執(zhí)行完strcat(a,c+1)后,a變?yōu)閍2yz,所以答案為C選項。30、以下選項中,沒有編譯錯誤的是A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’};B、charstr1[5]="pass",str2[6];str2=str1;C、charname[10];name="china";D、charstr4[];str4="helloworld";標準答案:A知識點解析:B選項中,不能直接將字符數(shù)組名直接賦值給另一個字符數(shù)組名。C選項賦值錯誤,不能將一個字符串常量賦值給一個字符指針。D選項定義str4時需要定義其長度。31、有以下程序#includemain(){char*s="12134";intk=0,a=0;while(s[k+1]){k++;if(k%2==0){a=a+(s[k]-’0’+1);continue;}a=a+(s[k]-’0’);}printf("k=%da=%d\n",k,a);}程序運行后的輸出結(jié)果是A、k=5a=15B、k=4a=12C、k=6a=11D、k=3a=14標準答案:B知識點解析:當k=0時,執(zhí)行while一次,得到k=1,a為2;當k=1時,執(zhí)行while一次,得到k=2,a為4;當k=2時,執(zhí)行while一次,得到k=3,a為7;當k=3時,執(zhí)行while一次,得到k=4,a為12;所以答案為B選項。32、有以下程序#includemain(){chara[5][10]={"one","two","three","four","five"};inti,j;chart;for(i=0;i<2;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0]){t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}程序運行后的輸出結(jié)果是A、owoB、fwoC、twoD、fix標準答案:B知識點解析:考查二維數(shù)組元素的引用。當i為0時,代碼處理結(jié)果為第一個字符串的第一個字符與第四個字符串的第一個字符調(diào)換,當i為1時,代碼處理結(jié)果為第而個字符串的第一個字符與第五個字符串的第一個字符調(diào)換,所以a[1]為fwo。33、有以下程序#includeinta=1,b=2;voidfun1(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){fun1(5,6);fun2();printf("%d%d\n",a,b);}程序運行后的輸出結(jié)果是A、5612B、3456C、1256D、5634標準答案:D知識點解析:fun1函數(shù)中的a、b為局部變量,fun2函數(shù)中的a、b為全局變量。執(zhí)行fun1函數(shù)后輸出5,6執(zhí)行完fun2后a變?yōu)?,b變?yōu)?,所以結(jié)果為3,4D選項正確。34、有以下程序#includevoidfunc(intn){staticintnum=1;num+=n;printf("%d",num);}main(){func(3);func(4);printf("\n");}程序運行后的輸出是A、45B、48C、35D、34標準答案:B知識點解析:本題中num為靜態(tài)局部變量,執(zhí)行fun(3)后,輸出4,執(zhí)行fun(4)后輸出8,所以選項B正確。35、有以下程序#include#includevoidfun(int*p1,int*p2,int*s){s=(int*)calloc(1,sizeof(int));*s=*p1+*p2;free(s);}main(){inta[2]={1,2},b[2]={40,50},*q=a;fun(a,b,q);printf("%d\n",*q);}程序運行后的輸出結(jié)果是A、42B、41C、1D、0標準答案:C知識點解析:本題考查把數(shù)組名作為函數(shù)參數(shù),執(zhí)行fun函數(shù)后,s的值并沒有發(fā)生變化,仍然是指向a,所以輸出結(jié)果為1,選項C正確。36、有以下程序#includestructSTU{charname[9];charsex;intscore[2];};voidf(structSTUa[]){structSTUb={"Zhao",’m’,85,90};a[1]=b;}main(){structSTUc[2]={{"Qian",’f’,95,92},{"Sun",’m’,98,99}};f(c);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);printf("%s,%c,%d,%d\n",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]);}程序運行后輸出結(jié)果是A、Qian,f,95,92,Sun,m,98,99B、Qian,f,95,92,Zhao,m,85,90C、Zhao,m,85,90,Sun,m,98,99D、Zhao,m,85,90,Qian,f,95,92標準答案:B知識點解析:本題考查把數(shù)組名作為函數(shù)參數(shù),執(zhí)行f函數(shù)后,結(jié)構(gòu)體數(shù)組c的第二個元素被改寫,c[1].name為Zhao,選項B正確。37、以下敘述中錯誤的是A、用typedef可以說明一種新的類型名B、typedef的作用是用一個新的標識符來代表已存在的類型名C、可以用typedef說明的新類型名來定義變量D、typedef說明的新類型名必須使用大寫字母,否則會出編譯錯誤標準答案:D知識點解析:本題考查typedef的使用方法,typedef對已存在的類型使用一個新的名字,新類型可以使用小寫,所以D選項錯誤。38、以下敘述中錯誤的是A、只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值B、函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型C、可以通過指針變量來訪問結(jié)構(gòu)體變量的任何成員D、函數(shù)可以返回指向結(jié)構(gòu)體變量的指針標準答案:B知識點解析:本題考查結(jié)構(gòu)體相關(guān)知識,函數(shù)返回值可以是結(jié)構(gòu)體,所以B選項錯誤。39、若有定義語句intb=2;則表達式(b<<2)/(3||b)的值是A、0B、2C、4D、8標準答案:D知識點解析:本題考查位運算<<、/,以及邏輯運算符||。b<<2為8,33||b為1,所以結(jié)果為8,所以D選項正確。40、有以下程序#includemain(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);rewind(fp);for(i=0;i<6;i++)fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++)printf("%d,",a[i]);}程序運行后輸出結(jié)果是A、1,2,3,4,5,6,B、6,5,4,3,2,1,C、4,5,6,1,2,3,D、1,2,3,3,2,1,標準答案:B知識點解析:本題考查文件操作函數(shù),fprintf和rewind函數(shù),rewind函數(shù)將文件內(nèi)部的位置指針重新指向一個流(數(shù)據(jù)流/文件)的開頭,程序首先是將數(shù)組a的六個數(shù)寫入d2文件中,然后又將a數(shù)組從后往前覆蓋到d2中的內(nèi)容,所以結(jié)果為6,5,4,3,2,1,選項B正確。國家二級C語言機試(選擇題)模擬試卷第3套一、選擇題(本題共39題,每題1.0分,共39分。)1、下列關(guān)于棧和隊列的描述中,正確的是()。A、棧是先進先出B、隊列是先進后出C、隊列允許在隊頭刪除元素D、棧在棧頂刪除元素標準答案:D知識點解析:棧實際也是線性表,只不過是一種特殊的線性表。棧是只能在表的一端進行插入和刪除運算的線性表,通常稱插入、刪除的這一端為棧頂,另一端為棧底。隊列是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭,允許插入的一端叫做隊尾。2、已知二叉樹后序遍歷序列是CDABE,中序遍歷序列是CADEB,它的前序遍歷序列是()。A、ABCDEB、ECABDC、EACDBD、CDEAB標準答案:C知識點解析:由于后序遍歷的最后一個元素為E,所以E為根結(jié)點,所以它的前序遍歷的首個元素為E,故排除A和D選項。由于中序遍歷中,元素B在元素根結(jié)點E的后面,所以B為二叉樹的右子樹,并且該二叉樹右子樹只有一個元素,所以前序遍歷的最后一個元素應(yīng)為B,故選項C為正確選項,即該二叉樹的前序遍歷序列是EACDB。3、在數(shù)據(jù)流圖中,帶有箭頭的線段表示的是()。A、控制流B、數(shù)據(jù)流C、模塊調(diào)用D、事件驅(qū)動標準答案:B知識點解析:數(shù)據(jù)流圖中帶箭頭的線段表示數(shù)據(jù)流,沿箭頭方向傳遞數(shù)據(jù)的通道,一般在旁邊標注數(shù)據(jù)流名。4、結(jié)構(gòu)化程序設(shè)計的3種結(jié)構(gòu)是()。A、順序結(jié)構(gòu),分支結(jié)構(gòu),跳轉(zhuǎn)結(jié)構(gòu)B、順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)C、分支結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)D、分支結(jié)構(gòu),跳轉(zhuǎn)結(jié)構(gòu),循環(huán)結(jié)構(gòu)標準答案:B知識點解析:程序設(shè)計語言僅僅使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)就足以表達出各種其他形式結(jié)構(gòu)的程序設(shè)計方法。遵循程序結(jié)構(gòu)化的設(shè)計原則,按結(jié)構(gòu)化程序設(shè)計方法設(shè)計出的程序易于理解、使用和維護;可以提高編程工作的效率,降低軟件的開發(fā)成本。5、下列方法中,不屬于軟件調(diào)試方法的是()。A、回溯法B、強行排錯法C、集成測試法D、原因排除法標準答案:C知識點解析:軟件調(diào)試主要采用以下三種方法:強行排錯法:作為傳統(tǒng)的調(diào)試方法,其過程可概括為設(shè)置斷點、程序暫停、觀察程序狀態(tài)、繼續(xù)運行程序。回溯法:該方法適合于小規(guī)模程序的排錯、即一旦發(fā)現(xiàn)了錯誤,先分析錯誤征兆,確定最先發(fā)現(xiàn)“癥狀”的位置。原因排除法:原因排除法是通過演繹和歸納,以及二分法來實現(xiàn)。6、下列選項中,不屬于模塊間耦合的是()。A、內(nèi)容耦合B、異構(gòu)耦合C、控制耦合D、數(shù)據(jù)耦合標準答案:B知識點解析:耦合可以分為下列幾種,它們之間的耦合度由高到低排列:內(nèi)容耦合一一若一個模塊直接訪問另一模塊的內(nèi)容,則這兩個模塊稱為內(nèi)容耦合。公共耦合一一若一組模塊都訪問同一全局數(shù)據(jù)結(jié)構(gòu),則稱為公共耦合。外部耦合一一若一組模塊都訪問同一全局數(shù)據(jù)項,則稱為外部耦合。控制耦合——若一模塊明顯地把開關(guān)量、名字等信息送入另一模塊,控制另一模塊的功能,則稱為控制耦合。標記耦合一一若兩個以上的模塊都需要其余某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)時,不使用其余全局變量的方式而全使用記錄傳遞的方式,這樣的耦合稱為標記耦合。數(shù)據(jù)耦合——若一個模塊訪問另一個模塊,被訪問模塊的輸入和輸出都是數(shù)據(jù)項參數(shù),則這兩個模塊為數(shù)據(jù)耦合。非直接耦合——若兩個模塊沒有直接關(guān)系,它們之間的聯(lián)系完全是通過程序的控制和調(diào)用來實現(xiàn)的,則稱這兩個模塊為非直接耦合,這樣的耦合獨立性最強。7、下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。A、多態(tài)性B、標識惟一性C、封裝性D、耦合性標準答案:D知識點解析:面向?qū)ο笤O(shè)計方法與面向過程設(shè)計方法有本質(zhì)的不同,其基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。其特點包括:標識惟一性、多態(tài)性、封裝性、模塊獨立性、繼承和多態(tài)性好。8、在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。A、需求分析階段B、概念設(shè)計階段C、邏輯設(shè)計階段D、物理設(shè)計階段標準答案:C知識點解析:邏輯結(jié)構(gòu)設(shè)計的任務(wù):概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ),為了能夠用某一DBMS實現(xiàn)用戶需求,還必須將概念結(jié)構(gòu)進一步轉(zhuǎn)化為相應(yīng)的數(shù)據(jù)模型,這正是數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計所要完成的任務(wù)。它包括從E-R圖向關(guān)系模式轉(zhuǎn)換和邏輯模式規(guī)范化及調(diào)整、實現(xiàn)。9、在一棵二叉樹上,第5層的結(jié)點數(shù)最多是()。A、8B、9C、15D、16標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì):二叉樹第i(i≥1)層上至多有2i-1個結(jié)點。得到第5層的結(jié)點數(shù)最多是16個。10、下列有關(guān)數(shù)據(jù)庫的描述,正確的是()。A、數(shù)據(jù)庫設(shè)計是指設(shè)計數(shù)據(jù)庫管理系統(tǒng)B、數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)共享的問題C、數(shù)據(jù)庫是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持D、數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致標準答案:B知識點解析:數(shù)據(jù)庫設(shè)計的目的實質(zhì)上是設(shè)計出滿足實際應(yīng)用需求的實際關(guān)系模型。數(shù)據(jù)庫技術(shù)的主要目的是有效地管理和存取大量的數(shù)據(jù)資源,包括:提高數(shù)據(jù)的共享性,使多個用戶能夠同時訪問數(shù)據(jù)庫中的數(shù)據(jù);減小數(shù)據(jù)的冗余,以提高數(shù)據(jù)的一致性和完整性;提供數(shù)據(jù)與應(yīng)用程序的獨立性,從而減少應(yīng)用程序的開發(fā)和維護代價。11、以下關(guān)于C語言的敘述中正確的是()。A、預(yù)處理命令通常位于函數(shù)體外面,但也可以位于函數(shù)體中間B、C語言中的變量定義須在其他語句之前C、在C語言程序的書寫中,一個語句必須單占一行D、一個C語言源程序可以由一個或多個源文件組成,每個源文件可由自己的main函數(shù)標準答案:A知識點解析:源程序中可以有預(yù)處理命令(include命令僅為其中的一種)。C語言中的變量可以在使用之前的任何位置進行定義。C語言程序的書寫中,多個語句可以位于一行,但為了增強可讀性,一般每行只有一條語句。一個C語言源程序可以由一個或多個源文件組成,但僅可以有一個main函數(shù)。12、下列敘述中錯誤的是()。A、用戶所定義的標識符允許使用關(guān)鍵字B、用戶所定義的標識符應(yīng)盡量做到“見名知意”C、用戶所定義的標識符必須以字母或下劃線開頭D、用戶定義的標識符中,大、小寫字母代表不同標識標準答案:A知識點解析:在C語言中,合法標識符的命名規(guī)則是:標識符可以由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或下劃線,凡是要求標識符的地方都必須按此規(guī)則命名。在C語言的標識符中,大寫字母和小寫字母被認為是兩個不同的字符。在選擇標識符時,應(yīng)注意做到“見名知義”,即選擇具有一定含義的英文單詞或漢語拼音作為標識符,以增加程序的可讀性。13、下列選項中可作為C語言合法常量的是()。A、-80B、-080C、-8e1.0D、-80.0e標準答案:A知識點解析:所謂常量是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。選項B中是以0開頭,表示一個八進制數(shù),而八進制數(shù)的取值范圍是0~7,所以“-080”錯誤;在C語言中e后面的指數(shù)必須是整數(shù),因此選項C和D也不正確。14、下列定義變量的語句中錯誤的是()。A、int_int;B、doubleint_;C、charFor;D、floatUS$;標準答案:D知識點解析:C語言規(guī)定,變量的標識符只能由字母、數(shù)字和下劃線3種字符組成,且首字符必須為字母或下劃線。在C語言中大寫字母和小寫字母被認為是兩個不同的字符。選項A定義的變量標識符_int和選項B定義的變量標識符_int與C語言的關(guān)鍵字int是不同的,是正確的變量標識。選項C定義的變量標識符For與C語言中的關(guān)鍵字for是兩個不同的標識符,所以選項C是正確的,而選項D包含有特殊字符$,因而其不符合C語言的變量命名規(guī)定。15、下列關(guān)于函數(shù)的敘述中正確的是()。A、每個函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))B、每個函數(shù)都可以被單獨編譯C、每個函數(shù)都可以單獨運行D、在一個函數(shù)內(nèi)部可以定義另一個函數(shù)標準答案:B知識點解析:在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main()函數(shù)不能被調(diào)用,選項A錯誤;C程序從main()函數(shù)開始執(zhí)行,當main()函數(shù)執(zhí)行完畢時,整個程序就結(jié)束了。C程序的執(zhí)行必須從main()函數(shù)開始,選項C選項錯誤;函數(shù)不能嵌套定義,選項D錯誤。16、當a=1、b=2、c=3、d=4時,執(zhí)行下面程序段后,x的值是()。if(a<b)if(c<d)x=1;elseif(a<c)if(b<d))x=2;elsex=3;elsex=6;elsex=7;A、1B、6C、3D、2標準答案:A知識點解析:本題考查的是if-else語句。第一個if語句,先判斷條件,發(fā)現(xiàn)a<b條件成立,執(zhí)行下面的語句。第二個if語句,先判斷條件,發(fā)現(xiàn)c<d條件成立,執(zhí)行下面的語句x=1。17、以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=4,b=3,c=2,d=1;printf(’’%d’’,a<b?a:d<c?d:b);}A、1B、3C、2D、4標準答案:A知識點解析:條件表達式的格式為:’’a?b:c’’,它的功能是:當a為真時,表達式的值等于b的值;當a為假時,表達式的值等于c的值。因為條件運算符的結(jié)合方向為“自右向左”。因此,當表達式中嵌套使用條件表達式時,應(yīng)先計算右邊的條件表達式,再計算左邊的條件表達式。題中應(yīng)先計算“d18、有以下程序#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0;for(i=0;i<3;i++)for(j=2;j>=i;j--)t+=b[i][j];printf(’’%d\n’’,t);}程序運行后的輸出結(jié)果是()。A、4B、3C、8D、9標準答案:C知識點解析:這道題主要考查的是二維數(shù)組的有關(guān)知識。在兩層for循環(huán)語句中,累加上三角元素,所以程序執(zhí)行的過程為“t=b[0][0]+b[0][1]+b[0][2]+b[1][1]+b[1][2]+b[2][2]=8”。19、以下程序:#include<stdio.h>main(){charstr[10];scanf(’’%s’’,&str);printf(’’%s\n’’,str);}運行上面的程序,輸入字符串“howareyou”,則程序的執(zhí)行結(jié)果是()。A、howB、howareyouC、hD、howareyou標準答案:A知識點解析:當從鍵盤輸入“howareyou”時,由于scanf輸入函數(shù)的特點是遇到空格時結(jié)束讀入字符,因此,該程序只將how這3個字符送到了字符數(shù)組str中,并在其后自動加上結(jié)束符“\0”。20、設(shè)變量x和變量y都是int類型,且x=l,y=2,則printf(’’%d%d’’,x,y,(x,y))的輸出結(jié)果是()。A、12B、122C、1,2D、輸出值不確定標準答案:A知識點解析:本題考查printf函數(shù)的格式和逗號表達式。printf函數(shù)在輸出時,是根據(jù)格式說明符的個數(shù)輸出的,如果函數(shù)中有多余的項將不予輸出;如果有輸出項少于格式說明符,則出錯,不能輸出正確的結(jié)果。本題中逗號表達式(x,y)只返回y的值。此時格式說明的個數(shù)是2,而輸出項的個數(shù)是3,因此printf函數(shù)只輸出前兩項。21、以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=8,b=6,m=1;switch(a%4){case0:m++;break;case1:m++:switch(b%3){default:m++;case0:m++:break;}}printf(’’%d\n’’,m);}A、1B、2C、3D、4標準答案:B知識點解析:本題考查switch語句。因為a=8,a%4=0,所以執(zhí)行case0后面的語句,將m加1,遇到break語句跳出switch。22、定義如下變量和數(shù)組:inti,x[3][3]={1,2,3,4,5,6,7,8,9};則下面語句的輸出結(jié)果是()。for(i=0;i<3;i++)printf(’’%d’’,x[i][2-i]);A、159B、147C、357D、369標準答案:C知識點解析:本題主要考查二維數(shù)組的使用。題中利用for循環(huán)來輸出x數(shù)組中的指定元素:①當i=0時,輸出x[0][2]=3;②當i=1時,輸出x[1][1]=5;③當i=2時,輸出x[2][0]=7。23、有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列敘述中正確的是()。A、以上的說明形式非法B、NODE是一個結(jié)構(gòu)體類型C、OLD是一個結(jié)構(gòu)體類型D、OLD是一個結(jié)構(gòu)體變量標準答案:C知識點解析:C語言允許用typedef說明一種新類型名,其一般形式為:typedef類型名標識符。typedef語句的作用僅僅是使“標識符”來代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型。原有類型名依然有效。此題中,用typedef定義了新的類型OLD結(jié)構(gòu),所以O(shè)LD為結(jié)構(gòu)體類型。24、下列數(shù)組定義中錯誤的是()。A、intX[][3]={0};B、intx[2][3]={{1,2},{3,4},{5,6}};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={1,2,3,4,5,6};標準答案:B知識點解析:二維數(shù)組的初始化有以下幾種形式:①分行進行初始化;②不分行的初始化;⑧部分數(shù)組元素初始化;④省略第一維的定義,不省略第二維的定義。在選項B中賦值號左邊定義了一個2行3列的二維數(shù)組,而右邊用3行2列的數(shù)字進行賦初值。所以出現(xiàn)了邊界的越界溢出錯誤。25、以下敘述錯誤的是()。A、變量的作用域取決于變量定義語句的位置B、全局變量可以在函數(shù)以外的任何部位進行定義C、局部變量的作用域可用于其他函數(shù)的調(diào)用D、一個變量說明為static存儲類型是為了限制其他編譯單元的引用標準答案:D知識點解析:本題考查函數(shù)調(diào)用的變量作用域。全局變量不在任何函數(shù)體內(nèi)定義,作用域為整個文件;局部變量在函數(shù)體內(nèi)定義,作用域僅為本次函數(shù);static類型是靜態(tài)變量,為了方便其他編譯單元的引用,不能隨意改變。一個函數(shù)包含兩部分:函數(shù)首和函數(shù)體,函數(shù)體包括花括號內(nèi)的所有語句。26、若定義函數(shù)“int*func()”,則函數(shù)func的返回值為()。A、一個實數(shù)B、一個指向整型變量的指針C、一個指向整型函數(shù)的指針D、一個整型函數(shù)的入口地址標準答案:B知識點解析:本題考查函數(shù)返回值。fun函數(shù)的返回值類型為int*類型,即函數(shù)返回一個指向整型變量的指針。27、若有定義“inta[5],*p=a;”則正確引用數(shù)組元素的是()。A、*&a[5]B、*a+2C、*(p+5)D、*(a+2)標準答案:D知識點解析:本題考查通過指針引用數(shù)組元素。用指針引用數(shù)組有以下3種形式:①“(p+n)與(a+n)”表示數(shù)組元素a[n]的地址;②“*(p+n)與*(a+n)"表示數(shù)組元素a[n];③“p[n]=*(p+n)”,都表示數(shù)組元素a[n]。選項A、B沒有這種引用形式;選項C,“*(p+5)”是引用數(shù)組的第6個元素,而數(shù)組一共有5個元素,出現(xiàn)越界;選項D,“*(a+2)”引用數(shù)組的第3個元素。28、以下對C語言中聯(lián)合類型數(shù)據(jù)的正確敘述是()。A、定義了聯(lián)合變量后,即可引用該變量或該變量中的任意成員B、一個聯(lián)合變量中可以同時存放其所有成員C、聯(lián)合中的各個成員使用共同的存儲區(qū)域D、在向聯(lián)合中的一個成員進行賦值時,聯(lián)合中其他成員的值不會改變標準答案:C知識點解析:聯(lián)合體的幾個特點:①聯(lián)合體所占用的內(nèi)存空間為最長的成員所占用的空間;②各個成員分量全部是從低地址方向開始使用內(nèi)存單元;③聯(lián)合體中的空間在某一時刻只能保存某一個成員的數(shù)據(jù);④聯(lián)合體和結(jié)構(gòu)體可以任意嵌套。29、有以下函數(shù)定義:intfun(doublea,doubleb){returna*b;}若以下選項中所用變量都已正確定義并賦值,錯誤的函數(shù)調(diào)用是()。A、if(fun(x,y)){……}B、z=fun(fun(x,y),fun(x,y));C、z=fun(fun(x,y)x,y);D、fun(x,y);標準答案:C知識點解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。選項C中第一個參數(shù)的表達式不正確,因此不能得到正確的結(jié)果。30、執(zhí)行以下語句段后,xy的值是()。int*pt,xy;xy=200;pt=&xy;xy=*pt+30;A、200B、170C、260D、230標準答案:D知識點解析:本題考查指針的運用。通過pt=&xy,將pt指向xy所占的內(nèi)存地址,而*pt是指針pt所指向內(nèi)存單元中的內(nèi)容,即200,所以最后xy的值為230。31、下述程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(j=0;i<4;i++){k=k+*p[i];}printf(’’%d’’,k);}A、10B、18C、6D、數(shù)組元素引用不合法,輸出結(jié)果不定標準答案:B知識點解析:第一個for循環(huán),給數(shù)組a的20個元素分別賦值0~19;第二個for循環(huán),給數(shù)組p賦值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三個for循環(huán),將數(shù)組p中元素的值進行累加,k=1+2+5+10=18。32、有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i)+1;}main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(’’%d’’,a[i]);}printf(’’\n’’);}程序運行后的輸出結(jié)果是()。A、1313B、3234C、4234D、1234標準答案:C知識點解析:函數(shù)“fun(int*x,inti)”的功能是把數(shù)組元素x[i]的值加1賦給x[0]。所以在主函數(shù)中執(zhí)行fun(a,2)后,數(shù)組元數(shù)a[0]的值等于4。然后在for循環(huán)語句中,輸出數(shù)組a中的前4個元素的值,分別是4、2、3、4。33、下面程序的輸出結(jié)果是()。#include<stdio.h>main(){chara[]={’a’,’b’,’c’,’d’,’f’,’g’},*p;p=a;printf(’’%c\n’’,*p+4);}A、aB、bC、eD、f標準答案:C知識點解析:“*”號的優(yōu)先級比“+”的優(yōu)先級高,所以先執(zhí)行“*p”;指針p指向的是數(shù)組的首地址,因此“*p=a”,再加4得‘e’。34、下面函數(shù)的功能是()。sss(s,t)char*s,*t;{while(*s);while(*t)*(s++)=*(t++);returns;}A、將字符串s復(fù)制到字符串t中B、比較兩個字符串的大小C、求字符串的長度D、將字符串t續(xù)接到字符串s中標準答案:D知識點解析:本題考查指針變量的運用。本題中的函數(shù)實質(zhì)上是將字符串t續(xù)接到字符串s中。35、下列程序的運行結(jié)果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4;*y=s[m];m--;}voidmain(){inta[]={1,2,3,4,5},k,x;printf(’’\n’’);for(k=0;k<=4;k++){sub(a,&x);printf(’’%d,’’,x);}}A、5,4,3,2,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,標準答案:A知識點解析:本題考查的是靜態(tài)變量以及函數(shù)的實參與形參之間的地址值傳遞。sub()函數(shù)中定義的變量m是一個靜態(tài)變量,系統(tǒng)可為其分配固定的存儲空間,重復(fù)使用時,變量的值保留:所以當main()函數(shù)中的for循環(huán)中語句“sub(a,&x)”;執(zhí)行時,sub函數(shù)中m的值依次是4、3、2、1、0;因為變量x進行的是地址值傳遞,所以最后依次輸出的是數(shù)組a的元素a[4]、a[3]、a[2]、a[1]、a[0]。36、設(shè)q1和q2是指向一個int型一維數(shù)組的指針變量,k為float型變量,下列不能正確執(zhí)行的語句是()。A、k=*q1*(*q2);B、q1=k;C、q1=q2;D、k=*q1+*q2;標準答案:B知識點解析:本題考查指針變量的賦值操作。選項A是將指針q1和q2所指向的變量值相乘,然后賦給k;選項B中,float型數(shù)據(jù)和指針型數(shù)據(jù)之間不能進行賦值運算;選項C中,是兩個指針變量之間的賦值;選項D中,是兩個指針型變量所指向的兩個int型數(shù)據(jù)相加。37、以下有關(guān)宏替換的敘述不正確的是()。A、使用宏定義可以嵌套B、宏定義語句不進行語法檢查C、雙引號中出現(xiàn)的宏名不替換D、宏名必須用大寫字母表示標準答案:D知識點解析:本題考查宏替換的規(guī)則。宏替換有兩類:簡單的字符替換和帶參數(shù)的宏替換。使用宏應(yīng)注意:①宏定義僅僅是符號替換,不是賦值語句,因此不做語法檢查;②為了區(qū)別程序中其他的標示符,宏名的定義通常用大寫字母,但不是必須用大寫;⑧雙引號中出現(xiàn)的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論