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

下載本文檔

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

文檔簡介

國家二級(C語言)機試模擬試卷40(共9套)(共342題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、需求分析階段的任務(wù)是()。A、軟件開發(fā)方法B、軟件開發(fā)工具C、軟件開發(fā)費用D、軟件系統(tǒng)功能標(biāo)準(zhǔn)答案:D知識點解析:需求分析是軟件定義時期的最后一個階段,它的基本任務(wù)就是詳細調(diào)查現(xiàn)實世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在這些基礎(chǔ)上確定新系統(tǒng)的功能。2、在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。A、需求分析階段B、概念設(shè)計階段C、邏輯設(shè)計階段D、物理設(shè)計階段標(biāo)準(zhǔn)答案: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)。3、數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,()沒有專門的軟件對數(shù)據(jù)進行管理。I.人工管理階段II.文件系統(tǒng)階段III.?dāng)?shù)據(jù)庫階段A、僅IB、僅IIIC、I和IID、II和III標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,只有人工管理階段,沒有操作系統(tǒng),沒有管理數(shù)據(jù)的軟件,數(shù)據(jù)處理方式是批處理。在文件系統(tǒng)階段,操作系統(tǒng)中已經(jīng)有了專門數(shù)據(jù)管理軟件,一般稱為文件系統(tǒng)。在數(shù)據(jù)庫系統(tǒng)階段,出現(xiàn)了統(tǒng)一管理數(shù)據(jù)的專門軟件系統(tǒng).即數(shù)據(jù)庫管理系統(tǒng)。4、以下敘述中錯誤的是()。A、C程序經(jīng)過編譯、鏈接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件B、C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令C、用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中D、C語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序標(biāo)準(zhǔn)答案:B知識點解析:C語言程序編譯時將每條可執(zhí)行語句轉(zhuǎn)換為二進制的機器指令,但非執(zhí)行語句(如注釋語句)不被編譯。所以選項B錯誤。5、判斷字符串s1是否大于字符串s2,應(yīng)該使用()。A、if(strcmp(s1,s2)<0)B、if(s1>s2)C、if(strcmp(s2,s1)<0)D、igstrcmp(s1,s2))標(biāo)準(zhǔn)答案:C知識點解析:本題考查字符串比較函數(shù)strcmp(),調(diào)用形式:strcmp(str+1,str+2),其中str+1、str+2分別是字符串存儲區(qū)的首地址,函數(shù)功能:比較字符串str1和str2,當(dāng)str1<str2時,返回值為負數(shù);當(dāng)str1=str2時,返回0;當(dāng)str1>str2,返回值為正數(shù)。注意:不能使用關(guān)系運算符比較兩個字符串的大?。?、以下敘述中正確的是()。A、C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方B、C程序的書寫格式是固定的,每行只能寫一條語句C、構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名D、在對C語言程序進行編譯時,可以發(fā)現(xiàn)注釋行中的拼寫錯誤標(biāo)準(zhǔn)答案:A知識點解析:本題考查的是C語言程序設(shè)計的初步知識。選項A),程序中/*……*/表示注釋部分,注釋只是給人看的,對程序的編譯和運行不起作用,可以在程序中的任何位置;選項B),C語言的書寫格式自由,一行可以寫多條語句,一條語句也可以寫在不同行上;選項C),一個C程序中必須有且只能有一個由“main”命名的主函數(shù),其他函數(shù)由用戶自行命名;選項D),程序的注釋僅僅是提供閱讀之用,并不參與程序的編譯,所以編譯也就不會發(fā)現(xiàn)注釋行中的錯誤。7、有以下程序:#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b:2,*c=3;a=b:printf("%d,%d,%d\n",*a,*b,*c);程序運行后的輸出結(jié)果是()。A、1,1,3B、2,2,3C、1,2,3D、3,3,3標(biāo)準(zhǔn)答案:D知識點解析:malloc函數(shù)動態(tài)分配一個整型的內(nèi)存空間,然后把函數(shù)返回的地址用(int*)強制類型轉(zhuǎn)換為整型指針,再把它賦給a,b,c,即讓指針變量a,b,c都指向剛申請的內(nèi)存空間。所以只有最后一個賦值語句*c=3的值保留在了該空間內(nèi),因為a、b、c三個指針堂量均指向該空間,所以打印該空間內(nèi)的數(shù)值為3。8、對關(guān)系S和R進行集合運算,結(jié)果中既包含S中的所有元組也包含R中的所有元組,這樣的集合運算稱為()。A、并運算B、交運算C、差運算D、積運算標(biāo)準(zhǔn)答案:A知識點解析:關(guān)系的并運算是指由結(jié)構(gòu)相同的兩個關(guān)系合并,形成一個新的關(guān)系,新關(guān)系中包含兩個關(guān)系中的所有元組。9、字符數(shù)組a和b中存儲了兩個字符串,判斷字符串a(chǎn)和b是否相等,應(yīng)當(dāng)使用的是()。A、if(strcmp(a,b)==0)B、if(strcpy(a,b))C、if(a==b)D、if(a=b)標(biāo)準(zhǔn)答案:A知識點解析:考查字符串比較函數(shù)strcmp的功能。10、下列說法正確的是()。A、auto和register將聲明的對象說明為自動存儲類對象,這些對象可用在函數(shù)中或函數(shù)外B、將變量其定義為static類型,則其初值默認為隨機值C、typedef說明符并不會為對象預(yù)留存留空間D、如果一個對象被聲明為register,則對它應(yīng)用一元運算符&,意在取得其存儲的地址標(biāo)準(zhǔn)答案:C知識點解析:①這種聲明也具有定義的作用,并將預(yù)留存儲空間。register說明的聲明等價于auto說明的聲明,所不同的是,register暗示了聲明的對象將被頻繁地訪問,將盡可能存儲在寄存器中。如果一個對象被聲明為register,則將不能對它應(yīng)用一元運算符&,聲明為register但實際按照auto類型處理的對象的地址進行計算是非法的。②static將聲明的對象說明為靜態(tài)存儲類。這種對象可以用在函數(shù)內(nèi)部或者函數(shù)外部。在函數(shù)內(nèi)部,該說明符將引起存儲空間的分配,具有定義的作用。在函數(shù)外部,該說明符將引起聲明對象為具有內(nèi)部鏈接。另外,若將其定義為static類型,則其初值默認為0。⑨函數(shù)內(nèi)部的extem聲明表明,被聲明的對象的存儲空間定義在其他地方。在函數(shù)外部,說明聲明的對象具有外部鏈接。④typedef說明符并不會為對象預(yù)留存留空間。11、以下選項中能表示合法常量的是()。A、1,200B、1.5E2.0C、‘\’D、“\007”標(biāo)準(zhǔn)答案:D知識點解析:A選項中整型常量應(yīng)表示為1200,不能包含“,”。B選項中E后面的指數(shù)必須為整數(shù)。C選項中轉(zhuǎn)義字符以“\”開始,若要表示字符“\”,應(yīng)寫為“\\”。12、對于if(表達式)語句,以下敘述中正確的是()。A、“表達式”的值可以是任意合法的數(shù)值B、變量不能出現(xiàn)在“表達式”中C、常量不能出現(xiàn)在“表達式”中D、如果“表達式”的值不是邏輯值,程序會出編譯錯誤標(biāo)準(zhǔn)答案:A知識點解析:B、C、D選項描述比較片面。13、有以下程序:#include<stdio.h>intfun(){staticintx=1:x+=1:returnx;}main()inti,s=1;for(i=1;i<=5;i++)s+=fun();printf("%d\n",s);}程序運行后的輸出結(jié)果是()。A、120B、1C、6D、21標(biāo)準(zhǔn)答案:D知識點解析:fun函數(shù)中的變量x為靜態(tài)的局部變量,占用固定的內(nèi)存單元,下一次調(diào)用時仍可以保留上次調(diào)用時的值。也就是說,如果多次調(diào)用fun函數(shù),x的定義只在第一次調(diào)用時有效,從第二次調(diào)用開始,x的定義卡相當(dāng)于不存在,直接使用上次x的值,fun函數(shù)被調(diào)用了5次,每次調(diào)用后的返回值累加到s上,5次調(diào)用后,x的值為6,s的值為1+2+3+4+5+6=21,因此D選項正確。14、以下敘述中錯誤的是()。A、C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令B、C程序經(jīng)過編譯、鏈接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件C、用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中D、C語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序標(biāo)準(zhǔn)答案:A知識點解析:C語言程序編譯時將每條可執(zhí)行語句轉(zhuǎn)換為二進制的機器指令,但非執(zhí)行語句(如注釋語句)不被編譯。所以選項A)錯誤。15、交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運算符。A、&B、^c)||C、~標(biāo)準(zhǔn)答案:B知識點解析:按邏輯位運算的特定作用主要有3點:①用按位與運算將特定位清0或保留特定位;②用按位或運算將特定的位置設(shè)置為1;③用按位異或運算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。16、設(shè)有某函數(shù)的說明為int*func(inta[10],intn);則下列敘述中,正確的是()。A、說明中的a[10]寫成a[]或*a效果完全一樣B、形參a對應(yīng)的實參只能是數(shù)組名C、func的函數(shù)體中不能對a進行移動指針(如a++)的操作D、只有指向10個整數(shù)內(nèi)存單元的指針,才能作為實參傳給a標(biāo)準(zhǔn)答案:A知識點解析:考查數(shù)組名作為函數(shù)參數(shù)。數(shù)組名作為函數(shù)參數(shù)時,只傳遞數(shù)組的首地址而不檢查形參數(shù)組的長度,所以形參表中可以不給出形參數(shù)組的長度,形參數(shù)組和實參數(shù)組長度也可以不同,選項D)錯;a[10]、a[]、*a做形參都是接受實參數(shù)組首地址,效果一樣,A)正確。傳遞給形參的實參可以是數(shù)組名,還可以是指向該數(shù)組的指針變量,選項B)錯。數(shù)組名可以看做一個指針常量,對其進行自加自減運算相當(dāng)于指針變量的自加自減,選項C)錯。答案選A)。17、與數(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)標(biāo)準(zhǔn)答案:D知識點解析:本題考查關(guān)系表達式和邏輯表達式。y大于等于x同時y小于等于z,因此x<=y和y<=z是邏輯與的關(guān)系。因此D選項正確。18、以下選項中關(guān)于C語言常量的敘述錯誤的是()。A、經(jīng)常被使用的變量可以定義成常量B、常量分為整型常量、實型常量、字符常量和字符串常量C、常量可分為數(shù)值型常量和非數(shù)值型常量D、所謂常量,是指在程序運行過程中,其值不能被改變的量標(biāo)準(zhǔn)答案:A知識點解析:C語言中,常量是指在程序運行過程中其值不能被改變的量,變量是指運行過程中其值可以改變的量,二者不能混淆,所以A選項錯誤。19、若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯誤的是()。A、函數(shù)調(diào)用可以作為獨立的語句存在B、函數(shù)調(diào)用可以作為一個函數(shù)的實參C、函數(shù)調(diào)用可以出現(xiàn)在表達式中D、函數(shù)調(diào)用可以作為一個函數(shù)的形參標(biāo)準(zhǔn)答案:D知識點解析:本題考查函數(shù)調(diào)用的有關(guān)知識點。函數(shù)調(diào)用①可以出現(xiàn)在表達式中;②可以作為獨立的語句存在;③可以作為一個函數(shù)的實參。20、有以下程序:#includemain(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);prinTf("\n");}}程序運行的結(jié)果是()。A、234345B、43254345C、233423D、453423標(biāo)準(zhǔn)答案:D知識點解析:外層主循環(huán)i從3減到1執(zhí)行了3次,嵌套的內(nèi)層循環(huán)j從1增到2,執(zhí)行2次,每次輸出i+j的值,得到3+1,3+2,2+1,2+2,1+1,1+2。每次換行發(fā)生在外循環(huán)完成一次循環(huán)之后。21、設(shè)有以下函數(shù):voidfun(intn,char*s){……}則下面對函數(shù)指針的定義和賦值均正確的是A、void(*pf)(int,char);pf=&fun;B、void*pf();pf=fun;C、void*pf();*pf=fun;D、void(*pf)(int,char*);pf=fun;標(biāo)準(zhǔn)答案:D知識點解析:函數(shù)的參數(shù)可以是指針類型。它的作用是將一個變量的地址傳送到另一個函數(shù)中。函數(shù)名代表函數(shù)的入口地址,指向函數(shù)的指針應(yīng)該定義為void(*pf)()。如果定義為void*pf(),則表示函數(shù)pf返回值為一個基類型為void的指針。因此D選項正確。22、設(shè)有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。A、(EXP==0)B、(EXP!=0)C、(EXP==1)D、(EXP!=1)標(biāo)準(zhǔn)答案:B知識點解析:條件表達式的形式為:“表達式17表達式2:表達式3”。其含義為:當(dāng)“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值就是整個條件表達式的值:當(dāng)“表達式1”的值為零時,求出“表達式3”的值,此時“表達式3”的值就是整個條件表達式的值。對于本題來說,當(dāng)表達式EXP為非0值時條件成立,即執(zhí)行語句i++:當(dāng)EXP等于0時,執(zhí)行語句j--;這等同于條件表達式“(EXP!=0)?i++;j++;”。23、以下程序中函數(shù)f的功能是:當(dāng)flag為1時,進行由小到大排序;當(dāng)flag為0時,進行由大到小排序。#includevoidf(intb[],intlq,intflag){inti,j,t;for(i=0;ib[j]:b[i]A、1,2,3,4,5,6,7,8,9,10,B、3,4,5,6,7,2,1,8,9,10,C、5,4,3,2,1,6,7,8,9,10,D、10,9,8,7,6,5,4,3,2,1,標(biāo)準(zhǔn)答案:B知識點解析:本題重點考察函數(shù)的參數(shù)傳遞,函數(shù)的參數(shù)傳遞分為傳值和傳地址兩種情況。本題就是結(jié)合數(shù)組考查參數(shù)傳遞的情形。函數(shù)f完成的功能是對數(shù)據(jù)進行排序,語句f(&a[2],5,0)的作用是對從a[2]開始的5個元素進行從大到小排序。注意:這里傳遞的是地址&a[2],所以排序操作可看作是直接對數(shù)組a操作,執(zhí)行后的結(jié)果為5,4,7,6,3,2,1,8,9,10。語句f(a,5,1)對數(shù)組a的前5個元素從小到大排序,排序后數(shù)組為:3,4,5,6,7,2,1,8,9,10。因此B選項正確。24、有以下程序:#include<stdio.h>intfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=l;i<n;i++)if(s[i][k]>m)m=s[i][k];returnm:}main(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf(’’%d\n’’,fun(a,4,0));}程序運行后的輸出結(jié)果是()。A、4B、34C、31D、32標(biāo)準(zhǔn)答案:C知識點解析:本題重點考察二維數(shù)組名作為實參進行參數(shù)傳遞,在主函數(shù)中調(diào)用了fun函數(shù),實參為二維數(shù)組名a和兩個整數(shù)4、0,這樣對應(yīng)定義:fun函數(shù)首部有三種形式,這里采用了第一種形式——行指針,這樣在fun函數(shù)對s[i][j]進行操作實際上就是對主函數(shù)中的a[i][j]進行操作,再分析fun函數(shù)的作用便可知,是求二維數(shù)組第0列中最大的那個元素。因此C選項正確。25、有以下計算公式若程序前面已在命令行中包含math.h文件,不能夠正確計算上述公式的程序段是()。A、if(x>=0)y=sqrt(x);if(x<0)y=sqrt(一x);B、if(x>=0)y=sqrt(x);elsey=sqrt(一x);C、y=sqrt(x);D、if(x<0)y=sqrt(一x);標(biāo)準(zhǔn)答案:C知識點解析:本題重點考查的知識點是:sqrt()函數(shù)。sqrt()函數(shù)的作用是計算平方根,要求輸出的參數(shù)x必須大于等于0。題目公式的要求是無論x大于等于0還是小于0,y的值都為x絕對值的開方。選項C中調(diào)用了sqrt(x)函數(shù),而沒有判斷x的正負,則y=sqrt(x)會出錯。26、下列C語言語句會出現(xiàn)錯誤的是()。A、chara=’123’B、chara=’\n’;C、chara=’a’;D、char=’’\x2d’’;標(biāo)準(zhǔn)答案:A知識點解析:選項A將一個字符串賦給了一個字符變量是不正確的;選項B和C是字符賦值,正確;選項D是十六進制表示法。也正確。27、有以下程序#include<stdio.h>fun(inta,intb){intstaticm=0,i=2;i=i+m+1;m=i+a+b;returnm;}main(){intk=4,m=1,p;p=fun(k,m);printf("%d,",p);p=fun(k,m);printf("%d\n",p);}程序運行后的輸出結(jié)果是A、8,17B、7,16C、8,8D、7,17標(biāo)準(zhǔn)答案:A知識點解析:本題考查靜態(tài)局部變量,本題中先執(zhí)行fun(4,1)得到返回值為8,此時靜態(tài)局部變量m為8,i為3,那么再次執(zhí)行fun(4,1)得到的值為17,所以選項A正確。28、計算機算法中有窮性的意思是()。A、算法程序的運行時間是有限的B、算法程序所處理的數(shù)據(jù)量是有限的C、算法程序的長度是有限的D、算法只能被有限的用戶使用標(biāo)準(zhǔn)答案:A知識點解析:算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可完成。有窮性是指算法程序的運行時間是有限的。29、在軟件開發(fā)中,需求分析階段可以使用的工具是()。A、N-S圖B、DFD圖C、PAD圖D、程序流程圖標(biāo)準(zhǔn)答案:B知識點解析:在需求分析階段可以使用的工具有數(shù)據(jù)流圖DFD圖,數(shù)據(jù)字典DD,判定樹與判定表,所以選擇B。30、以下數(shù)組定義中錯誤的是()。A、intx[2][3]={1,2,3,4,5,6};B、intx[][3]={0};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={{1,2},{3,4},{5,6}};標(biāo)準(zhǔn)答案:D知識點解析:D選項中x[2][3]定義的是一個兩行三列的二維數(shù)組,而在給數(shù)組元素賦值時卻賦成了三行,所以錯誤。31、若函數(shù)調(diào)用時的實參為變量,以下關(guān)于函數(shù)形參和實參的敘述中正確的是()。A、函數(shù)的實參和其對應(yīng)的形參共占同一存儲單元B、形參只是形式上的存在,不占用具體存儲單元C、同名的實參和形參占同一存儲單元D、函數(shù)的形參和實參分別占用不同的存儲單元標(biāo)準(zhǔn)答案:D知識點解析:在C語言中,函數(shù)的實參單元與形參單元在內(nèi)存中分配不同的存儲單元。在調(diào)用函數(shù)時,給形參分配臨時存儲單元,并將實參對應(yīng)的值傳遞給形參,在被調(diào)用函數(shù)中對形參存儲單元中的值進行運算,最后通過retum語句把函數(shù)值返回調(diào)用函數(shù)。當(dāng)調(diào)用結(jié)束后,形參單元被釋放,實參單元仍保留并維持原值。32、假如下列選項中的變量已正確定義并成功賦值,其中正確的表達式是()。A、int(22.1%2)B、n=y+m+5,++yC、x=y*3=x+kD、x=21%7.0標(biāo)準(zhǔn)答案:B知識點解析:求余運算符的左右兩個數(shù)字都必須是整數(shù),所以選項A和D錯誤,另外,進行整型強制轉(zhuǎn)化時正確的表達式是(int)x,而不是int(x);選項C中不能將x+k的值賦給y*3,所以選項C錯誤。選項B中涉及逗號運算符,它的級別最低,因此,選項B表達式的執(zhí)行過程是先將y+m+5的值賦給n,y值自加一次。33、以下敘述中錯誤的是A、用typedef可以說明一種新的類型名B、typedef的作用是用一個新的標(biāo)識符來代表已存在的類型名C、可以用typedef說明的新類型名來定義變量D、typedef說明的新類型名必須使用大寫字母,否則會出編譯錯誤標(biāo)準(zhǔn)答案:D知識點解析:本題考查typedef的使用方法,typedef對已存在的類型使用一個新的名字,新類型可以使用小寫,所以D選項錯誤。34、計算機軟件設(shè)計過程中,不屬于需求規(guī)格說明的是()。A、運行環(huán)境B、算法詳細設(shè)計C、軟件的性能D、軟件的主要功能標(biāo)準(zhǔn)答案:B知識點解析:軟件需求規(guī)格說明應(yīng)重點描述軟件的目標(biāo),軟件的功能需求、性能需求和運行環(huán)境等。功能需求是軟件需求規(guī)格說明。給出軟件要執(zhí)行什么功能的詳盡描述。性能需求是指定量地描述軟件系統(tǒng)應(yīng)滿足的具體性能需求,即各種軟件功能的速度、響應(yīng)時間、恢復(fù)時間。外部接口指軟件如何與人、系統(tǒng)的硬件及其他硬件和其他軟件進行交互。屬性是指與軟件有關(guān)的質(zhì)量屬性,如正確性、可用性、可靠性、安全性、可維護性等。約束條件包括影響軟件實現(xiàn)的各種設(shè)計約束,如使用的標(biāo)準(zhǔn)、編程語言、數(shù)據(jù)庫完整性方針、資源限制、運行環(huán)境等方面的要求。35、以下程序的功能是:通過調(diào)用calc函數(shù),把所求得的兩數(shù)之和值放入變量add中,并在主函數(shù)中輸出。#include<stdio.h>voidcalc(floatx,floaty,float*sum){________=x+y;}main(){floatx,y,add;scanf("%f%f",&x,&y);calc(x,y,&add);printf("x+y=%f\n",add);}calc函數(shù)中下劃線處應(yīng)填入的是A、*sumB、sumC、&sumD、add標(biāo)準(zhǔn)答案:A知識點解析:程序的執(zhí)行過程為:從鍵盤讀入兩個float類型數(shù)據(jù),分別賦給x,y,調(diào)用函數(shù)calc將x與y的值與add變量地址傳入函數(shù),地址賦給指針sum,函數(shù)體中將兩數(shù)之和放入指針指向的地址,指針正確的引用形式為(*sum),這表示變量,可以被賦值。所以橫線處填寫*sum,A選項正確。36、有以下程序#include<stdio.h>#include<string.h>main(){charname[9]="c##line";char*str=name;printf("%d,%d,%d,%d\n",sizeof(name),strlen(name),sizeof(str),strlen(str));}程序運行后的輸出結(jié)果是A、9,7,4,7B、8,6,9,6C、8,6,3,6D、10,8,5,8標(biāo)準(zhǔn)答案:A知識點解析:由于name是一個長度為9的一維數(shù)組,故在內(nèi)存中占用9個字節(jié)長度,而其中字符串"c##line"只有7個字符,strlen()函數(shù)返回的是該字符串的長度,不包含結(jié)束符,str是一個指針變量,占用4個字節(jié)長度,但是由于name首地址賦給了str指針變量,在調(diào)用strlen()函數(shù)時,返回的是指針對應(yīng)地址單元的字符串的長度7,因此答案為A選項。37、數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)獨立性是指A、不會因為系統(tǒng)數(shù)據(jù)存儲結(jié)構(gòu)與數(shù)據(jù)邏輯結(jié)構(gòu)的變化而影響應(yīng)用程序B、不會因為數(shù)據(jù)的變化而影響應(yīng)用程序C、不會因為存儲策略的變化而影響存儲結(jié)構(gòu)D、不會因為某些存儲結(jié)構(gòu)的變化而影響其他的存儲結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)獨立性,是指數(shù)據(jù)庫中數(shù)據(jù)獨立于應(yīng)用程序且不依賴于應(yīng)用程序,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)與存取方式的改變不會影響應(yīng)用程序。故選A選項。38、軟件生命周期是指A、軟件的定義和開發(fā)階段B、軟件的需求分析、設(shè)計與實現(xiàn)階段C、軟件的開發(fā)階段D、軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程標(biāo)準(zhǔn)答案:D知識點解析:通常把軟件產(chǎn)品從提出、實現(xiàn)、使用、維護到停止使用、退役的過程稱為軟件生命周期。選項A、B、C選項均為生命周期的一部分。故選D選項39、下列選項中,不屬于數(shù)據(jù)管理員(DBA)職責(zé)的是()。A、數(shù)據(jù)庫維護B、數(shù)據(jù)庫設(shè)計C、改善系統(tǒng)性能,提高系統(tǒng)效率D、數(shù)據(jù)類型轉(zhuǎn)換標(biāo)準(zhǔn)答案:D知識點解析:數(shù)據(jù)庫管理員(DataBaseAdminiswator,DBA)是指對數(shù)據(jù)庫的規(guī)劃、設(shè)計、維護、監(jiān)視等的人員,其主要工作如下:數(shù)據(jù)庫設(shè)計。DBA的主要任務(wù)之一是數(shù)據(jù)庫設(shè)計,具體地說是進行數(shù)據(jù)模式的設(shè)計;數(shù)據(jù)庫維護。DBA必須對數(shù)據(jù)庫中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復(fù)、數(shù)據(jù)定期轉(zhuǎn)儲等進行實施與維護;改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時監(jiān)視數(shù)據(jù)庫的運行狀態(tài),不斷調(diào)整內(nèi)部結(jié)構(gòu),使系統(tǒng)保持最佳狀態(tài)與效率。二、程序填空題(本題共1題,每題1.0分,共1分。)40、下列給定程序中,函數(shù)fun的功能是:統(tǒng)計帶頭結(jié)點的單向鏈表中結(jié)點的個數(shù),并存放在形參n所指的存儲單元中。請在下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#defineN8typedefstructlist{intdata;structlist*next;}SUIST;SLIST*creatlist(int*a);voidoutlist(SLIST*);voidfun(SLIST*h,int*n){SLIST*p;/**********found***********/【1】=0;p=h->next;while(p){(*n)++;/**********found***********/p=p->【2】;}}main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48},num;head=creatlist(a);outlist(head);/**********found***********/fun(【3】,&num);prinff(“\nnmumber=%d\n”,num);}SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(sLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("ThelistisNULL\n");else{prinff("\nHead");do{prinff("一>%d",p->data);pfp->next;}while(p!=NULL);pdnff("->End\n");}}標(biāo)準(zhǔn)答案:(1)*n(2)next(3)head知識點解析:填空1:n所指的存儲單元存放結(jié)點的個數(shù),對其賦初值為0。填空2:while循環(huán)用于遍歷鏈表,循環(huán)一次,指針指向鏈表的下一個結(jié)點。填空3:調(diào)用函數(shù)的實際參數(shù)與形參一致,即fun(head,&num);。三、程序修改題(本題共1題,每題1.0分,共1分。)41、下列給定程序中函數(shù)fun的功能是:計算n!。例如,給n輸入5,則輸出120.000000。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<conio.h>3doublefun(intn)4{5doubleresult=1.0;6/*********found*********/7ifn==08return1.0;9while(n>1&&n<170)10/*********found*********/11result=n--;12returnresult;13}14main()15{16intn;17printf(’’InputN:’’);18scanf(’’%d’’,&n);19printf(’’\n\n%d!=%if\n\n’’,n,fun(n));20}標(biāo)準(zhǔn)答案:(1)if(n==0)(2)result*=n--;或{result*=n;n--;}知識點解析:(1)這里是一個簡單的格式錯誤,if條件判斷語句應(yīng)該加括號。(2)根據(jù)階乘的概念,從n開始,n!=n*(n-1)!,直到1,所以應(yīng)該為result*=n--;。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)42、請編寫函數(shù)fun,函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,二維數(shù)組中的數(shù)據(jù)為:333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)是:333333334444444455555555。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。1#include<stdio.h>2voidfun(int(*s)[10],int*b,int*n,intmm,intnn)3{45}6main()7{intw[10][10]={(33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;8inta[100]={0),n=0;voidNONO();9printf(’’Thematrix:\n’’);10for(i=0;i<3;i++)11{for(j=0;j<4;j++)printf(’’%3d’’,w[i][j]);12printf(’’\n’’);13}14fun(w,a,&n,3,4);15printf(’’TheAarray:\n’’);16for(i=0;i<n;i++)printf(’’%3d’’,a[i]);printf(’’\n\n’’);17NONO();18}19voidNONO()20{/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/21FILE*rf,*wf;inti,j,k;22intw[10][10],a[100],n=0,mm,nn;23rf=fopen(’’in.dat’’,’’r’’);24wf=fopen(’’out.dat’’,’’w’’);25for(k=0;k<5;k++){26fscanf(rf,’’%d%d’’,&mm,&nn);27for(i=0;i<mm;i++)28for(j=0;j<nn;j++)fscanf(rf,’’%d’’,&w[i][j]);29fun(w,a,&n,mm,nn);30for(i=0;i<n;i++)fprintf(wf,’’%3d’’,a[i];fprintf{wf,’’\n’’);31}標(biāo)準(zhǔn)答案:1inti,j;2for(i=0;i<mm;i++)3for(j=0;j<nn;j++)4{b[*n]=*(*(s+i)+j);5*n=*n+1;}知識點解析:該程序功能是將M行、N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中。本題中首先要清楚數(shù)組元素在通常情況下是按行存放的,而如果要實現(xiàn)按行存放,其對應(yīng)關(guān)系應(yīng)為:s[0][0],s[0][1],s[0][2],…,s[0][M-1],s[1][0],s[1][1],…,s[N-1][M-1]。國家二級(C語言)機試模擬試卷第2套一、選擇題(本題共38題,每題1.0分,共38分。)1、下列敘述中正確的是()。A、程序執(zhí)行的效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)B、程序執(zhí)行的效率只取決于程序的控制結(jié)構(gòu)C、程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量D、以上說法均錯誤標(biāo)準(zhǔn)答案:A知識點解析:程序執(zhí)行的效率與數(shù)據(jù)的存儲結(jié)構(gòu)、數(shù)據(jù)的邏輯結(jié)構(gòu)、程序的控制結(jié)構(gòu)以及所處理的數(shù)據(jù)量等有關(guān)。2、軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下列各項中屬于應(yīng)用軟件的是()。A、學(xué)生成績管理系統(tǒng)B、C語言編譯程序C、UNIX操作系統(tǒng)D、數(shù)據(jù)庫管理系統(tǒng)標(biāo)準(zhǔn)答案:A知識點解析:軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支撐軟件。操作系統(tǒng)、編譯程序、匯編程序、網(wǎng)絡(luò)軟件、數(shù)據(jù)庫管理系統(tǒng)都屬于系統(tǒng)軟件。所以B、C、D選項都是系統(tǒng)軟件,只有A選項是應(yīng)用軟件。3、通常軟件測試實施的步驟是()。A、集成測試、單元測試、確認測試B、單元測試、集成測試、確認測試C、確認測試、集成測試、單元測試D、單元測試、確認測試、集成測試標(biāo)準(zhǔn)答案:B知識點解析:軟件測試過程一般按4個步驟進行,即單元測試、集成測試、驗收測試(確認測試)和系統(tǒng)測試。故答案應(yīng)該選B。4、下列敘述中錯誤的是()。A、系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細設(shè)計B、軟件設(shè)計是將軟件需求轉(zhuǎn)換為軟件表示的過程C、數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計是軟件設(shè)計的任務(wù)之一D、PAD圖是軟件詳細設(shè)計的表示工具標(biāo)準(zhǔn)答案:A知識點解析:詳細設(shè)計的任務(wù)是為軟件結(jié)構(gòu)圖而非總體結(jié)構(gòu)圖中的每一個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu)、用某種選定的表達工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié),因此A選項描述錯誤。5、對長度為n的線性表作快速排序,在最壞情況下,比較次數(shù)為()。A、nB、n-1C、n(n-1)D、n(n-1)/2標(biāo)準(zhǔn)答案:D知識點解析:快速排序最壞情況就是每次選的基準(zhǔn)數(shù)都和其他數(shù)做過比較,共需比較(n-1)+(n-2)+…+1=n(n-1)/2,故D選項正確。6、某二叉樹共有7個結(jié)點,其中葉子結(jié)點只有1個,則該二叉樹的深度為(假設(shè)根結(jié)點在第1層)()。A、3B、4C、6D、7標(biāo)準(zhǔn)答案:D知識點解析:根據(jù)二叉樹的基本性質(zhì):在任意一棵二叉樹中,度為0的葉子結(jié)點總比度為2的結(jié)點多一個,因此本題中度為2的結(jié)點為1-1=0個,據(jù)此可以知道本題中的二叉樹的每一個結(jié)點都有一個分支,所以共有7個結(jié)點、共7層,即深度為7,選擇D。7、下列關(guān)于棧的敘述中,正確的是()。A、棧頂元素最先能被刪除B、棧頂元素最后才能被刪除C、棧底元素永遠不能被刪除D、棧底元素最先能被刪除標(biāo)準(zhǔn)答案:A知識點解析:棧是“先進后出”的數(shù)據(jù)結(jié)構(gòu),因此棧頂元素最后入棧卻最先被刪除,棧底元素最先入棧卻最后被刪除,答案為A。8、在數(shù)據(jù)庫中,數(shù)據(jù)模型包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和()。A、數(shù)據(jù)約束B、數(shù)據(jù)類型C、關(guān)系運算D、查詢標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)模型是數(shù)據(jù)特征的抽象,從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為和約束條件,為數(shù)據(jù)庫系統(tǒng)的信息表示和操作提供一個抽象的框架,即描述了數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作及數(shù)據(jù)約束。故正確答案為A。9、一名教師可講授多門課程,一門課程可由多名教師講授。則實體教師和課程間的聯(lián)系是()。A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標(biāo)準(zhǔn)答案:D知識點解析:因為一名教師可講授多門課程,而一門課程又能由多名教師講授,所以教師和課程之間是多對多的關(guān)系,可以表示為m:n,選擇D。10、支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A、棧B、樹C、隊列D、二叉樹標(biāo)準(zhǔn)答案:A知識點解析:棧支持子程序調(diào)用。棧是一種只能在一端進行插入或刪除的線性表。在主程序調(diào)用子函數(shù)時要首先保存主程序當(dāng)前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子程序,最終把子程序的執(zhí)行結(jié)果返回到主程序中調(diào)用子程序的位置,繼續(xù)向下執(zhí)行,這種調(diào)用符合棧的特點,所以A選項正確。11、以下正確的說法是()。A、用戶若需要調(diào)用標(biāo)準(zhǔn)庫函數(shù),調(diào)用前必須重新定義B、用戶可以重新定義標(biāo)準(zhǔn)庫函數(shù),但若重新定義,該函數(shù)將失去原有意義C、用戶系統(tǒng)根本不允許用戶重新定義庫函數(shù)D、用戶若需要調(diào)用庫函數(shù),調(diào)用前不必使用預(yù)編譯命令將該函數(shù)所在文件包括到用戶源文件中,系統(tǒng)會自動尋找該文件標(biāo)準(zhǔn)答案:D知識點解析:無論是標(biāo)準(zhǔn)庫函數(shù),還是別的函數(shù),都屬于函數(shù)的范疇,都允許用戶重新定義和使用,使用的時候include命令必須以“#”號開頭,文件名用一對雙引號或一對尖括號括起來,系統(tǒng)提供的頭文件是以.h作為文件后綴。12、設(shè)有定義:inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876543.0,則a和b的值分別是()。A、87和6.0B、876和543.0C、87和543.0D、76和543.0標(biāo)準(zhǔn)答案:A知識點解析:scanf()函數(shù)的一般形式為:scan(格式控制,地址表列)。其中,“格式控制”是用雙引號括起來的字符串,也稱為“轉(zhuǎn)換控制字符串”,它包括兩種信息:①格式說明,由“%”和格式字符組成;②普通字符,即需要原樣輸入的字符?!暗刂繁砹小笔切枰邮蛰斎霐?shù)據(jù)的一系列變量的地址。本題中的“格式控制”是“%2d%f”,“%2d”的意思是要輸入一個整數(shù),但該整數(shù)最寬只占2個字符,而“%2d”是要輸入一個浮點數(shù)。題目要求輸入的是876空格543.0,所以scanf()函數(shù)將87賦給a,將6賦給b。13、若變量均已正確定義并賦值,以下各項中屬于合法的C語言賦值語句是()。A、x=n%2.5;B、x=y==5;C、x+n=i;D、x=5=4+1;標(biāo)準(zhǔn)答案:B知識點解析:%取余操作數(shù)只能是整數(shù),x+n和數(shù)值5不能作為賦值的左值,所以A、C、D選項錯誤。14、有以下程序:#include<stdio.h>main(){inta=3:a+=a-=a*a;printf("%d\n",a);}程序的輸出結(jié)果是()。A、0B、9C、3D、-12標(biāo)準(zhǔn)答案:D知識點解析:等號“=”運算符是從右到左,且與“+、-、*”運算符比,優(yōu)先級較低。首先計算a*a,結(jié)果為9,執(zhí)行a=a-9后a的值為-6,然后執(zhí)行a+=a,即a=a+a=-6+(-6),所以值為-12。15、設(shè)有定義:chars[81];inti=0;以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是()。A、gets(s);B、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;C、scanf("%s",s);D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;標(biāo)準(zhǔn)答案:C知識點解析:函數(shù)scanf()輸入字符串時默認空格為間隔符,所以不能輸入空格,答案選C。16、有以下程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(e1);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始):123<回車>45678<回車>則輸出結(jié)果是()。A、1256B、1245C、1278D、1267標(biāo)準(zhǔn)答案:B知識點解析:對于字符型數(shù)據(jù)的輸入而言,從鍵盤上輸入的字符,不管是否可以輸出,都會被讀入字符型變量中。因此,c1=1,c2=2,c3=3,c4=<回車>,c5=4,c6=5,輸出c1,c2,c5,c6的結(jié)果為1245,答案選B。17、有以下程序:#include<stdio.h>main(){inta,b;for(a=0;a<3;a++){scanf("%d",&b);switch(b){default:printf("%d",++b);case1:printf("%d",++b);case2:printf("%d",++b);}}}執(zhí)行時輸入:123<回車>,則輸出結(jié)果是()。A、233456B、234C、223444D、234344標(biāo)準(zhǔn)答案:A知識點解析:這是一個循環(huán)結(jié)構(gòu)嵌套選擇結(jié)構(gòu),按照外層循環(huán),內(nèi)層選擇一步一步處理即可。本題重點注意,switch語句中并沒有出現(xiàn)break語句,所以內(nèi)層循環(huán)是不會跳出的。18、對于if(表達式)語句,以下敘述中正確的是()。A、“表達式”的值可以是任意合法的數(shù)值B、變量不能出現(xiàn)在“表達式”中C、常量不能出現(xiàn)在“表達式”中D、如果“表達式”的值不是邏輯值,程序會出編譯錯誤標(biāo)準(zhǔn)答案:A知識點解析:B、C、D選項描述比較片面。19、若有以下程序:#include<stdio.h>main(){intc;C=13|15;printf("%d\n",c);}則程序的輸出結(jié)果是()。A、13B、15C、18D、5標(biāo)準(zhǔn)答案:B知識點解析:本題考查位運算中按位或運算符,或運算只要兩個比較的位中有一個為1,其結(jié)果是1,否則結(jié)果為0。13用二進制表示為00001101,15用二進制表示為00001111,或運算后結(jié)果為00001111,即15,故B選項正確。20、有以下程序:#include<stdio.h>main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3;printf("%d\n",b);}程序運行后的輸出結(jié)果是()。A、0B、1C、2D、3標(biāo)準(zhǔn)答案:C知識點解析:“++”和“--”運算,當(dāng)以前綴形式出現(xiàn)時,則先進行加1或減1操作,再進行其他運算;當(dāng)以后綴形式出現(xiàn)時,則先進行其他運算,再進行加1或減1操作。a初始定義為1,b為0,執(zhí)行--a,a的值變?yōu)?,即if判斷為假,執(zhí)行b+=2,輸出b的值為2。21、有以下程序:#include<stdio.h>main(){inti,array[6]={1,5,0,4};for(i=0;i<5;i++)printf("%d",array[i]);printf("\n");}程序運行后的輸出結(jié)果是()。A、04040B、15040C、15540D、12120標(biāo)準(zhǔn)答案:B知識點解析:本題主要考查一維數(shù)組的輸出。由于數(shù)組中有6個元素,但初始化數(shù)組的時候只給出4個元素,所以array[5]=0,array[6]=0,前面幾位元素依次輸出,不夠位數(shù)補O,所以選項B正確。22、以下敘述中正確的是()。A、數(shù)組說明符的一對方括號中只能使用整型常量,而不能使用表達式B、一條語句只能定義一個數(shù)組C、每個數(shù)組包含一組具有同一類型的變量,這些變量在內(nèi)存中占有連續(xù)的存儲單元D、在引用數(shù)組元素時,下標(biāo)表達式可以使用浮點數(shù)標(biāo)準(zhǔn)答案:C知識點解析:同類元素的集合稱為數(shù)組,數(shù)組元素在內(nèi)存中占據(jù)連續(xù)的存儲空間,C選項正確。方括號中可以為整型變量或者常量表達式,A選項錯誤。在使用逗號運算符的情況下,一條語句可以定義多個數(shù)組,B選項錯誤。數(shù)組元素在數(shù)組中的下標(biāo)為整型常量或者變量構(gòu)成的整型表達式,不能為浮點數(shù),D選項錯誤。答案選C。23、若有定義語句:intm[][3]={1,2,3,4,5,6,7};,則與該語句等價的是()。A、intm[][3]={{1,2,3},{4,5},{6,7}};B、intm[][3]={{1,2},{3,4},{5,6,7}};C、intm[][3]={{1,2,3},{4,5,6},{7}};D、intm[][3]={{1},{2,3,4},{5,6,7}};標(biāo)準(zhǔn)答案:C知識點解析:考查二維數(shù)組的初始化。初始化二維數(shù)組的時候,若給數(shù)組的全部元素均賦初值,此時第一維的元素個數(shù)可以不指定,部分賦值時,最后一行元素不寫完整,此時數(shù)組第一維元素個數(shù)仍然可以不指定。題中為按行給數(shù)組m賦值,最后一行只有部分賦初值,答案選C。24、以下敘述中正確的是()。A、char,c1,c2,*c3,c4[40];是合法的變量定義語句B、數(shù)組下標(biāo)的下限由數(shù)組中第一個非零元素的位置決定C、數(shù)組下標(biāo)的下限由數(shù)組中第一個被賦值元素的位置決定D、數(shù)組下標(biāo)的下限是1標(biāo)準(zhǔn)答案:A知識點解析:A選項正確,charc1,c2,*c3,c4[40]表示定義了兩個字符變量c1、c2,一個字符指針c3,一個字符數(shù)組c4。數(shù)組的下限永遠為0,選項B、C、D錯,答案選A。25、有以下程序:#include<stdio.h>main(){inta=3;do{printf("%d,",a-=2);}while(!(--a));printf("\n");}程序運行后的輸出結(jié)果是()。A、1,-3,B、1,-2,C、3,0,D、1,0,標(biāo)準(zhǔn)答案: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。故B選項正確。26、若有定義:chars[30]={0};運行時輸入:Thisisastring.<回車>則以下不能正確讀入整個字符串Thisisastring.到字符數(shù)組s中的語句組是()。A、scanf("%s",s);B、gets(s);C、for(i=0;(c=getchar())!=’\n’;i++)s[i]=c;D、i=0;while((c=getchar())!=’\n’)s[i++]=c;標(biāo)準(zhǔn)答案:A知識點解析:考查基本的字符串輸入控制語句。27、有以下程序:#include<stdio.h>main(){intx;for(x=3;x<6;x++)printf((x%2)?("*%d"):("#%d"),x);printf("\n");}程序的輸出結(jié)果是()。A、*3#4*5B、#3*4#5C、*3*4#5D、*3#4#5標(biāo)準(zhǔn)答案:A知識點解析:條件運算符組成條件表達式的一般形式為:表達式1?表達式2:表達式3。其求值規(guī)則為:表達式1值為真,則以表達式2的值作為條件表達式的值,否則以表達式3的值作為整個條件表達式的值。本題中語句printf((x%2)?("*%d"):("#%d",x);含義為變量x對2求余,如果結(jié)果為真,則按照“*%d”出,否則按照“#%d”出。故A選項正確。28、有以下程序:#include<stdio.h>voidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf("%d",c[i]);printf("\n");}程序的運行結(jié)果是()。A、1234567890B、2143658709C、0987654321D、0123456789標(biāo)準(zhǔn)答案:A知識點解析:函數(shù)fun()屬于值傳參,形參的變化不會影響實參,所以函數(shù)調(diào)用結(jié)束后,數(shù)組c沒有任何變化,輸出結(jié)果為選項A。29、有以下程序:#include<stdio.h>intfun(intn){inta;if(n==1)return1;a=n+fun(n-1);return(a);}main(){printf("%d\n",fun(5));}程序的輸出結(jié)果是()。A、10B、14C、15D、9標(biāo)準(zhǔn)答案:C知識點解析:考查遞歸函數(shù)。函數(shù)fun()的功能是計算1到n之間的數(shù)字之和,所以計算結(jié)果為15,答案選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";標(biāo)準(zhǔn)答案:A知識點解析:B選項中,不能直接將字符數(shù)組名直接賦值給另一個字符數(shù)組名。C選項賦值錯誤,不能將一個字符串常量賦值給一個字符指針。D選項定義str4時需要定義其長度。故A選項正確。31、有以下程序:#include<stdio.h>intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;}則以下函數(shù)調(diào)用語句中錯誤的是()。A、k=*f(a,b);B、k=add(a,b);C、k=(*f)(a,b);D、k=f(a,b);標(biāo)準(zhǔn)答案:A知識點解析:int(*f)()為一個函數(shù)指針變量,返回值為整型,f為一個指針變量,指向一個已經(jīng)定義的函數(shù),在調(diào)用該函數(shù)的時候需要把參數(shù)寫在相應(yīng)的小括號內(nèi),即(*指針名)(參數(shù)或參數(shù)列表),所以選項A調(diào)用錯誤,答案選A。32、以下關(guān)于C語言函數(shù)參數(shù)傳遞方式的敘述中正確的是()。A、數(shù)據(jù)只能從實參單向傳遞給形參B、數(shù)據(jù)可以在實參和形參之間雙向傳遞C、數(shù)據(jù)只能從形參單向傳遞給實參D、C語言的函數(shù)參數(shù)既可以從實參單向傳遞給形參,也可以在實參和形參之間雙向傳遞,可視情況選擇使用標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)只能由實參單向傳遞給形參稱為“值傳遞”,而不能由形參傳回來給實參,A選項正確;數(shù)組名、指針等作參數(shù),實參傳遞給形參地是地址值,這樣形參和實參就指向同一段內(nèi)存單元,在函數(shù)體內(nèi)對形參數(shù)據(jù)的改變也將影響到實參。實參和形參之間不可雙向傳遞,BD選項錯誤。數(shù)據(jù)不能從形參傳遞給實參,C選項錯誤。33、設(shè)已有定義:floatx;則以下對指針變量p進行定義且賦初值的語句中正確的是()。A、float*p=&;x;B、int*p=(float)x;C、floatp=&;x;D、float*p=1024:標(biāo)準(zhǔn)答案:A知識點解析:考查指針變量的初始化。只能把對應(yīng)類型的變量的地址賦值給指針,選項B錯誤;定義指針時要加上“*”標(biāo)明該變量為一個指針變量,選項C錯誤;不能把一個整數(shù)直接賦值給指針變量,選項D錯誤;所以答案選A。34、以下敘述中正確的是()。A、在C語言中,預(yù)處理命令行都以#開頭B、預(yù)處理命令行必須位于C源程序的起始位置C、#include<stdio.h>必須放在C程序的開頭D、C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能標(biāo)準(zhǔn)答案:A知識點解析:C語言中,凡是以“#”開頭的都被稱為編譯預(yù)處理行,選項A正確;預(yù)處理行可以放在C源程序的任何位置,習(xí)慣放在起始位置,選項B錯誤;語句“#include<stdio.h>”必須放在使用文件stdio.h中相關(guān)方法的語句之前,但是不一定非要放在C程序開頭,選項C錯誤;預(yù)處理包括宏定義、文件包含和條件編譯等,選項D錯誤。答案選A。35、有以下程序:#include<stdio.h>intfun1(inta,intb){returna+b;}intfun2(inta,intb){returna-b;}intfun(int(*t)(int,int),intx,inty){return((*t)(x,y));}main(){intx;X=fun(fun1,9,3);x+=fun(fun2,8,3);printf("%d\n",x);}程序運行后的輸出結(jié)果是()。A、24B、23C、17D、22標(biāo)準(zhǔn)答案:C知識點解析:本題主要考查函數(shù)作為形參時的使用,由x=fun(fun1,9,3);可得到x=9+3=12,而后直接傳入函數(shù)fun2,x=x+8-3=12+5=17。故C選項正確。36、有以下程序:#include<stdio.h>voidsp(int*a){intb=2;a=&b;*a=*a*2;printf("%d,",*a);}main(){intk=3,*p=&k;sp(p);pfinff("%d,%d\n",k,*p);}則程序的輸出結(jié)果是()。A、4,3,3B、4,3,4C、6,3,6D、6,6,6標(biāo)準(zhǔn)答案:A知識點解析:首先在主函數(shù)中給整型變量k賦值為3,將變量k的地址賦給指針變量p,調(diào)用sp函數(shù),將實參p的值傳給形參a,在sp函數(shù)中,指針變量a又獲得變量b的地址,通過運算后,輸出a的值為4,返回主函數(shù),輸出k的值和p的值為3和3。故A選項正確。37、有以下程序:#include<stdio.h>voidmy(){charch;ch=getchar();if(ch!=’c’)my();putchar(ch);}main(){my();}執(zhí)行時,輸入abc<回車>,則輸出結(jié)果是()。A、abcB、ababcC、bcaD、cba標(biāo)準(zhǔn)答案:D知識點解析:my()遞歸,直到輸入了c開始返回。遞歸使用的是棧的思想,因此最后輸入進去的最先返回并輸出。所以結(jié)果是cba。38、有以下程序:#include<stdio.h>main(){unsignedchara=8,c;c=a>>3:printf("%d\n",c);}程序運行后的輸出結(jié)果是()。A、32B、16C、1D、0標(biāo)準(zhǔn)答案:C知識點解析:字符常量與其ASCII碼值一一對應(yīng),在計算的時候,可以使用該字符的ASCII碼參與運算,輸出時會根據(jù)格式控制符輸出對應(yīng)的字符或者ASCII碼。右移運算符“>>”的運算規(guī)則是把左邊運算數(shù)的各二進制位全部右移n位,n取決于“>>”右邊的數(shù)值。字符a的ASCII碼值為8,對應(yīng)二進制為1000,所以a>>3=1,輸出的字符c的ASCII碼值為1,答案選C。二、程序填空題(本題共1題,每題1.0分,共1分。)39、下列給定程序中,函數(shù)fun的功能是:有N×N矩陣,以主對角線為對稱線,對稱元素相加并將結(jié)果存放在左下三角元素中,右上三角元素置為0。例如,若N=3,有下列矩陣:123456789計算后結(jié)果為10065010149請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除。使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN4標(biāo)準(zhǔn)答案:(1)[N](2)t[i][j](3)t[j][i]知識點解析:本題考查:有參函數(shù)定義,需要根據(jù)題目要求和給定程序確定函數(shù)參數(shù)。N×N矩陣中如何表示左下角和右上角元素。填空1:主函數(shù)中調(diào)用函數(shù)的參數(shù)為二維數(shù)組,所以此處形參應(yīng)定義為指針數(shù)組。填空2:根據(jù)題意可知,對稱元素相加的和存放在左下三角元素中,那么應(yīng)填入的是t[i][j]。填空3:右上三角元素置0,應(yīng)填入t[j][i]。三、程序修改題(本題共1題,每題1.0分,共1分。)40、在主函數(shù)中用鍵盤輸入若干個數(shù)放入數(shù)組中,用0結(jié)束輸入并放在最后一個元素中。下列給定程序中,函數(shù)fun的功能是:計算數(shù)組元素中所有值為正數(shù)的平均值(不包括0)。例如,數(shù)組中元素中的值依次為:39,-47,21,2,-8,15,0,則程序的運行結(jié)果為19.250000。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>doublefun(intx[]){/******found******/intsum=0標(biāo)準(zhǔn)答案:(1)doublesum=0.0;(2)sum/=c;知識點解析:本題考查:變量的數(shù)據(jù)類型,區(qū)別int整型和double雙精度型;除法運算符“/”。(1)變量定義錯誤,變量sum存放所有數(shù)據(jù)的和,應(yīng)定義為double型。(2)C語言中的除法運算符是“/”。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)41、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了尾部的*號之外,將字符中的其他*號全部刪除。形參p已指向字符串中最后的一個字母。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是ABCDEFG*******。注意:請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>void]]fun(char*a,cha標(biāo)準(zhǔn)答案:voidfun(char*a,char*p){char*t=a;for(;t<=p;t++)if(*t!=’*’)*(a++)=*t;for(;*t!=’\0’;t++)*(a++)=*t;*a=’\0’;/*在字符串最后加上字符串結(jié)束標(biāo)識*/}知識點解析:本題考查:刪除字符串中非尾部*號,刪除的主要思想就是把不刪除的字符保留起來。本題用兩個循環(huán)語句來實現(xiàn)。第1個循環(huán)的作用是將指針p所指字母以前所有非*號的字符保留下來,即刪除指針p以前所有的木號。第2個循環(huán)的作用是將指針p以后的所有*號保留下來。最后在新串的結(jié)尾加上結(jié)束符。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、若有定義語句:doublex[5]={1.0,2,3,4,5.0),*p=x,則錯誤引用x數(shù)組元素的是()。A、*pB、x[5]C、*(p+1)D、*x標(biāo)準(zhǔn)答案:B知識點解析:引用一維數(shù)組元素有多種方式。直接引用的表達式為:數(shù)組名[下標(biāo)]。數(shù)組大小為n時,下標(biāo)的取值范圍為0~(n—1),所以本題中x的下標(biāo)為0~4,x[5]溢出,B項錯誤。此外還可以通過指針引用一維數(shù)組元素。指針p指向該數(shù)組,所以*p表示x[0],A項正確;指針p+1指向數(shù)組x的第二個元素的地址,*(p+1)表示引用x的第二個元素,C項正確;x為x數(shù)組元素的首地址,*x表示對x[0]的引用,D項正確。2、設(shè)有兩行定義語句:intscanf;floatcase;則以下敘述正確的是()。A、第2行語句不合法B、兩行定義語句都合法C、第1行語句不合法D、兩行定義語句都不合法標(biāo)準(zhǔn)答案:A知識點解析:本題考查用戶標(biāo)識符,用戶自己定義的標(biāo)識符不能與關(guān)鍵字相同,并且盡量避免和預(yù)定義標(biāo)識符相同。本題中scanf為預(yù)定義標(biāo)識符,可以作為用戶標(biāo)識符;case為關(guān)鍵字,不能作為用戶標(biāo)識符,故而答案選A3、若有定義:charc;intd;,程序運行時輸入:c=1d=2<回車>,能把字符1輸入給變量c、把整數(shù)2輸入給變量d的輸入語句是()。A、scanf("c=%cd=%d",&c,&d);B、scanf("c=%cd=%d",&c,&d);C、scanf("c=%dd=%d",&c,&d);D、scanf("c=%dd=%d",&c,&d);標(biāo)準(zhǔn)答案:A知識點解析:在sanf()函數(shù)中格式字符串的形式必須與地址格式保持一致,所以B、D選項不正確。C選項中c=%d是以數(shù)值格式存入c變量。故只有A選項正確。4、有以下程序:#include<stdio.h>intk=5:voidf(int*s){s=&k;}main(){intm=3,*p=&m;f(p);printf("%d%d\n",m,*p);}程序的運行結(jié)果是()。A、33B、55C、35D、53標(biāo)準(zhǔn)答案:A知識點解析:考查函數(shù)傳參。C語言中,數(shù)據(jù)只能從實參單向傳遞給形參,指針作為函數(shù)參數(shù)時,形參仍然作為實參的副本被賦值,形參指針變量的指向改變不能影響實參指針變量的指向,結(jié)果不變,答案選A。5、有以下程序:#includemain()voidfun(char*c,intd){chara=’F’,b=’f’;{*c=*c+1;fun(&b,a);d+=1;printf("%c,%c\n",a,b);}printf("%c,%c",*c,d);}程序的輸出結(jié)果為()。A、g,GF,gB、g,F(xiàn)F,gC、GfF,GD、f,gf,g標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是函數(shù)參數(shù)的傳遞。main函數(shù)中首先調(diào)用fun函數(shù),fun函數(shù)的功能是使字符c的ASCII碼值加1并輸出,使d加1并輸出對應(yīng)的字符;fun(&b,a)輸出“g,G”,但是由于fun函數(shù)的第一個參數(shù)進行的是地址傳遞,而第二個參數(shù)進行的是值傳遞,所以main函數(shù)中的printf函數(shù)輸出“F,g”。6、下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()。A、無序線性表B、線性鏈表C、二叉鏈表D、順序存儲的有序表標(biāo)準(zhǔn)答案:D知識點解析:二分法查找只適用于順序存儲的有序表,表中的元素按值從小到大排列。7、對下列二叉樹進行前序遍歷的結(jié)果為()。A、ABCDEFGHB、ABDGEHCFC、GDBEHACFD、GDHEBFCA標(biāo)準(zhǔn)答案:B知識點解析:遍歷就是不重復(fù)地訪問二叉樹的所有結(jié)點。二叉樹遍歷的方法有3種:前序遍歷、中序遍歷和后序遍歷。記住3種遍歷的順序:①前序,訪問根→按前序遍歷左子樹→按前序遍歷右子樹;②中序,按中序遍歷左子樹→訪問根→按中序遍歷右子樹;③后序,按后序遍歷左子樹→按后序遍歷右子樹→訪問根。所以對該二叉樹的中序遍歷結(jié)果為ABDGEHCF。8、對下列二叉樹進行前序遍歷的結(jié)果為()。A、ABCDEFGHB、ABDGEHCFC、GDBEHACFD、GDHEBFCA標(biāo)準(zhǔn)答案:B知識點解析:遍歷就是不重復(fù)地訪問二叉樹的所有結(jié)點。二叉樹遍歷的方法有3種:前序遍歷、中序遍歷和后序遍歷。記住3種遍歷的順序:①前序,訪問根一按前序遍歷左子樹一按前序遍歷右子樹;②中序,按中序遍歷左子樹一訪問根一按中序遍歷右子樹;③后序,按后序遍歷左子樹一按后序遍歷右子樹一訪問根。所以對該二叉樹的中序遍歷結(jié)果為ABDGEHCF。9、可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是()。A、voiddefineWORDB、as_b3_123IfC、For-abccaseD、2cDOSIG標(biāo)準(zhǔn)答案:B知識點解析:C語言規(guī)定,標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或下劃線,關(guān)鍵字不能用作用戶標(biāo)識符。10、有以下程序:#include<stdio.h>main(){charc1,c2;c1=’A’+’8’-’4’;c2=’A’+’8’-’5’;printf("%c,%d\n",c1,c2);}已知字母A的ASCII碼為65,程序運行后的輸出結(jié)果是()。A、E,68B、D,69C、E,DD、輸出無定值標(biāo)準(zhǔn)答案:A知識點解析:本題目中字符變量c1是字符’A’的ASCII碼加上4,即69所對應(yīng)的字符’E’。字符變量c2是字符’A’的ASCII碼加上3,即68所對應(yīng)的字符’D’。但是打印輸出時,c1以%c的格式輸出,所以是E,c2以%d的格式輸出,所以是68。11、有以下程序:#include<stdio.h>intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;}則以下函數(shù)調(diào)用語句錯誤的是()。A、k=f(a,b);B、k=add(a,b);C、k=(*f)(a,b);D、k=*f(a,b);標(biāo)準(zhǔn)答案:D知識點解析:D選項中*f(a,b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針,即該函數(shù)的返同值為指針類型,所以不能將其賦值給整形變量k。12、有以下程序:#include<stdio.h>main(){chars[]={"012xy"};inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’)n++;printf("%d\n",n);}程序運行后的輸出結(jié)果是()。A、0B、2C、3D、5標(biāo)準(zhǔn)答案:B知識點解析:本題main函數(shù)的作用就是判斷字符串s中小寫字母的個數(shù),顯然結(jié)果為2。13、以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù):voidfun(int*w,intn){inti;for(i=0;i<n;i++){________printf("%d",w[i]);}printf("\n");}下畫線處應(yīng)填入的語句是()。A、if(i/8==0)printf("\n");B、if(i/8==0)continue;C、if(i%8==0)printf("\n");D、if(i%8==0)continue;標(biāo)準(zhǔn)答案:C知識點解析:每行輸出8個數(shù)組數(shù)據(jù),即輸出8個后就輸出一個換行,所以,應(yīng)該對8取余,當(dāng)結(jié)果為0時輸出換行符,即填入語句“if(i%8==0)printf("\n");”。14、在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是()。A、外模式B、內(nèi)模式C、概念模式D、邏輯模式標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)庫系統(tǒng)的

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論