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

下載本文檔

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

文檔簡介

國家二級(C語言)筆試模擬試卷4(共9套)(共543題)國家二級(C語言)筆試模擬試卷第1套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、算法的時間復雜度是指()。A、算法的長度B、執(zhí)行算法所需要的時間C、算法中的指令條數(shù)D、算法執(zhí)行過程中所需要的基本運算次數(shù)標準答案:D知識點解析:算法的時間復雜度,是指執(zhí)行算法所需要的工作量,可以用算法在執(zhí)行過程中所需基本運算的執(zhí)行次數(shù)來度量算法的工作量。2、以下數(shù)據(jù)結(jié)構(gòu)中,屬于非線性數(shù)據(jù)結(jié)構(gòu)的是()。A、棧B、線性表C、隊列D、二叉樹標準答案:D知識點解析:二叉樹屬于非線性結(jié)構(gòu)。棧是一種特殊的線性表,這種線性表只能在固定的一端進行插入和刪除操作;隊列可看作是插入在一端進行,刪除在另一端進行的線性表。3、數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的()。A、存儲結(jié)構(gòu)B、物理結(jié)構(gòu)C、邏輯結(jié)構(gòu)D、線性結(jié)構(gòu)標準答案:C知識點解析:數(shù)據(jù)的邏輯結(jié)構(gòu)反映的是數(shù)據(jù)元素之間的邏輯關(guān)系,與使用的計算機無關(guān)。4、內(nèi)聚性是對模塊功能強度的衡量,下列選項中,內(nèi)聚性較弱的是()。A、順序內(nèi)聚B、偶然內(nèi)聚C、時間內(nèi)聚D、邏輯內(nèi)聚標準答案:B知識點解析:內(nèi)聚是從功能角度來衡量模塊的聯(lián)系,它描述的是模塊內(nèi)的功能聯(lián)系。內(nèi)聚有如下種類,它們之間的內(nèi)聚度由弱到強排列:偶然內(nèi)聚——模塊中的代碼無法定義其不同功能的調(diào)用。但它使該模塊能執(zhí)行不同的功能,這種模塊為巧合強度模塊。邏輯內(nèi)聚——這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時,由傳送給模塊的參數(shù)來確定該模塊應(yīng)完成哪一種功能。時間內(nèi)聚——這種模塊順序完成一類相關(guān)功能,比如初始化模塊,它順序地為變量置初值。過程內(nèi)聚——如果一個模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,則稱為過程內(nèi)聚。通信內(nèi)聚——這種模塊除了具有過程內(nèi)聚的特點外,還有另外一種關(guān)系,即它的所有功能都通過使用公用數(shù)據(jù)而發(fā)生關(guān)系。順序內(nèi)聚——如果一個模塊內(nèi)各個處理元素和同一個功能密切相關(guān),而且這些處理必須順序執(zhí)行,處理元素的輸出數(shù)據(jù)作為下一個處理元素的輸入數(shù)據(jù),則稱為順序內(nèi)聚。功能內(nèi)聚——如果一個模塊包括為完成某一具體任務(wù)所必需的所有成分,或者說模塊中所有成分結(jié)合起來是為了完成一個具體的任務(wù),此模塊則為功能內(nèi)聚模塊。5、在關(guān)系中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的()。A、連接碼B、關(guān)系碼C、外碼D、候選碼標準答案:D知識點解析:在關(guān)系中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的候選碼或候選鍵。從二維表的所有候選鍵中選取一個作為用戶使用的鍵稱為主鍵或主碼。6、檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。A、確認測試B、需求測試C、驗證測試D、路徑測試標準答案:A知識點解析:確認測試的任務(wù)是驗證軟件的功能和性能,以及其他特性是否滿足需求規(guī)格說明中確定的各種需求。7、數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。A、控制流B、加工C、存儲文件D、源和潭標準答案:A知識點解析:數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,它由一些特定的圖符構(gòu)成,包括4個方面,即加工、數(shù)據(jù)流、存儲文件、源和潭。8、待排序的關(guān)鍵碼序列為(15,20,9,30,67,65,45,90),要按關(guān)鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關(guān)鍵碼15被放到第()個位置。A、2B、3C、4D、5標準答案:A知識點解析:選擇排序的基本思想是掃描整個線性表,從中選出最小的元素,將它交換到表的最前面,然后對剩下的子表采用同樣的方法,直到子表為空。所以第一趟排序后,將選出最小的元素9放在第一個位置,元素15則放在第二個位置。9、對關(guān)系s和關(guān)系R進行集合運算,結(jié)果中既包含關(guān)系S中的所有元組也包含關(guān)系R中的所有元組,這樣的集合運算稱為()。A、并運算B、交運算C、差運算D、除運算標準答案:A知識點解析:關(guān)系的并運算是指,由結(jié)構(gòu)相同的兩個關(guān)系合并,形成一個新的關(guān)系,其中包含兩個關(guān)系中的所有元組。10、下列選項中,不屬于數(shù)據(jù)管理員(DBA職責的是()。A、數(shù)據(jù)庫維護B、數(shù)據(jù)庫設(shè)計C、改善系統(tǒng)性能,提高系統(tǒng)效率D、數(shù)據(jù)類型轉(zhuǎn)換標準答案:D知識點解析:數(shù)據(jù)庫管理員(DataBascAdministrator,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)恢復、數(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分)(本題共30題,每題1.0分,共30分。)11、對于一個正常運行的c程序,下列敘述中正確的是()。A、程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結(jié)束B、程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束C、程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束D、程序的執(zhí)行總是從程序中的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束標準答案:A知識點解析:一個C語言源程序無論包括了多少函數(shù),總是從main函數(shù)開始執(zhí)行,從main函數(shù)結(jié)束。12、以下選項中與if(a==1)a++;elsea=b;語句功能不同的語句是()。A、switch(a){case0:a=b;break;default:a++;}B、switch(a==1){case0:a++;default:a=b;}C、switch(a){default:a=b;break;case1:a++;}D、a=(a==1)?(a++):b標準答案:B知識點解析:ifelse語句的含義是,如果變量a的值等于1,變量a的值加1,否則,則把變量b的值賦給變量a。在本題的4個選項中,與其含義不同的是選項B,因為沒有break語句,當a=1的時候,會順序執(zhí)行兩條語句,最終結(jié)果是將b的值賦給a。13、以下不合法的用戶標識符是()。A、804zhangB、_hhC、yy614D、If標準答案:A知識點解析:C語言規(guī)定,標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或下劃線。14、已知chara;intb;floatc;doubled;則表達式a-b+c-d結(jié)果為()型。A、doubleB、floatC、intD、char標準答案:A知識點解析:C語言中允許進行不同數(shù)據(jù)類型的混合運算,但在實際運算時,要先將不同類型的數(shù)據(jù)轉(zhuǎn)化成同一類型再進行運算。類型轉(zhuǎn)換的一般規(guī)則是:①運算中將所有char型轉(zhuǎn)換成int型,float型轉(zhuǎn)換成double型;②低級類型服從高級類型,并進行相應(yīng)的轉(zhuǎn)換,數(shù)據(jù)類型由低到高的順序為:char->int->unsigned->long->float->double;③賦值運算中最終結(jié)果的類型,以賦值運算符左邊變量的類型為準,即賦值運算符右端值的類型向左邊變量的類型看齊,并進行相應(yīng)轉(zhuǎn)換。15、假設(shè)有語句sizeof(double),則它是()。A、一個整型表達式B、一個雙精度浮點型表達式C、一種函數(shù)調(diào)用D、一種函數(shù)定義標準答案:A知識點解析:sizeof(double)是C語言內(nèi)部規(guī)定的一個計算參數(shù)(double)在計算機的內(nèi)存中所占用的字節(jié)數(shù)量的函數(shù),它返回一個整數(shù)值。16、若變量都已正確說明,則以下程序段輸出結(jié)果為()。#includemain(){chara=‘a(chǎn)’;intb=2:printf(a>b?“***a=%d”:“###b=%d”,a,b);}A、***a=3B、###b=3C、***a=3##b==5D、全部錯誤標準答案:D知識點解析:本題考查printf函數(shù)的格式和三日運算符“?:”的使用。printf函數(shù)中格式說明符之前插入的任何字符都原樣輸出。本題中a>b為真,所以返回“***a=97”。17、若有以下定義(設(shè)int類型變量占2個字節(jié))inti=8,j=9;則以下語句:printf(“i=%%d,j=%%%d\n”,i,j);輸出的結(jié)果是()。A、i=8,j=9B、i=%d,j=%8C、i=%d,j=%dD、8,9標準答案:B知識點解析:本題考查printf函數(shù)的格式。printf函數(shù)中格式說明符之前插入的任何字符都按原樣輸出。對于printf函數(shù),有兩個%說明,第一個%后面的內(nèi)容要按原樣輸出。18、設(shè)a和b均為int型變量,且a=6,b=11,則能使值為3的表達式是()。A、b%(a%4)B、b%(a-a%5)C、b%a-a%5D、(b%a)-(a%4)標準答案:D知識點解析:表達式“a%b”表示的是求a除以b的余數(shù)。因此,選項A:(6%4)=2,11%2=1;選項B:(6-6%5)5,11%5=1;選項C:11%6-6%5=4;選項D:(11%6)-(6%4)=3。19、有關(guān)return語句說法不正確的是()。A、系統(tǒng)默認的返回值類型為整型,故當函數(shù)的返回值為int型時,在函數(shù)定義時,返回值的類型說明可以省略。B、當函數(shù)有返回值時,凡是允許表達式出現(xiàn)的地方,都可以調(diào)用該函數(shù)。C、當函數(shù)沒有返回值時,函數(shù)的返回值類型可以說明為void型,它表示“無類型”或“空類型”。D、函數(shù)的返回值類型必須與return語句中的表達式值的類型一致,但C語言也允許不同;這時,系統(tǒng)以函數(shù)定義時的返回值類型說明為準,并自動地將return語句中表達式的值轉(zhuǎn)換為函數(shù)的返回值類型。標準答案:D知識點解析:函數(shù)的返回值類型一般與return語句中的表達式值的類型一致,但C語言也允許不同;這時,系統(tǒng)以函數(shù)定義時的返回值類型說明為準,并自動地將return語句中表達式的值轉(zhuǎn)換為函數(shù)的返回值類型。20、有以下程序:#includemain(){inti=0,a=0;while(i<20){for(;;){if((i%5)==0)break;elsei--;}i+=13,a+=i;}printf(“%dkn”,a);}程序的輸出結(jié)果是()。A、62B、63C、23D、36標準答案:D知識點解析:本題考查while循環(huán)。當i<20時,進入while循環(huán)體,循環(huán)體內(nèi)的for循環(huán)實現(xiàn)的功能是,當i值是0或5的倍數(shù)時,執(zhí)行“i+=13;a+=i;”這兩條語句;若i值不是5的倍數(shù)則一直執(zhí)行for循環(huán)。①當i=0時,執(zhí)行i+=13;a+=i;i=13,a=13;②判斷i=13(20,進入wlhile循環(huán)體,i=10時,跳出for循環(huán),執(zhí)行i+=13;a+=i;i=23,a=36;⑨判斷i=23>20,循環(huán)結(jié)束。21、在下列選項中,沒有構(gòu)成死循環(huán)的程序段是()。A、inti=100;for(;;){i=i%10+1;if(i>10)break;}B、while(1);C、intk=0:do{++k;}while(k<=10);D、ints=12;while(s);--s:標準答案:C知識點解析:本題考查死循環(huán)的知識。選項A中,for循環(huán)沒有任何控制語句就會一直執(zhí)行下去,所以不可能通過控制表達式的值結(jié)束循環(huán)。循環(huán)體內(nèi),i=i%10+1這個表達式的值永遠小于10,所以永遠不會跳出循環(huán),是死循環(huán);選項B中,while中表達式永遠是非0,不會結(jié)束循環(huán);選項C中,當k>10時,結(jié)束循環(huán);選項D中,while(s);后面沒有任何表達式而是直接加了一個分號,會一直執(zhí)行,形成死循環(huán)。22、若已定義的函數(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ù)的形參標準答案:D知識點解析:本題考查函數(shù)調(diào)用的有關(guān)知識點。函數(shù)調(diào)用①可以出現(xiàn)在表達式中:②可以作為獨立的語句存在;③可以作為一個函數(shù)的實參。23、以下程序的輸出結(jié)果是()。#includemain(){inta=1,b=3;if((++a<0)&&!(b-<=0))printf(“%d,%d\n”,a,b);elsepfintf(“%d,%d\n”,b,a);}A、2,2B、1,3C、3,2D、3.1標準答案:C知識點解析:解答本題的關(guān)鍵在于if語句條件中的表達式。初始時a=1,b=3,所以++a=2>0,因此++a<0為假;因為是進行邏輯與(&&)運算,在&&的一個運算對象為假的前提下不用判斷第二個運算對象的真假,就可以直接得出整個表達式的值為邏輯0,所以執(zhí)行else語句。24、有以下程序:#includemain(){intx;scanf(“%d”,&x);if(x<=0);elseif(x!=5)printff“%d\n”,x);}程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果()。A、不等于5的整數(shù)B、大于0且不等5的整數(shù)C、大于0或等于5的整數(shù)D、小于5的整數(shù)標準答案:B知識點解析:題目中,雖然else和第二個if不在同一行上,但等價于在同一行上,因此,程序的意思是當x大于0且不等于5時將其打印出來。25、若執(zhí)行下述程序時,若從鍵盤輸入6和8,結(jié)果為()。main(){inta,b,s;scanf(“%d%d”,&a,&b);s=a:if(s=b)s*=s:printf(“%d”,s);}A、36B、64C、48D、以上都不對標準答案:B知識點解析:首先通過scanf函數(shù)把從鍵盤讀入的數(shù)據(jù)賦給變量a和b,if語句判斷如果a和b不等,執(zhí)行s=s*s=64。26、若運行時給變量x輸入12,則以下程序的運行結(jié)果是()。main(){int.x,y;scanf(“%d”,&x);y=x>127x+10:x-12;printf(“%d\n”,y);}A、0B、22C、12D、10標準答案:A知識點解析:本題考查三目運算符“?:”。表達式“x>127x+10:x-12”即,如果x>12成立,則x+10的值即為此表達式的值,否則x-12即為此表達式的值。因為x=12,所以x>12不成立,所以執(zhí)行v=x-12=0。27、運行下面程序時,從鍵盤輸入字母A,則輸出結(jié)果是()。#includemain(){charch;ch=getchar();switch(ch){case‘A’:printf(“AAAA\n”);case‘B’:printf(“BBBB﹨n”);default:printf(“CCCC\n”);}}A、AAAAB、AAAABBBBC、AAAABBBBCCCCD、AAAACCCC標準答案:C知識點解析:本題考查switch語句。因為ch=A,所以第一個switch語句,執(zhí)行case‘A’面的語句,輸出AAAA,沒有遇到break語句,所以接著再執(zhí)行case‘B’和default,分別輸出BBBB和CCCC。28、以下敘述正確的是()。A、只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句B、contiune語句的作用是結(jié)束整個循環(huán)的執(zhí)行C、在循環(huán)體內(nèi)使用break語句或continue語句的作用相同D、從多層循環(huán)嵌套中退出時,只能使用goto語句標準答案:A知識點解析:本題考查循環(huán)的4個知識點:①break語句可以出現(xiàn)在循環(huán)體內(nèi)及switch語句體內(nèi),不能用于其他的語句;②continue語句的作用是結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,而接著轉(zhuǎn)去判定循環(huán)條件是否成立,從而確定下一次循環(huán)是否繼續(xù)執(zhí)行,也就是說執(zhí)行contiune語句不會使整個循環(huán)終止;③在循環(huán)體內(nèi)使用break語句會使循環(huán)提前終止;④從多層循環(huán)嵌套中退出時,可以使用goto語句或者break語句。29、下列敘述中錯誤的是()。A、在C語言中,對二進制文件的訪問速度比文本文件快B、在C語言中,隨機文件以二進制代碼形式存儲數(shù)據(jù)C、語句FILEfp;定義了一個名為fp的文件指針D、C語言中的文本文件以ASCII碼形式存儲數(shù)據(jù)標準答案:C知識點解析:在C語言中,文件指針實際上是指向一個結(jié)構(gòu)體類型的指針,一般稱這個結(jié)構(gòu)體類型名為FILE,可以用此類型名來定義文件指針。定義文件類型指針變量的一般形式為:FILE*指針變量名;選項C中少了“*”,所以選項C錯誤。30、若輸入“abcdef”、“abdef”,以下程序的輸出結(jié)果為()。#include#includemain(){intn;chars1[20],s2[20],*p1,*p2;scanf(“%s”,s1);scanf(“%s”,s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf(“%d\n”,n);}A、-1B、0C、“abcdef”D、“abdef”標準答案:A知識點解析:本題考查兩個知識點:①字符串比較函數(shù)strcmp(s1,s2),若s1>s2,則返回1;若s1=s2,則返回0;若s131、以下語句定義正確的是()。A、inta[1][4]={1,2,3,4,5);B、floata[3][]={{1),{2},{3));C、longa[2][3]={{1),{1,2),{1,2,3),{0,0});D、doublea[][3]={0);標準答案:D知識點解析:本題考查的是如何對二維數(shù)組進行賦值。選項A中數(shù)組第二維的大小是4,但卻給賦了5個元素;選項B中C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達式而不可以省略第二個方括號中的常量表達式;選項C中數(shù)組第一維的大小是2,但是賦值卻超過了2;選項D中在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。32、下述程序的輸出結(jié)果是()。#includevoidmain(){inta[5]:{1,2,3,4,5};int*p=a,**q=&p;printf(“%d”,*(p++));printf(“%d”,**q);}A、22B、11C、34D、12標準答案:D知識點解析:程序首先定義了一個指向一維數(shù)組a的指針p,一個指向指針變量p的指針變量q,輸出*(p++)是先輸出*p即a[0]的值,再將指針p指向數(shù)組的下一個元素a[1],輸出**q是輸出指針p所指向單元的內(nèi)容,即a[1]的值。33、字符串“\\\”ABCDEF\“\\”的長度是()。A、11B、10C、5D、3標準答案:B知識點解析:本題涉及字符串的兩個最基本的概念。①字符串的長度是指字符串中字符的個數(shù),但不包含字符串結(jié)束符;②以反斜線“\”開頭的特殊字符序列,意思是把反斜線后面的字符序列轉(zhuǎn)換成特定的含義,而不是原來的含義,不包含在字符串長度之內(nèi),“\”連同后面的字符為一個長度。34、若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為()。A、j*m+iB、i*m+jC、j*m+i+1D、i*m+j+1標準答案:B知識點解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。35、下列程序的運行結(jié)果是()。#includevoidfun(int*s,int*p){staticintt=3;*p=s[t];t--;}voidmain(){inta[]={2,3,4,5},k,x;for(k=0;k<4;k++){fun(a,&x);printf(“%d,”,x);}}A、5,4,3,2,B、2,3,4,5,C、2,2,2,2,D、5,5,5,5,標準答案:A知識點解析:分析fun函數(shù)程序段,可知fun函數(shù)要實現(xiàn)的功能是將s中第(t+1)個元素以前的元素逆置賦給數(shù)組D。由于fun函數(shù)定義了靜態(tài)變量t=3,因此,在主函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)組x,最后輸出x數(shù)組。36、以下有關(guān)宏替換的敘述不正確的是()oA、雙引號中出現(xiàn)的宏名不替換B、使用宏定義可以嵌套C、宏定義僅僅是符號替換D、宏名必須用大寫字母表示標準答案:D知識點解析:_本題考查宏替換的規(guī)則。宏替換分為簡單的字符替換和帶參數(shù)的宏替換兩類。使用宏時應(yīng)注意以下幾點:①定義僅僅是符號替換,不是賦值語句,因此不做語法檢查;②為了區(qū)別程序中其他的標識符,宏名的定義通常用大寫字母,但不是必須用大寫:③雙引號中出現(xiàn)的宏名不替換:④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。37、設(shè)有定義:char*c;,以下選項中能夠使字符型指針c正確指向一個字符串的是()。A、charstr[]=“string”;c=str;B、scanf(“%s”,c);C、c=getchar();D、charstr[]=“string”;strcpy(“c,str”)標準答案:A知識點解析:在題目的題干中定義了字符指針變量c,在選項A中,首先定義字符數(shù)組str,然后再把字符數(shù)組str的首地址賦給字符指針變量c。所以選項A是正確的。在選項B中,應(yīng)改成scanf(“%s”,&C;在選項C中,getchar函數(shù)的返回值是用戶輸入的第一個字符的ASCII碼,如出錯返回-1,且將用戶輸入的字符回顯到屏幕.如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區(qū)中,等待后續(xù)getchar調(diào)用讀取。即c只能指向一個字符而不能指向字符串。在選項D中,strcpy函數(shù)只是將str字符串中的內(nèi)容賦給c,并沒有使其指向str,所以選項D是錯誤的。38、有以下程序:#include#includestructA{inta;charb[10];doublec;};voidf(structA*t);main(){structAa={1001,“ZhangDa”,1098.0};f(&a);printf(“%d,%s,%6.1f\n”,a.a(chǎn),a.b,a.c);}voidf(structA*t){t->a=1002;strcpy(t->b,“ChangRong”);t->c=1202.0;}程序運行后的輸出結(jié)果是()。A、1001.zhangDa,1098.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1002,zhangDa,1202.0標準答案:B知識點解析:本題主要考查是的函數(shù)調(diào)用時參數(shù)之間的傳遞問題。在C語言中參數(shù)之間的傳遞是傳值,也就是把實參的值復制一份傳遞給形參,而實參的值不發(fā)生變化。但對于指針調(diào)用來說,函數(shù)直接對實參的地址操作,因此在這種情況下實參變化。39、下述程序的輸出結(jié)果是()。#includevoidmain(){chara=1,b=2;charc=a^b<<2:pfintf(“﹨n%d”,c);}A、9B、10C、12D、2標準答案:A知識點解析:本題主要考查C語言最基本的算術(shù)運算“左移(<<)”和“異或(^)”?!白笠啤被颉坝乙啤边\算表達式的一般形式為:x<>n?!白笠?<<)”運算的規(guī)則是將x的二進制位全部向左移動n位,將左邊移動的高位舍棄,右邊空出的位補0;“右移(>>)”運算的規(guī)則是將x的二進制位全部向右移動n位,將右邊移動的高位舍棄,左邊高位空出要根據(jù)原來符號位的情況進行補充,對無符號數(shù)則補0,對有符號數(shù),若為正數(shù)則補0,若為負數(shù)則補1。“異或”運算是當兩個運算量的相應(yīng)位相同時結(jié)果為0,不相同時結(jié)果為1。b=2的二進制為(00000010)b<<2后為00001000,a=1的二進制為00000001,所以c=a^b<<2為00001001,轉(zhuǎn)化為十進制后為9。40、已知一個文件中存放若干工人檔案記錄,其數(shù)據(jù)結(jié)構(gòu)如下:structa{charnumber[100];intage;floatp[6];};定義一個數(shù)組:structanumber[10];假定文件已正確打開,不能正確地從文件中讀入10名工人數(shù)據(jù)到數(shù)組b中的是()。A、fread(b,sizeof(structa),10,fp);B、for(i=0;i<10;i++)fread(b[i],sizeof(structa),1,fp);C、for(i=0;i<10;i++)flead(b+i,sizeof(structa),1,fp);D、for(i=0;i<5;i+=2)fread(b+i,sezeof(structa),2,fp);標準答案:B知識點解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用格式為:fread(buffer,size,count,fp),其中:“buffer”是一個指針,對于fread來說,它是讀入數(shù)據(jù)的存放地址。“size”是要讀寫的字節(jié)數(shù);“count”是要進行讀寫多少個size字節(jié)的數(shù)據(jù)項;“fp”是指文件型指針。選項B)中b[i]是一個數(shù)組,不是指針,需改為&b[i]。三、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)41、數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、___________和處理過程。標準答案:數(shù)據(jù)存儲知識點解析:數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項,是數(shù)據(jù)的最小單位;數(shù)據(jù)結(jié)構(gòu),足若干數(shù)據(jù)項有意義的集合;數(shù)據(jù)流,可以是數(shù)據(jù)項,也可以是數(shù)據(jù)結(jié)構(gòu),表示某一處理過程的輸入或輸出:數(shù)據(jù)存儲,處理過程中存取的數(shù)據(jù),常常是手工憑證、手工文檔或計算機文件。42、_____________的目的是分析數(shù)據(jù)問內(nèi)在語義關(guān)聯(lián),在此基礎(chǔ)上建立一個數(shù)據(jù)的抽象模型。標準答案:數(shù)據(jù)庫概念設(shè)計知識點解析:數(shù)據(jù)庫概念設(shè)計的目的是分析數(shù)據(jù)間內(nèi)在語義關(guān)聯(lián),在此基礎(chǔ)上建立一個數(shù)據(jù)的抽象模型。43、下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為__________標準答案:3知識點解析:軟件系統(tǒng)結(jié)構(gòu)圖的寬度:整體控制跨度(最大模塊數(shù)的層)的表示。44、在兩種基本測試方法中,__________-測試的原則之一是保證所測模塊中每一個獨立路徑至少要執(zhí)行一次。標準答案:白盒知識點解析:白盒測試的基本原則是:保證所測模塊中每一獨立路徑至少執(zhí)行一次;保證所測模塊所有判斷的每一分支至少執(zhí)行一次;保證所測模塊每一循環(huán)都在邊界條件下至少執(zhí)行一次;驗證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。45、數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和二仆三線性結(jié)構(gòu),帶鏈的隊列屬于_______________。標準答案:線性結(jié)構(gòu)知識點解析:一個數(shù)據(jù)結(jié)構(gòu)是線性結(jié)構(gòu)還是非線性結(jié)構(gòu),判斷依據(jù)是數(shù)據(jù)結(jié)構(gòu)前后件關(guān)系的復雜程度,而與其所使用的存儲結(jié)構(gòu)是沒有關(guān)系的。在一個非空的隊列中,每一個元素只有一個前件和后件,因此它屬于線性結(jié)構(gòu)。四、填空題(本題共10題,每題1.0分,共10分。)46、當m=1,n=2,a=3,b=2,c=4時,執(zhí)行d=(m=a!=b)&&(n=b>C后,m的值為________。標準答案:1知識點解析:①“sizeof”、“%”、“>”、“<<”、“*=”運算符的優(yōu)先級順序為:“*=”→“>”→“<<”→“%”→“sizeof”;②位運算的優(yōu)先級順序為:“~”→“<<”→“>>”→“&”→“^”。(b=2)>(c=4)不成立,邏輯為假,所以n=0;(a=3)!=(b=2)成立,邏輯為真,所以m=1。47、若變量x、y已定義為int類型且x的值為33,y的值為3,請將輸出語句printf(__________,x/y1;補充完整,使其輸出的計算結(jié)果形式為:x/y=11。標準答案:”x/y=%d”知識點解析:本題考查printf語句的輸出格式。printf()函數(shù)是格式化輸出函數(shù),一般用于向標準輸出設(shè)備按規(guī)定格式輸出信息。在編寫程序時經(jīng)常會用到此函數(shù)。printf()函數(shù)的調(diào)用格式為:printf(“<格式化字符串>”,<參量表>)其中,格式化字符串包括兩部分內(nèi)容。一部分是正常字符,這些字符將按原樣輸出;另一部分是格式化規(guī)定字符,以“%”開始,后跟一個或幾個規(guī)定字符,用來確定輸出內(nèi)容格式。參量表是需要輸出的一系列參數(shù),其個數(shù)必須與格式化字符串所說明的輸出參數(shù)個數(shù)一樣多,各參數(shù)之間用“,”分開,且順序一一對應(yīng),否則將會出現(xiàn)不可意料的錯誤。48、若運行輸入:3<回車>:則以下程序的輸出結(jié)果是________。main(){inta,b;scanf(“%d”,&a);b=(a>=0)?a:-a;printf(“b=%d”,b);}標準答案:b=3知識點解析:條件表達式的基本格式為:“表達式17表達式2:表達式3”;其功能是:表達式1的值若非0,則計算表達式2的值,且為最終結(jié)果;若表達式1的值為0,則計算表達式3的值,且為最終結(jié)果。因為a=3,則a>=0成立,所以b=a=3。49、以下程序的運行結(jié)果是____________。#defineMAX(a,b)(a>b?a:b)+1main(){inti=6,j=8,k;printf(“%d\n”.MAX(ij));}標準答案:9知識點解析:本題考查的是條件運算符的應(yīng)用。帶參數(shù)的宏定義中定義的MAX函數(shù)的功能是選出a和b中較大的數(shù)然后加1;min()函數(shù)中顯然j比i大,所以輸出的是j加1后的值9。50、下面程序的運行結(jié)果是___________。#includemain(){inta,b,c,n;a=2;b=0;c=1;n=1;while(n<=3){c=c*a;b=b+c;++n;}printf(“b=%d”,b);}標準答案:b=14知識點解析:分析程序可知,n的初始值為1,因此,while(n<=3)循環(huán)3次。第1次:c=c*a=2;b=b+c=2;n=2。第2次:c=c*a=4;b=b+c=6;n=3。第3次:c=c*a=8;b=b+c=14。當n=4時,判斷條件不滿足,退出循環(huán)。51、以下程序的輸出結(jié)果是__________。#includemain(){inti=10,j=0;do{j=j+i;i--;}while(i>5);printf(“%d﹨n”j);}標準答案:40知識點解析:分析程序,初始時i=10,j=0,這時do循環(huán)中的“j=+i”語句計算結(jié)果為10,“i--”后i=9;滿足循環(huán)條件,繼續(xù)執(zhí)行循環(huán),j=j+i=10+9=19,i--后i=8;滿足循環(huán)條件,繼續(xù)循環(huán),j=j+i=19+8=27,i--后i=7,滿足i>5,繼續(xù)循環(huán),j=j+i=27+7=34,i--后i=6,繼續(xù)循環(huán),j=j+i=34+6=40,i--后i=5,此時不能滿足條件i>5,退出循環(huán),因此最后i的值為40。52、下列程序的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。例如,若輸入字符串123412132,輸入字符1,則輸出3,請?zhí)羁铡?include#include#defineM81inttim(char*ss,charC{inti=0;if(;_______________;ss++)if(*ss==Ci++;returni;}main(){chara[M],ch;printf(“hlPleaseenterastring:”);gets(a);printf(“knPleaseenterachar:”);ch=getchar();printf(“baThenumberofthecharis:%d﹨n”,fun(a,ch));}標準答案:*ss!=‘\0’知識點解析:本題考查的是指針的應(yīng)用。題目要求求出字符串ss中指定字符的個數(shù),分析整個程序,空缺處是檢驗指針ss是否指向了字符串的末尾,如沒有,即執(zhí)行下面語句,判斷指針ss指向的字符是否字符c,若是,i自加1;所以空缺處填入*ss!=‘\0’,作為循環(huán)終止的條件。53、以下程序是求矩陣a、b的和,結(jié)果存入矩陣c中,請?zhí)羁铡?includemain(){inta[4][4]={{1,2,6,7),{0,4,2,-8),{1,4,5,2},{2,4,6,8));intb[4][4]={{-4,0,7,9),{2,-7,7,4),{6,9,0,1),{8,8,6,5}};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=____________;for(i=0;i<4;i++)for(j=0;j<4;j++)printf(“%d”,c[i][j]);}標準答案:a[i][j]+b[i][j]知識點解析:求兩個矩陣的和只要將對應(yīng)元素相加即可。54、以下程序的輸出結(jié)果是__________。main(){char*p[]={“ABC”,”DEF”,“GHI”,“JKL”};inti;fbr(i=3;i>=0;i--,i--)printf(“%c”,*p[i]);}標準答案:JD知識點解析:第一次循環(huán),i=3,*p[3]=“JKL”,但因為是以“%c”格式輸出,只能輸出一個字符,所以只能輸出J。第二次循環(huán),i=1,*p[1]=“DEF”,同樣也只能輸出D。55、以下程序的功能是:從低位開始取出長整型變量S中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。請?zhí)羁铡?includemain(){longs,t,s1=10;printf(“﹨nPleaseenters:”);scanf(“%ld”,&s);t=s%10;while(s>0){s=s/100;t=__________;s1=s1*10;}printf(“Theresultis:%ldkn”,t);}標準答案:s%10*s1+t知識點解析:題日要求從低位開始取出長整型變量s中奇數(shù)位上的數(shù),設(shè)s為7654321,所要去除的為7531。s在每次循環(huán)均除以100,因此它的作用是將本次循環(huán)所需要得到的奇數(shù)位數(shù)放到最末一位,而要獲得該數(shù)僅需在此后將s對10取余,sl初始值為10,且在每次循環(huán)后均乘以10,因此可想到是為了將本次循環(huán)所獲得的奇數(shù)位數(shù)放到已有數(shù)的“前面”,即將上一步所得之數(shù)乘以s1,由于是逐次獲得奇次位數(shù),所以每次還要加上t的原值。國家二級(C語言)筆試模擬試卷第2套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、計算機系統(tǒng)的組成是______。A、主機、外設(shè)B、運算器、控制器C、硬件系統(tǒng)和軟件系統(tǒng)D、CPU、內(nèi)存儲器標準答案:4知識點解析:暫無解析2、能直接與CPU交換信息的功能單元是______。A、硬盤B、控制器C、主存儲器D、運算器標準答案:4知識點解析:內(nèi)存儲器又稱主存儲器,可直接實現(xiàn)與CPU間的信息交換。3、計算機軟件一般包括應(yīng)用軟件和____。A、字處理軟件B、系統(tǒng)軟件C、服務(wù)性軟件D、操作系統(tǒng)標準答案:2知識點解析:暫無解析4、在計算機系統(tǒng)中,一個字長的二進制位數(shù)為______。A、8B、16C、32D、由CPU型號決定標準答案:8知識點解析:字長是指微機能直接處理二進制信息的位數(shù),由CPU的類型和型號決定。5、算法是求解問題的方法,具有輸入、輸出、有窮性、確定性和______的特性。A、可行性B、計算性C、程序設(shè)計性D、檢索性標準答案:1知識點解析:操作的實現(xiàn)是用算法來描述的。算法就是解決問題的方法,它是由一個若干條指令組成的有窮序列,必須滿足的5個要素是:有窮性、確定性、輸入、輸出和可行性。6、設(shè)棧S的初始狀態(tài)為空,棧的容量為5,若入棧元素的順序是e1、e2、e3、e4、e5,則出棧元素的順序不可能是______。A、e1、e2、e3、e4、e5B、e5、e4、e3、e2、e1C、e2、e4、e3、e5、e1D、e3、e4、e1、e2、e5標準答案:8知識點解析:棧是僅在表頭和表尾進行插入和刪除元素操作的線性表,其特點是“先進后出”。本題中,進棧的過程中可以出棧。選項D中,如果第一個出棧的元素為e3,由于入棧順序是e1、e2、e3,那么e3出棧后,棧中元素必定有e1和e2,因為e1先入棧,故e1應(yīng)在e2后出棧,所以選項D是不可能的出棧順序。7、以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是______。A、隊列B、線性表C、二叉樹D、棧標準答案:4知識點解析:暫無解析8、編碼是指______。A、總體設(shè)計到詳細設(shè)計的過程B、用0、1代碼改寫詳細設(shè)計的結(jié)果C、用編程語言改寫詳細設(shè)計的結(jié)果D、上述都不對標準答案:4知識點解析:所謂“編碼”,是指把軟件設(shè)計的結(jié)果用計算機系統(tǒng)可以理解的形式表示出來。用于編碼的程序設(shè)計語言可以是計算機系統(tǒng)能夠直接理解的機器語言,也可以是必須通過匯編、編譯(或解釋)才能為計算機系統(tǒng)所理解的匯編語言或高級語言。9、軟件生命周期一般包括:軟件計劃期、開發(fā)期和軟件運行期。因此,在下述項目中,______不是軟件開發(fā)期的內(nèi)容。A、需求分析B、結(jié)構(gòu)設(shè)計C、程序編制D、性能優(yōu)化標準答案:8知識點解析:瀑布模型把軟件生命周期劃分為3個時期,時期又劃分為若干階段:①軟件定義期——問題定義和可行性研究;②軟件開發(fā)期——需求分析、總體設(shè)計、詳細設(shè)計、編碼和測試;③運行及維護階段——維護。所以,性能優(yōu)化不是軟件開發(fā)期所應(yīng)包含的內(nèi)容。10、數(shù)據(jù)的獨立性是指______。A、數(shù)據(jù)庫的數(shù)據(jù)相互獨立B、DBMS和DB相互獨立C、用戶應(yīng)用程序與數(shù)據(jù)庫的數(shù)據(jù)相互獨立D、用戶應(yīng)用程序與DBMS相互獨立標準答案:4知識點解析:修改數(shù)據(jù)庫的物理結(jié)構(gòu)或邏輯結(jié)構(gòu)時,通過兩級映像,可以使得應(yīng)用程序不必修改,保證數(shù)據(jù)的獨立性。數(shù)據(jù)的獨立性包括物理獨立性和邏輯獨立性。二、選擇題(1分)(本題共10題,每題1.0分,共10分。)11、若x為int類型變量,則執(zhí)行以下程序段后的x值是______。x=6;x+=x-=x*x;A、36B、-60C、60D、-24標準答案:2知識點解析:暫無解析12、設(shè)x,y均是int類型變量,則以下不正確的函數(shù)調(diào)用為______。A、getchar();B、putchar(’\108’);C、scanf("%d%*2d%d",&x,&y);D、putchar(’\’’);標準答案:2知識點解析:八進制中的基本數(shù)為0~7,不可能出現(xiàn)8。13、以下程序的輸出結(jié)果是______。main(){charc1=’6’,c2=’0’;printf("%d,%d,%d\n",c1,c2,c1-c2);}A、因輸出格式不合法,輸出出錯信息B、54,48,6C、6,0,7D、6,0,6標準答案:2知識點解析:本題printf語句輸出字符的ASCⅡ碼值(整型)。14、以下程序的輸出結(jié)果是______。#include<stdio.h>main(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%d",a,b);}A、6,1B、2,1C、6,0D、2,0標準答案:2知識點解析:在表達式的值作為邏輯值時,非0值一律為1,0值才為0。15、若有以下定義:chara;intb;floatc;doubled;則表達式a*b+d-c值的類型為______。A、floatB、intC、charD、double標準答案:8知識點解析:暫無解析16、在C語言中提供的合法的關(guān)鍵詞是______。A、swicthB、cherC、CaseD、default標準答案:8知識點解析:選項A應(yīng)為多分支語句中的switch,選項B應(yīng)為定義字符類型的char,選項C應(yīng)為多分支語句中的分支關(guān)鍵詞case(小寫)。因此,選項A、B、C都有書寫上的錯誤,只有選項D正確。17、下列變量說明語句中,正確的是______。A、chara=b=c;B、chara;b;c;C、intx;z;D、intx,z;標準答案:8知識點解析:同時說明多個變量為同一類型時,變量之間應(yīng)用逗號分隔。故D為正確選項。18、以下程序的輸出結(jié)果是______。inti=010,j=10;printf("%d,%d\n",++i,j--);A、11,10B、9,10C、10,10D、10,9標準答案:2知識點解析:在C語言中,以0開頭表示八進制數(shù),所以本題程序中010表示八進制數(shù)10,相當于十進制數(shù)8。因此i的初值為8,經(jīng)++i后,i的值為9。變量j經(jīng)j--后,變?yōu)?0,由于自減運算符在j的右側(cè),所以是先輸出j的值10后,再自減1。19、標有/$$$/的語句的執(zhí)行次數(shù)是______。inty,i;for(i=0;i<20;i++){if(i%2==0)continue;y+=i;/$$$/;}A、20B、19C、10D、9標準答案:4知識點解析:程序中標有/$$$/的語句y+=i在for循環(huán)中,由于該語句前面的條件語句使循環(huán)變量i在對2求余為0時就結(jié)束本次循環(huán),直接跳過標有/$$$/的語句,因此該語句執(zhí)行了10次。20、以下程序的輸出結(jié)果是______。main(){intm=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--);}A、7B、6C、5D、4標準答案:2知識點解析:注意自增和自減運算符在變量的左右側(cè)的不同用法。本題條件表達式m++>5,即5>5不成立,此時m=6,執(zhí)行else后面的語句,輸出6后再m--使得m又等于5了。三、選擇題(2分)(本題共30題,每題1.0分,共30分。)21、要正確定義并初始化一個數(shù)組a,它含有5個元素,則正確的語句是______。A、inta[5]=(0,0,0,0,0);B、inta[5]={};C、inta[]={0,0,0,0,0};D、inta[]={5*0};標準答案:4知識點解析:A項是錯誤的,賦值時用的是花括號而不是圓括號。B項錯在不能初始化時在花括號內(nèi)為空。D項錯在不可以用表達式對數(shù)組一一賦值。C項雖然沒有直接定義數(shù)組的大小,但是初始化時只賦了5個元素的值,系統(tǒng)會自動定義數(shù)組的大小為5,這種形式是正確的。22、若二維數(shù)組a有m列,且設(shè)a[0][0]位于數(shù)組的第一個位置上,則計算任意元素a[i][j]在數(shù)組中位置的公式為______。A、i*m+jB、j*m+iC、i*m+j-1D、i*m+j+1標準答案:8知識點解析:a[i][j]的位置應(yīng)該是第i+1行,第j+1列,那么它的位置是(i+1-1)*m+j+1=i*m+j+1。23、以下程序的輸出結(jié)果是______。main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[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);}A、69825B、59713C、6385D、693825標準答案:4知識點解析:p是指向字符的指針數(shù)組。執(zhí)行第1個循環(huán)后,p[0]指向字符數(shù)組ch的第1行"6937",p[1]指向字符數(shù)組ch的第2行"8254",那么p[0][0]其實就對應(yīng)著ch[0][0],表示第1行的第1個元素“6”。第2個循環(huán)中,外層i循環(huán)是控制指針數(shù)組p的,內(nèi)層j循環(huán)則是對每一行內(nèi)的各個元素進行處理,特別注意循環(huán)變量j的改變"j+=2"。這樣就可以看出是對ch[0][0]、ch[0][2]、ch[1][0]和ch[1][2]進行處理。24、以下程序的輸出結(jié)果是______。main(){char*s="121";intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-’\0’;continue;}b=b+s[k]-’\0’;a=a+s[k]-’\0’;}while(s[k+1]);printf("k=%da=%db=%d\n",k,a,b);}A、k=3a=98b=49B、k=3a=99b=50C、k=2a=99b=50D、k=2a=98b=49標準答案:4知識點解析:第1次循環(huán)中,k=1,不執(zhí)行if分支,s[k]=‘2’,因此b=2,a=2因s[k+1]=‘1’進入第2次循環(huán),k=2,執(zhí)行if分支,s[k]=‘1’,使a=3,進而提前結(jié)束本次循環(huán),s[k+1]=‘\0’,則退出循環(huán),所以k=2,a=3,b=2。25、執(zhí)行以下程序后輸出的結(jié)果是______。main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}A、-1B、1C、8D、0標準答案:8知識點解析:執(zhí)行第1次循環(huán)體,y--使得y=9,然后y減l后判斷條件為真,此時y=8。繼續(xù)執(zhí)行4次循環(huán),直到y(tǒng)=0時條件為假退出循環(huán),然后輸出y=0后再減1。因此輸出的結(jié)果為0。26、以下程序的運行結(jié)果是______。#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}A、運行后報錯B、66C、612D、55標準答案:1知識點解析:用指針變量p+5對指針變量q進行賦值的正確方法為p=q+5。27、下面程序的輸出結(jié)果是______。#include<stdio.h>main(){charch[7]={"12ab56"};inti,s=0;for(i=0;ch[i]>=’0’&&ch[i]<=’9’;i+=2)s=10*s+ch[i]-’0’;printf("%d\n",s);}A、1B、1256C、12ab56D、1256標準答案:1知識點解析:for語句中的條件表達式?jīng)Q定了循環(huán)體只執(zhí)行一次。因此s=0*10+1,于是輸出結(jié)果為1。28、設(shè)有以下程序段;inta[5]={0},*p,*q;p=a;q=a;則合法的運算是______。A、p+qB、p-qC、p*qD、p%q標準答案:2知識點解析:指向同一字符串的指針可以、也只能進行減運算,返回一個整型數(shù)。29、函數(shù)fun的返回值是______。fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!=’\0’)num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}A、字符串a(chǎn)的長度B、字符串b的長度C、字符串a(chǎn)和b的長度之差D、字符串a(chǎn)和b的長度之和標準答案:4知識點解析:本題首先通過第一個while循環(huán)計算字符串a(chǎn)的長度,再通過第二個while循環(huán),將字符串a(chǎn)和b相連,最后返回連接后的總長度。30、以下程序的輸出結(jié)果是______。main(){intx=10,y=10,i;for(i=0;x>8;y=++i)printf("%d%d",x--,y);}A、10192B、9876C、10990D、101091標準答案:8知識點解析:第1次循環(huán),i=0,x=10,y=10,先輸出x=10,y=10,再執(zhí)行x--使得x變?yōu)?,其次再執(zhí)行y=++i(i加1后參與賦值)使得y變?yōu)?:第2次循環(huán),i=1,x=9,y=1,先輸出x=9,y=1,再執(zhí)行x--使得x變?yōu)?,其次再執(zhí)行y=++i(i加1后參與賦值)使得y變?yōu)?。x=8,不滿足x>8,循環(huán)結(jié)束。31、以下正確的數(shù)組定義語句是______。A、inty[1][4]={1,2,3,4,5};B、floatx[2][]={{1},{2),{3}};C、longs[2][3]={{1},{1,2},<1,2,3}};D、doublet[][3]={0};標準答案:8知識點解析:A、B、C項均存在行或列上賦初值越界問題,所以都不正確。32、以下程序運行后,如果從鍵盤上輸入ABCDEF<回車>,則輸出結(jié)果為______。#include<stdio.h>#include<string.h>func(charstr[]){intnum=0;while(*(str+num)!=’\0’)num++;return(num);p}main(){charstr[10],*p=str;gets(p);printf("%d\n",func(P));}A、8B、7C、6D、5標準答案:4知識點解析:本題通過函數(shù)gets()從鍵盤接收一個字符串,并通過調(diào)用fune()函數(shù),統(tǒng)計串中字符的個數(shù)。33、若用數(shù)組名作為實參,則傳遞給形參的是______。A、數(shù)組的首地址B、數(shù)組第一個元素的值C、數(shù)組中全部元素的值D、數(shù)組元素的個數(shù)標準答案:1知識點解析:用數(shù)組名作為實參,調(diào)用函數(shù)只是把數(shù)組的首地址傳送給形參指針。34、以下程序的輸出結(jié)果是______。main(){chara[10]={’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’},*p;inti;i=8;p=a+i;printf("%s\n",p-2);}A、6B、789C、’6’D、6789標準答案:2知識點解析:p-2=a+8-2=a+5,則p指向a[6],則p指向7,所以輸出如B所示結(jié)果。35、若有以下的定義和語句:main(){inta[4][3]*p[4],j;for(j=0;j<4;j++)p[j]=a[j];}則能表示數(shù)組元素的表達式是______。A、*(p[1])B、a[4][3]C、a[1]D、*(p+4)[1]標準答案:1知識點解析:B項錯在越界,下標最大的元素只到a[3][2];C項錯在a[1]只表示第2行;*(p+4)[1]的錯誤也在于越界,p+4相當于a[4],實際上是不存在的。36、以下程序的輸出結(jié)果是______。main(){unsignedshorta=65536;intb;printf("%d\n",b=a);}A、0B、1C、2D、3標準答案:1知識點解析:65536等于2的16次方,而短整型無符號數(shù)的取值范圍為0~65535,65536已經(jīng)超出a的存儲范圍,將截取溢出了的最高第17位,低16位全部為0,因此把a賦值給b,得到的是剩余的16個0,所以b的值為0。37、以下程序運行后,輸出結(jié)果是______。fun(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));fun(&p,a);printf("%d\n",*p);}A、1B、7C、9D、11標準答案:4知識點解析:p是指向整型變量的指針,函數(shù)fun的第一個參數(shù)是指向指針變量的指針,調(diào)用時將p的地址傳給了形參s,函數(shù)體**s=p[1][1]使得s的內(nèi)容是p[1][1]的地址,即實參p里存放的是實參數(shù)組a[1][1]元素的地址,輸出時取指針運算則輸出元素a[1][1]=9。38、要把數(shù)組元素中的最大值放入a[0]中,則在if語句中的條件表達式應(yīng)該是______。main(){inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;for(i=0;i<10;i++,p++)if(______)*a=*p;printf("%d"t,*a);}A、p>aB、*p>a[0]C、*p>*a[0]D、*p[0p*a[0]標準答案:2知識點解析:p是指向整型的指針,初始指向數(shù)組a的首地址,a[0]本來就表示數(shù)組a的第1個元素,不是表示地址,因此選項C、D中的*a[0]是錯誤的。選項A語法上沒有錯,但是不合乎題意,沒有比較數(shù)組元素和指針變量p當前指向單元的內(nèi)容。39、有如下說明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達式是______。A、*p+9B、*(p+8)C、*p+=9D、p+8標準答案:2知識點解析:p是指向整型變量的指針,并賦初值指向了數(shù)組a的首地址,*p=1,選項A中*p+9=10;選項C中*p=*p+9=10。而p+8是指向數(shù)組a的第9個元素的地址,只有*(p+8)才是數(shù)組a的第9個元素。40、下列程序的輸出結(jié)果是______。intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&b);printf("%d\n,res);}A、4B、6C、8D、10標準答案:2知識點解析:實參a按地址傳遞,b是全局變量,函數(shù)func中b=b+*a=2+2=4,故主函數(shù)中res=res+4=2+4=6。41、在以下選項中,操作不合法的一組是______。A、intx[6],*p;p=&x[0];B、intx[6],*p;*p=x;C、intx[6],*p;p=x;D、intx[5],p;p=x[0];標準答案:2知識點解析:對于A和C都可使p指向數(shù)組x的首地址。D是把數(shù)組元素x[0]賦給p。42、設(shè)a=5,bc6,c=7,d=8,m=2,n=2,執(zhí)行(m=a>b)&&(n=c>b)后n的值為______。A、1B、2C、3D、4標準答案:2知識點解析:m=a>b的值為邏輯值0,n=c>b不被執(zhí)行,n的值仍為2。43、下面程序的輸出結(jié)果是______。voidprty(int*x){printf("%d\n",++*x);}main(){inta=25;prty(&a);}A、23B、24C、25D、26標準答案:8知識點解析:暫無解析44、TurboC將對以下程序______。main(){intx,y;y=creat(&x):printf("%d\n",y);}creat(inta){returna++;}A、編譯時會給出出錯信息B、順利進行編譯、連接、執(zhí)行,不報任何錯誤C、順利通過編譯、連接,但不能執(zhí)行D、順利通過編譯,但連接出錯標準答案:2知識點解析:本題傳送的實參是變量x的存儲地址,但程序會把它當做實際傳遞的值來處理,不會報錯。45、以下程序的輸出結(jié)果是______。structdate{long*a;structdate*next;doubleb;}too;printf("%d",sizeof(too));A、20B、16C、14D、12標準答案:8知識點解析:指針類型占2個字節(jié),雙精度型占8個字節(jié),因此sizeof(too)=2+2+8=1246、語句“printf("%d\n",12&012);”的輸出結(jié)果是______。A、12B、8C、6D、12標準答案:2知識點解析:012是八進制數(shù),轉(zhuǎn)換成十進制為10,12&10轉(zhuǎn)換成二進制為00001100&00001010=00001000,00001000轉(zhuǎn)換成十進制為8。47、下面程序的運行結(jié)果是______。main(){unsigneda=3,b=10;printf("%d\n",a<<2|b>>1);}A、3B、10C、13D、14標準答案:4知識點解析:本題考查移位運算和按位或運算,注意按位或運算時只要對應(yīng)的二進制位中有一個為1,結(jié)果為1;若都為0,結(jié)果為0048、設(shè)有以下宏定義:#defineN3#defineY(n)((N+1)*n)則執(zhí)行以下語句后,z的值為______。z=2*(N+Y(3+2));A、出錯B、34C、46D、54標準答案:2知識點解析:注意C語言中宏定義是先替換再參與運算,因此:z=2*(N+(N+1)*3+2)=2*(3+(3+1)*3+2)=34。49、若定義了以下函數(shù):voidf(...){*p=(double*)malloc(10*sizeof(double));}p是該函數(shù)的形參,要求通過p把動態(tài)分配存儲單元的地址傳回主調(diào)函數(shù),則形參p的正確定義應(yīng)當是______。A、double*pB、float**pC、double**pD、float*p標準答案:4知識點解析:從上面程序中對指針變量p值的定義可見,p所指單元的內(nèi)容又是一個地址,這個地址是申請分配內(nèi)存空間后的返回首地址,而分配的空間中又存放double型的數(shù)據(jù),因此p是指向指針的指針變量,通過兩層間接尋址對double型的數(shù)據(jù)操作,故正確答案應(yīng)該是選項C。50、下面程序的輸出結(jié)果是______。main(){enumteam{my,your=4,his,her=his+10};printf("%d%d%d%d\n",my,your,his,her);}A、0123B、04010C、04515D、14515標準答案:4知識點解析:本題考查枚舉型變量的定義及其賦初值。第一個變量默認為1,中間可任意賦值,賦值后其后面的變量依次加1。四、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)51、十進制數(shù)111用八位二進制數(shù)表示為【】。標準答案:1101111知識點解析:本題通過除2取余法即可求出十進制數(shù)111所對應(yīng)的二進制數(shù)1101111。52、對于一棵具有n個結(jié)點的樹,該樹中所有結(jié)點的度為【】。標準答案:n-1知識點解析:設(shè)該樹中所有結(jié)點的度為x,因為,在樹的結(jié)點中,除了根結(jié)點以外,其余結(jié)點都有一個分支進入,所以,n=x+1,所以x=n-1。53、瀑布模型將軟件生存周期劃分為【】、開發(fā)和運行3個階段。標準答案:計劃知識點解析:瀑布模型是B.W.Boehm于1976年提出的。它將軟件生存周期劃分為計劃、開發(fā)、運行3個時期,每個時期又分為若干個階段。54、關(guān)系可以有3種類型,即基本關(guān)系(又稱基本表或基表)、查詢表和【】。標準答案:視圖表知識點解析:關(guān)系數(shù)據(jù)庫中通常有3種關(guān)系,即基本關(guān)系(又稱基本表或基表)、查詢表和視圖表?;颈硎窃跈C器中實際存儲數(shù)據(jù)的表。查詢表是查詢的結(jié)果所對應(yīng)的臨時表。視圖表是由基本表或其他視圖表導出的表,是不實際存儲數(shù)據(jù)的表。視圖表是一個虛表。55、存儲300個16×16點陣的漢字信息需要【】字節(jié)。標準答案:800知識點解析:一個16x16點陣的字形碼需要16x16/8=32字節(jié)的存儲空間,所以300個漢字信息需要9600個字節(jié)。五、填空題(本題共13題,每題1.0分,共13分。)56、語句X++;、++X;、X=X+1;、X=1+X;,執(zhí)行后都使變量X中的值增1,請寫出一條同一功能的賦值語句(不得與列舉的相同)【】。標準答案:X+=1;知識點解析:在C語言中使變量增1的方法有:自增運算符與賦值語句。其中自增運算符有前置與后置方式,賦值語句也有兩種類型。本題中的主要增1方式有:X++;、++X;、X=X+1;、X=1+X;、X+=1;。57、設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達式【】。標準答案:Y%2=1或Y%2!=0知識點解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或不為0。本題具體做法如下:Y%2=1或Y%2!=0。58、下程序的輸出是【】。main(){charstr1[]="Howdoyoudo",*p1=str1;strcpy(str1+strlen(str1)/2,"esshe");printf("%s\n",p1);}標準答案:Howdoesshe知識點解析:strcpy(str1,s1):字符串拷貝函數(shù),作用是將字符串s1拷貝到字符數(shù)組str1中去。strlen(str):測試字符串str的長度,函數(shù)的值為字符串中實際長度,不包括’\0’在內(nèi)。本題中strlen(str1)的值為13,則strcpy(str1+strlen(str1)/2,"esshe");相當于strcpy(str1+6,"esshe");,因此可得答案為Howdoesshe。59、以上程序運行后的輸出結(jié)果是【】。main(){inti=10,j=0;do{j=j+i;i-;}while(i>2);printf("%d\n",j);}標準答案:52知識點解析:do...while語句的形式為:do{語句;}while(條件表達式)當條件表達式為非零時,繼續(xù)執(zhí)行循環(huán)體,直到條件表達式為零時退出循環(huán)。60、設(shè)有如下程序:main(){intn1,n2;scanf("%d",&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf("%d",n1);}}程序運行后,如果從鍵盤上輸入1298,則輸出結(jié)果為【】。標準答案:8921知識點解析:本題的程序的功能是將輸入的整數(shù)反向輸出。61、以下程序輸出的最后一個值是【】intff(intn){staticintf=1;f=f*n;returnf;}main(){inti;for(i=1;i<=5;i++)printf("%d\n",ff(i));}標準答案:120知識點解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點:①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運行期間都不釋放。②對靜態(tài)局部變量是在編譯時賦初值的,即只賦初值—次,在程序運行時它已有初值。以后每次調(diào)用函數(shù)時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值。③如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。(注意:C語言中的非靜態(tài)變量在定義時,系統(tǒng)并不會自動給它賦初值)④雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。本題中函數(shù)的功能是:與for語句一起求一個整數(shù)的階乘。62、以下函數(shù)的功能是求x的y次方,請?zhí)羁誨oublefun(doublex,inty){inti;doublez;for(i=1,z=x;i<y;i++)z=z*【】;}標準答案:x知識點解析:函數(shù)的定義形式為:函數(shù)類型函數(shù)名(形參表){類型說明語句;執(zhí)行語句;}本題中函數(shù)的功能是:累積變量以求捐變量的Y次方。63、下列程序的輸出結(jié)果是【】。main(){inta[]={2,4,6},*ptr=&a[0],x=8,y,z;for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(ptr+y):x;printf("%d\n",z);}標準答案:6知識點解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關(guān)系表達式(*(ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=2,所以z=2;當y=1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=4,所以z=4;當y=2時,*(Ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。64、以下程序運行后的輸出結(jié)果是【】。main(){chars[]="9876",*p;for(p=s;p<s+2;p++)printf("%s\n",p);}標準答案:9876876知識點解析:指針是一種數(shù)據(jù)類型,這種數(shù)據(jù)類型的變量用來存放內(nèi)存中分配的存儲單元的首地址。指針的定義:類型說明符*指針變量名;65、若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)while(s[i]){d[j]=【】;j++;}d[j]=0;標準答案:s[i++]知識點解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其所有元素。本題應(yīng)使用i的自增后置來實現(xiàn)。66、若有如下結(jié)構(gòu)體說明:structSTRU{inta,b;charc:doubled;structSTRU*p1,*p2;};請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個元素為該結(jié)

溫馨提示

  • 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

提交評論