版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷3(共9套)(共303題)國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是()。A、邏輯設(shè)計(jì)B、需求分析C、詳細(xì)設(shè)計(jì)D、物理設(shè)計(jì)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:軟件開發(fā)階段包括需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測(cè)試五個(gè)階段。其中,需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。2、對(duì)序線性表(23,29,34,55,60,70,78)用二分法查找值為60的元素時(shí),需要比較次數(shù)為()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:根據(jù)二分法查找法需要兩次:①首先將60與表中間的元素55進(jìn)行比較,由于60大于55,所以在線性表的后半部分查找。②第二次比較的元素是后半部分的中間元素,將60與表中間的元素70進(jìn)行比較,由于60小于70,所以在線性表的前半部分查找。③第三次比較的元素是前半部分的中間元素,即60,這時(shí)兩者相等,即查找成功。3、下列描述中,正確的是()。A、線性鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)B、棧與隊(duì)列是非線性結(jié)構(gòu)C、雙向鏈表是非線性結(jié)構(gòu)D、只有根結(jié)點(diǎn)的二叉樹是線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類型:線性結(jié)構(gòu)與非線性結(jié)構(gòu)。如果一個(gè)非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個(gè)條件:①有且只有一個(gè)根結(jié)點(diǎn);②每個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件。則稱該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu),又稱線性表。所以線性表、棧與隊(duì)列、線性鏈表都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。4、開發(fā)大型軟件時(shí),產(chǎn)生困難的根本原因是()。A、大型系統(tǒng)的復(fù)雜性B、人員知識(shí)不足C、客觀世界干變?nèi)f化D、時(shí)間緊、任務(wù)重標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:隨著計(jì)算機(jī)軟件規(guī)模的擴(kuò)大,軟件本身的復(fù)雜性不斷增加,研制周期顯著變長(zhǎng),正確性難以保證,軟件開發(fā)費(fèi)用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了人們難以控制軟件發(fā)展的局面,即所謂的“軟件危機(jī)”。5、兩個(gè)或兩個(gè)以上的模塊之間關(guān)聯(lián)的緊密程度稱為()。A、耦合度B、內(nèi)聚度C、復(fù)雜度D、連接度標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:耦合度是模塊間互相連接的緊密程度的度量;內(nèi)聚度是一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度的度量。6、下列關(guān)于線性表的敘述中,不正確的是()。A、線性表可以是空表B、線性表是一種線性結(jié)構(gòu)C、線性表的所有結(jié)點(diǎn)有且僅有一個(gè)前件和后件D、線性表是由n個(gè)元素組成的一個(gè)有限序列標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:線性表是一種線性結(jié)構(gòu),由n(ni>0)個(gè)元素組成,所以線性表可以是空表。但是在線性表中,第一個(gè)結(jié)點(diǎn)沒(méi)有前件,最后一個(gè)結(jié)點(diǎn)沒(méi)有后件,其他結(jié)點(diǎn)有且只有一個(gè)前件和后件,所以選項(xiàng)C)是錯(cuò)誤的。7、設(shè)有如下關(guān)系表:則下列操作正確的是()。A、T=I∪SB、T=R×SC、T=R∩SD、T=R∪S標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:T就是關(guān)系R中有的,同時(shí)S中也有的有序組(4、5、6),即交運(yùn)算(∩)。8、以下描述中,不是線性表順序存儲(chǔ)結(jié)構(gòu)特征的是()。A、可隨機(jī)訪問(wèn)B、需要連續(xù)的存儲(chǔ)空間C、不便于插入和刪除D、邏輯相鄰的數(shù)據(jù)物理位置上不相鄰標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:線性表的順序存儲(chǔ)是用一片連續(xù)的空間來(lái)存放數(shù)據(jù)元素,其特點(diǎn)是邏輯上相鄰的元素在物理位置上也相鄰。數(shù)據(jù)元素之間邏輯上的先后關(guān)系自動(dòng)隱含在物理位置的相鄰元素之中,因此不需要另外開辟空間來(lái)保存元素之間的關(guān)系。9、在三級(jí)模式之間引入兩層映像,其主要功能之一是()。A、使數(shù)據(jù)與程序具有較高的獨(dú)立性B、使系統(tǒng)具有較高的通道能力C、保持?jǐn)?shù)據(jù)與程序的一致性D、提高存儲(chǔ)空間的利用率標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)管理系統(tǒng)在數(shù)據(jù)庫(kù)的三級(jí)模式之間提供了兩層映像,保證了數(shù)據(jù)庫(kù)中數(shù)據(jù)的較高的邏輯獨(dú)立性和物理獨(dú)立性。10、下列方法中,屬于白盒法設(shè)計(jì)測(cè)試用例的方法的是()。A、錯(cuò)誤推測(cè)B、因果圖C、基本路徑測(cè)試D、邊界值分析標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:白盒測(cè)試方法也稱為結(jié)構(gòu)測(cè)試或邏輯測(cè)試,主要方法有邏輯覆蓋測(cè)試、基本路徑測(cè)試等。11、在C語(yǔ)言中,以下說(shuō)法不正確的是()。A、在C程序中,整數(shù)和實(shí)數(shù)都能被準(zhǔn)確無(wú)誤地表示出來(lái)B、在C程序中,任何一個(gè)變量名都代表存儲(chǔ)器中的一個(gè)位置C、靜態(tài)變量的生存期與整個(gè)程序的運(yùn)行期相同D、C語(yǔ)言中,任何變量都必須先聲明才能進(jìn)行引用標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查C語(yǔ)言的基本概念。變量的實(shí)質(zhì)就是在內(nèi)存中占據(jù)一定的存儲(chǔ)單元,存儲(chǔ)單元里存放的是該變量的值,變量的值可以根據(jù)需要進(jìn)行修改;整數(shù)在允許的范圍內(nèi)可以準(zhǔn)確的表示出來(lái),但不可能表示無(wú)限度的實(shí)數(shù)。12、以下關(guān)于C語(yǔ)言數(shù)據(jù)類型的敘述中正確的是()。A、C基本數(shù)據(jù)類型包括:分為整型、實(shí)型、浮點(diǎn)型、字符型四種B、實(shí)型常量的表達(dá)方式包括十進(jìn)制形式、十六進(jìn)制形式、二進(jìn)制形式、八進(jìn)制形式、指數(shù)形式C、若要處理如“人員信息”等含有不同類型的相關(guān)數(shù)據(jù),應(yīng)自定義結(jié)構(gòu)體類型D、若只處理“真”和“假”兩種邏輯值,應(yīng)使用邏輯類型標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C基本數(shù)據(jù)類型包括:分為整型、實(shí)型、枚舉型、字符型四種,實(shí)型就是浮點(diǎn)型,實(shí)型數(shù)據(jù)只有十進(jìn)制,沒(méi)有2、8、16進(jìn)制表達(dá),在C語(yǔ)言中沒(méi)有定義邏輯類型,而是一般用0代表假,用非零代表真。13、以下標(biāo)識(shí)符不是關(guān)鍵字的是()。A、breakB、char。C、SwitchD、return標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查標(biāo)識(shí)符和關(guān)鍵字的概念。需要注意的是C語(yǔ)言是區(qū)分大小寫的,“switch”是關(guān)鍵字,但“Switch”不是關(guān)鍵字。14、下列選項(xiàng)中,不能作為合法常量的是()。A、1.234e04B、1.234e0.4C、1.234e+4D、1.234e0標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:用指數(shù)形式表示的實(shí)型常量需注意兩點(diǎn):①e或E后面的指數(shù)必須是整數(shù);②指數(shù)必須是不超過(guò)數(shù)據(jù)表示范圍的正負(fù)整數(shù),并且在e或E前必須有數(shù)字。15、有以下程序:#include<stdio.h>main(){┋while(getchar()!=’\n’);┋}以下敘述中正確的是()。A、此while語(yǔ)句將無(wú)限循環(huán)B、getchar()不可以出現(xiàn)在while語(yǔ)句的條件表達(dá)式中C、當(dāng)執(zhí)行此while語(yǔ)句時(shí),只有按回車鍵程序才能繼續(xù)執(zhí)行D、當(dāng)執(zhí)行此while語(yǔ)句時(shí),按任意鍵程序就能繼續(xù)執(zhí)行標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:根據(jù)程序順序執(zhí)行的次序,當(dāng)程序執(zhí)行到while這條語(yǔ)句,根據(jù)while語(yǔ)句中的結(jié)束循環(huán)的條件是“輸入回車鍵時(shí),結(jié)束循環(huán)”,所以當(dāng)按回車鍵后,程序才執(zhí)行while語(yǔ)句的下一條語(yǔ)句。16、下列敘述中正確的是()。A、調(diào)用printf()函數(shù)時(shí),必須要有輸出項(xiàng)B、使用putchar()函數(shù)時(shí),必須在之前包含頭文件stdio.hC、在C語(yǔ)言中,整數(shù)可以以二進(jìn)制、八進(jìn)制或十六進(jìn)制的形式輸出D、調(diào)用getchar()函數(shù)讀入字符時(shí),可以從鍵盤上輸入字符所對(duì)應(yīng)的ASCII碼標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:選項(xiàng)A),若printf函數(shù)沒(méi)有輸出項(xiàng),且格式字符串中不含格式信息,則輸出的是格式字符串本身,若格式字符串含有格式信息,運(yùn)行時(shí)則出現(xiàn)錯(cuò)誤提示;選項(xiàng)C),在C語(yǔ)言中,整數(shù)可以以十進(jìn)制、八進(jìn)制或十六進(jìn)制的形式輸出;選項(xiàng)D),getchar函數(shù)是從標(biāo)準(zhǔn)輸入設(shè)備讀取一個(gè)字符。17、執(zhí)行以下程序段后,w的值為()。intw=’A’,x=14,y=15;w=((x‖y)&&(w<’a’));A、-1B、NULLC、1D、0標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:字符變量w的初值為字符“’A’”,其ASCII碼值為65,字符“’A’”的ASCII碼值為97,所以關(guān)系表達(dá)式“W<’a’”的值為1;變量x=14,變量y=15,“x‖y”為或,x、y均為真,所以x‖y的結(jié)果1。因而邏輯表達(dá)式“(x‖y)&&(w<’a’)”的值為1。18、設(shè)有定義:“l(fā)ongx=123450L;”,則以下能夠正確輸出變量x的是()。A、printf("x=%d\n",x);B、printf("x=%id\n",x);C、printf("x=%d\n",x);D、printf("x=%ld\n",x);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,輸出long型數(shù)值的格式符為%ld。19、已有定義“inta=3:”和輸出語(yǔ)句“printf("%8x".a(chǎn));”,a);”以下正確的敘述是()。A、整型變量的輸出格式符只有%d一種B、%x是格式符的一種,它可以適用于任何一種類型的數(shù)據(jù)C、%x是格式符的一種,其變量的值按十六進(jìn)制數(shù)輸出,但%8x是錯(cuò)誤的D、%8x是正確的格式符,其中數(shù)字8規(guī)定了輸出字段的寬度標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查printf函數(shù)的格式?!埃?x”表示以十六進(jìn)制無(wú)符號(hào)形式輸出整型數(shù)據(jù)?!?”表示指定輸出數(shù)據(jù)的寬度為8位。20、若有定義“intx,y;”并已正確給變量賦值,則下列選項(xiàng)中與表達(dá)式“(x-y)?(x++):(y++)”中的條件表達(dá)式“(x-y)”等價(jià)的是()。A、(x-y>0)B、(x-y<0)C、(x=y<0‖x-y>0)D、(x-y==0)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:條件表達(dá)式的形式如下:“表達(dá)式1?表達(dá)式2:表達(dá)式3”。其含義為當(dāng)“表達(dá)式1”的值為非零時(shí),求出“表達(dá)式2”的值,此時(shí)“表達(dá)式2”的值就是整個(gè)條件表達(dá)式的值;當(dāng)“表達(dá)式1”的值為零時(shí),則求“表達(dá)式3”的值,這時(shí)“表達(dá)式3”的值就是整個(gè)表達(dá)式的值。本題條件表達(dá)式的執(zhí)行順序是先求解表達(dá)式“x-y”的值,若其值為非0(可以是正數(shù),也可以是負(fù)數(shù)),則再求表達(dá)式“x++”的值,其值就是條件表達(dá)式的值;若表達(dá)式“x-y”的值為0,則再求表達(dá)式“y++”的值,其值就是條件表達(dá)式的值。因此,本題的答案為選項(xiàng)C)。21、若a、b、c、d都是int型變量且都已經(jīng)正確賦初值,則以下不正確的賦值語(yǔ)句是()。A、a+d:B、a++;C、a=b=c=d=100;D、a=(b=3)+(d=5);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,賦值號(hào)的右邊可以是一個(gè)賦值表達(dá)式,因此選項(xiàng)C)、選項(xiàng)D)正確;在選項(xiàng)B)中,a++是一個(gè)自加1的表達(dá)式,a被重新賦值,因此它是一個(gè)合法的賦值表達(dá)式;選項(xiàng)A)中,a+d是一個(gè)算術(shù)表達(dá)式,雖然最后有一個(gè)分號(hào),但這個(gè)表達(dá)式中沒(méi)有賦值操作,因此它不是一條賦值語(yǔ)句。22、有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(xiàn)(a++,b++));}程序運(yùn)行后的輸出結(jié)果是()。A、12B、15C、16D、20標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是編譯預(yù)處理命令以及自加運(yùn)算符?!癋(a++,b++)”先取a和b的值,參加運(yùn)算,再把a(bǔ)和b的值分別加1,所以“F(a++,b++)-F(3,4)=3*4=12”。23、以下是while語(yǔ)句的基本形式:while(表達(dá)式){語(yǔ)句;>其中“表達(dá)式”()。A、必須是邏輯表達(dá)式B、必須是關(guān)系表達(dá)式C、必須是邏輯表達(dá)式或關(guān)系表達(dá)式D、可以是任意合法的表達(dá)式標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查while表達(dá)式。while(表達(dá)式)中的表達(dá)式可以為任何合法的表達(dá)式,一般情況下為邏輯、條件表達(dá)式,需要注意的是,當(dāng)?shù)忍?hào)(==)誤寫為賦值號(hào)(=)時(shí)不會(huì)報(bào)錯(cuò)的,但是其值恒為1。24、有以下程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++;switch(b%2){defaut:m++;case0:m++;break;}}pfintf("%d\n",m);}程序運(yùn)行后的輸出結(jié)果是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查switch語(yǔ)句。因?yàn)椤癮=6”,所以“a%2=0”,因此第一個(gè)switch語(yǔ)句,執(zhí)行“case0”,將m加1,遇到break語(yǔ)句跳出switch語(yǔ)句,輸出m值為2。25、有以下程序#include<stdio.h>intfun(inta,intb){if(b=0)returna;elsereturn(fun(--a,--b));}main(){printf("%d\n",fun(4,2));}程序的運(yùn)行結(jié)果是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由程序可知,函數(shù)fun(inta,intb)是一個(gè)遞歸函數(shù)。所以當(dāng)主函數(shù)中調(diào)用“fun(4,2)”時(shí),其執(zhí)行過(guò)程如下“fun(4,2)->fun(3,1)->fun(2,0)”,其返回值為2。所以正確答案為選項(xiàng)B)。26、關(guān)于字符常量,以下敘述正確的是()。A、空格不是一個(gè)字符常量B、字符常量能包含大于一個(gè)的字符C、單引號(hào)中的大寫字母和小寫字母代表的是相同的字符常量D、所有的字符常量都可以作為整型量來(lái)處理標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查字符常量的4個(gè)知識(shí)點(diǎn):①空格是一個(gè)字符常量,而且單引號(hào)中的空格不可以省略:②字符常量只能包含一個(gè)字符;③單引號(hào)中的大寫字母和小寫字母代表的是不相同的字符常量;④所有的字符常量都作為整型量來(lái)處理,在計(jì)算機(jī)內(nèi)部,其對(duì)應(yīng)的整數(shù)值就是ASCH碼值。27、下面函數(shù)調(diào)用語(yǔ)句含有實(shí)參的個(gè)數(shù)為()。func((exp1,exp2),(exp3,exp4,exp5));A、1B、2C、3D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用時(shí)的實(shí)參形式。這里有一個(gè)逗號(hào)運(yùn)算的考查,(a,b)的運(yùn)算結(jié)果為b,因而只有一個(gè)值,結(jié)合func的調(diào)用形式,可以知道實(shí)參的個(gè)數(shù)只有2個(gè)。28、有以下程序#include<stdio.h>voidmain(){intn=2,k=1;while(!(k>0‖n++));printf("%d%d\n",k,n);}程序運(yùn)行后的輸出結(jié)果是()。A、02B、13C、57D、12標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在程序中整型變量n的初始值等于2,整型變量k的初始值等于1,在執(zhí)行while語(yǔ)句時(shí),由于表達(dá)式k的值大于0為真,所以不再需要判斷“n++”是否為真,“(k>0‖n++)”表達(dá)式的值為真?!?(k>0‖n++)”表達(dá)式的值為假,所以while語(yǔ)句中的條件不滿足,循環(huán)語(yǔ)句不會(huì)執(zhí)行,變量n的值也不會(huì)加1,所在輸出變量k和n的值是1和2。29、以下不正確的定義語(yǔ)句是()。A、doublex[5]={1.0,2.0,3.0,4.0,5.0};B、inty[5]={0,1,2,3,4,5};C、charc1[]={’1’,’2’,’3’,’4’,’5’};D、charc2[]={’a’,’b’,’c’};標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查對(duì)一維數(shù)組的賦值。選項(xiàng)B)中,y[5]說(shuō)明數(shù)組中有5個(gè)元素,但卻給它賦了6個(gè)值,數(shù)組溢出所以是錯(cuò)誤的。30、若有以下定義,則對(duì)數(shù)組元素的正確引用是()。inta[5],*p=a;A、*&a[5]B、(*a)+2C、*p+4D、*(a+2)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查通過(guò)指針引用數(shù)組元素。選項(xiàng)A)、C)沒(méi)有這種引用形式:選項(xiàng)B),(*a)+2與*a+2相同,表示第一個(gè)元素的值加2;選項(xiàng)D),*(a+2)引用數(shù)組的第3個(gè)元素。31、下列字符數(shù)組初始化語(yǔ)句中,不正確的是()。A、charc[]=’goodmoming’;B、charc[20]="goodmorning";C、charc[]={’a’,’b’,’c’,’d’};D、charc[]={"tgoodmoming"};標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查兩個(gè)概念。①用單引號(hào)括起來(lái)的一個(gè)字符常量只能存放一個(gè)字符:②C語(yǔ)言中沒(méi)有字符串變量,只能用字符數(shù)組來(lái)存儲(chǔ)字符串。選項(xiàng)A)中一個(gè)單引號(hào)內(nèi)存放了若干個(gè)字符,是錯(cuò)誤的;選項(xiàng)B)和選項(xiàng)D)中將一個(gè)字符串賦值給一個(gè)字符數(shù)組是允許的。32、下列程序的運(yùn)行結(jié)果為()。#include<stdio.h>voidabe(char*str){inta,b,j;for(i=j=0;str[i]l=’\0’;i++)if(str[i]!=’a’)str[j++]=str[i];str[j]=’\0’;}voidmain(){charstr[]="abcdef";abc(str);printf(“str[]=%s",str);}A、str[]=bcdefB、str[]=abcdefC、str[]=aD、str[]=ab標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用的參數(shù)傳遞。通過(guò)函數(shù)abc的執(zhí)行,將字符串中的字母a去掉,保留剩下的,由于是通過(guò)指針調(diào)用,所以改變了字符串的結(jié)果。33、閱讀下面程序,程序執(zhí)行后的結(jié)果為()。#include"stdio.h"main(){char*str="abcdefghijklmnopq";while(*str++!=’e’);printf("%c\n".*str);}A、fB、aC、eD、q標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查的是取內(nèi)容運(yùn)算符“*”和自加運(yùn)算符“++”的優(yōu)先級(jí)問(wèn)題。由于“++”的優(yōu)先級(jí)高于“*”,所以題干中“*str++!=’e’”,即“*(str++)!=’e’”,當(dāng)str指向字符“’e’”時(shí),while循環(huán)的條件不成立,但“str”已經(jīng)進(jìn)行了自加指向了字符“’f’”,所以“*str”輸出字符“’f’”。34、設(shè)有如下的程序段:charstr[]="HelloWorld";char*ptr;ptr=str;執(zhí)行上面的程序段后,“*(ptr+10)”的值為()。A、’\0’B、’0’C、不確定的值D、’0’的地址標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題涉及字符數(shù)組和指針兩個(gè)知識(shí)點(diǎn):①在C語(yǔ)言中,字符數(shù)組在存放字符串時(shí)會(huì)自動(dòng)在末尾加上“’\0’”,所以題中數(shù)組str有11個(gè)元素:②ptr指向數(shù)組str的首地址,“ptr+10”是指向“str[10]”,“*(ptr+10)”是引用str[10]的值(即結(jié)束符“’\0’”)。35、下述語(yǔ)句中,在字符串s1和s2相等時(shí)顯示“theyareEqual”的是()。A、if(*s1==*s2)puts("theyareEqual");B、if(!strcmp(s1,s2))puts("theyareEqual");C、if(s1==s2)Puts("theyareEqual");D、if(strcmp(s1,s2))puts("theyareEqual");標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:字符串比較不能用兩個(gè)等號(hào)(==)來(lái)進(jìn)行比較,應(yīng)使用“strcmp(s1,s2)”函數(shù)來(lái)比較。“strcmp(s1,s2)”函數(shù)的功能是:當(dāng)字符串s1和s2相等時(shí),返回值為0,因此,當(dāng)表達(dá)式“!strcmp(s1,s2)==1”時(shí),條件成立,執(zhí)行后面的語(yǔ)句,輸出“theyareEqual”。36、設(shè)有定義:structcomplex{intreal,unreal;}data1={1,8},data2;則以下賦值語(yǔ)句中錯(cuò)誤的是()。A、data2={data1.real,data1.unreal};B、data2=(2,6);C、data2.real=data1.real;D、data2->real=data1.unreal;標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題主要考查結(jié)構(gòu)體變量的定義與初始化。題目中定義了complex類型的結(jié)構(gòu)體變量data1和data2,并對(duì)datal進(jìn)行了初始化??梢杂靡粋€(gè)結(jié)構(gòu)體變量的成員對(duì)另一個(gè)結(jié)構(gòu)體變量的成員賦值。37、以下程序的輸出結(jié)果是()。#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}A、11,42,3112,22,41B、11,41,2012,42,20C、11,21,4011,21,21D、11,41,2112,42,22標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查的是函數(shù)參數(shù)的傳遞及自加運(yùn)算符。主函數(shù)中第一次調(diào)用函數(shù)“prt(&a,&b,&c);”,此函數(shù)中的輸出語(yǔ)句“printf("%d,%d,%d\n”,++*x,++*y,*(z++));”使得a和b的值均加1,而“*(z++)”由于先執(zhí)行“z++”,所以c的值不變;第二次調(diào)用函數(shù)“ptr(&a,&b,&c);”使得a和b在上一次的基礎(chǔ)上再各自加1(因?yàn)樾螀⒑蛯?shí)參進(jìn)行的是地址傳遞),而c的值仍不變。38、設(shè)有以下說(shuō)明,則不正確的敘述是()。unionun{inta;charb:floatc;}arr;A、arr所占的內(nèi)存長(zhǎng)度等于成員c的長(zhǎng)度B、arr的地址和它的各成員的地址都是同一地址C、arr可以作為函數(shù)參數(shù)D、不能在定義air時(shí)對(duì)它初始化標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題主要考查聯(lián)合體的內(nèi)存使用:聯(lián)合體所占用的內(nèi)存空間為最長(zhǎng)的成員所占用的空間,int占2個(gè)字節(jié),char占1個(gè)字節(jié),float占4個(gè)字節(jié),所以arr所占的內(nèi)存長(zhǎng)度等于成員c的長(zhǎng)度;arr的地址和它的各成員的地址都是同一地址;不能直接對(duì)arr賦值,即不能在定義arr時(shí)對(duì)它初始化:art也不可以作為函數(shù)參數(shù)。39、若x=4,y=5,則x&y的結(jié)果是()。A、0B、4C、3D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題主要考查按位與運(yùn)算的知識(shí)點(diǎn)。按位與是對(duì)兩個(gè)運(yùn)算量相應(yīng)的位進(jìn)行邏輯與,“&”的規(guī)則和邏輯與“&&”相同。x=4的二進(jìn)制為00000100,y=5的二進(jìn)制為00000101,x&y=00000100,轉(zhuǎn)化為十進(jìn)制即為4。二、程序填空題(本題共1題,每題1.0分,共1分。)40、給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中,刪除所有串長(zhǎng)超過(guò)k的字符串,函數(shù)返回所剩字符串的個(gè)數(shù)。ss所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串長(zhǎng)小于M。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<string.h>#defineN5#defineM10intfun(char(*ss)[M],intk)(inti,j=0,len;/**********found**********/for(i=0;i<___1___;i++){len=strlen(ss[i]);/**********found**********/if(len<=___2___)/**********found**********/strcpy(ss[j++],___3___);}returnj;}main(){charx[N][M]={"Beijing","Shanghai","Tianjing","Nanjing","Wuhan"};inti,f;printf("\nTheoriginalstring\n\n");for(i=0;i<N;i++)puts(x[i]);printf("\n");f=fun(x,7);printf("Thestringwitchlengthislessthanorequalto7:\n");for(i=0;i<f;i++)puts(x[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)N(2)k(3)ss[i]知識(shí)點(diǎn)解析:本題中函數(shù)fun的功能是在形參ss所指字符串?dāng)?shù)組中,刪除所有串長(zhǎng)超過(guò)k的字符串,然后函數(shù)返回所剩字符串的個(gè)數(shù)。根據(jù)題意,在fun函數(shù)中,利用for循環(huán)比較字符串長(zhǎng)度是否小于k,然后利用sWcpy函數(shù)組成新的可用字符串?dāng)?shù)組,將可用的字符串?dāng)?shù)組的長(zhǎng)度值進(jìn)行返回,即為字符串的個(gè)數(shù)。第一空:“for(i=0;i<___1___;i++)”,這一空部分出現(xiàn)在fun函數(shù)中的for循環(huán)條件中,在定義了i之后i的條件。根據(jù)for后面的語(yǔ)句我們可以看出,這里是要進(jìn)行比較,比較對(duì)象是ss所指字符串?dāng)?shù)組的所有字符串,所以這里循環(huán)要進(jìn)行整改字符串?dāng)?shù)組的長(zhǎng)度,相應(yīng)的,這里for循環(huán)的循環(huán)條件就要是i小于字符串長(zhǎng)度,而字符串長(zhǎng)度開始就有定義,為N,所以這里應(yīng)該是i<N,這一空應(yīng)該填N。第二空:“if(len<=___2___)”,這一空部分出現(xiàn)在fun函數(shù)中,是for循環(huán)中if條件語(yǔ)句的條件,這根據(jù)if條件語(yǔ)句后面的語(yǔ)句我們可以知道,這里的條件語(yǔ)句是后面strcpy的執(zhí)行條件,而strcpy要執(zhí)行,根據(jù)題目給出的條件我們可以知道是要字符串長(zhǎng)度小于等于k才能保留,所以這里的if條件語(yǔ)句中的條件應(yīng)該是字符串長(zhǎng)度小于k,所以這一空應(yīng)該填k。第三空:“strcpy(ss[j++]___3___);”這一空部分出現(xiàn)在strcpy函數(shù)中,此函數(shù)為字符串復(fù)制函數(shù),是將后面的一個(gè)字符串復(fù)制到前面一個(gè)字符數(shù)組中去,根據(jù)題意和前面的條件語(yǔ)句,這一行語(yǔ)句是要將符合條件的字符串重新組成一個(gè)新的字符串?dāng)?shù)組,然后返回新數(shù)組的長(zhǎng)度,這樣的話就能知道ss啪為新字符串?dāng)?shù)組,而這里要復(fù)制的就是原字符串?dāng)?shù)組中符合條件的字符串,所以這里要填就是前面符合條件的i所對(duì)應(yīng)的字符串,所以這一空應(yīng)該填ss[i]。三、程序修改題(本題共1題,每題1.0分,共1分。)41、給定程序MODI1.C中函數(shù)fun的功能是:統(tǒng)計(jì)字符串中各元音字母(即:A、E、I、O、U)的個(gè)數(shù)。注意:字母不分大、小寫。例如:若輸入:THIsisaboot,則輸出應(yīng)該是:1、0、2、2、0。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>voidfun(char*s,intnum[5]){intk,i=5;for(k=0;k<i;k++)/**********found**********/num[i]=0;for(;*s;s++){i=-1;/**********found**********/switch(s)(case’a’:case’A’:{i=0;break;}case’e’:case’E’:{i=1;break;}case’i’:case’I’:{i=2;break;}case’o’:case’O’:{i=3;break;}case’u’:case’U’:{i=4;break;}}if(i>=0)num[i]++;}}main(){chars1[81];intnum1[5],i;printf("\nPleaseenterastring:");gets(s1);fun(s1,num1);for(i=0;i<5;i++)printf("%d",num1[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)num[k]=0;(2)switch(*s)知識(shí)點(diǎn)解析:本題中函數(shù)的功能是統(tǒng)計(jì)字符串中各元音字母(即A、E、I、O、U)的個(gè)數(shù)。其中,本題在while循環(huán)中采用switch-case條件判斷字符串中的每一個(gè)字符并進(jìn)行統(tǒng)計(jì)。(1)第一個(gè)標(biāo)識(shí)下的for循環(huán)過(guò)程是將num數(shù)組中的變量初始值設(shè)置為0,用來(lái)統(tǒng)計(jì)每一個(gè)元音字母出現(xiàn)的個(gè)數(shù),for循環(huán)中的循環(huán)條件表達(dá)式中的變量是k,所以第二個(gè)標(biāo)識(shí)下“aura[i]=0;”改為“num[k]=0;”。(2)第二個(gè)標(biāo)識(shí)下的switch-case條件選擇的功能應(yīng)該是對(duì)s指針指向的字符串中的每一個(gè)字符進(jìn)行判斷,不應(yīng)該是s的數(shù)組名,所以第三個(gè)標(biāo)識(shí)下“switch(s)”改為“switch(*s)”。四、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)42、請(qǐng)編寫函數(shù)fun,其功能是分別統(tǒng)計(jì)形參t所指二維數(shù)組中字母A和C的個(gè)數(shù)。注意:部分源程序存在PROG1.C中,請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。#inlclude<stdio.h>#include<stdlib.h>#defineM14voidNONO();voidfun(char(*t)[M],int*a,int*c){}voidget(char(*s)[M]){inti,j;for(i:0;i<M;i++){for(j=0;j<M;j++){s[i][j]=65+rand()%12;printf("%c",s[i][j]);}printf("\n");}}main(){chara[M][M];intx,y;get(a);fun(a,&x,&y);printf("A=%dc=%d\n",x,y);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti,j,x,y;chara[M][M];fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<M;i++){for(j=0;j<M;j++){fscanf(fp,%c",&a[i][j]);)}Fun(a,&x,&y);fprintf(wf,"A=%d\n",x);fprintf(wf,"c=%d\n",y);fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:voidfun(char(*t)[M],int*a,int*c){inti,j;*a=0;*c=0;for(i=0;i<M;i++)for(j=0;j<M;j++)if(t[i][j]==’A’)*a=*a+1;elseif(t[i][j]==’C’)*c=*c+1;}知識(shí)點(diǎn)解析:本題中fun函數(shù)實(shí)現(xiàn)的功能的主要功能是找出二維數(shù)組中A和C的個(gè)數(shù),最先就能想到用條件語(yǔ)句進(jìn)行判斷和統(tǒng)計(jì)。解題步驟主要為:第一步,要得到所需要的二維數(shù)組,第二步,二維數(shù)組進(jìn)入fun函數(shù)中進(jìn)行數(shù)據(jù)處理,fun函數(shù)中需要if條件語(yǔ)句來(lái)進(jìn)行判斷,判斷數(shù)組中的字母是否為A或者C,數(shù)組中的每個(gè)數(shù)據(jù)都需要進(jìn)行判斷,要注意A和C是分開統(tǒng)計(jì)的,所以這里需要同時(shí)統(tǒng)計(jì)A和C,然后分別得到結(jié)果;第三步,輸出得到的結(jié)果:字母A和字母C的個(gè)數(shù)。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、數(shù)據(jù)結(jié)構(gòu)主要研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的運(yùn)算和()。A、數(shù)據(jù)的方法B、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)C、數(shù)據(jù)的對(duì)象D、數(shù)據(jù)的邏輯存儲(chǔ)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)元素及其之間的相互關(guān)系和數(shù)據(jù)運(yùn)算的一門學(xué)科,它包含3個(gè)方面的內(nèi)容,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)的運(yùn)算。2、一棵二叉樹的前序遍歷結(jié)果是ABCEDF,中序遍歷結(jié)果是CBAEDF,則其后序遍歷的結(jié)果是()。A、DBACEFB、CBEFDAC、FDAEBCD、DFABEC標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由于該二叉樹的前序遍歷結(jié)果是ABCEDF,顯然A結(jié)點(diǎn)為根結(jié)點(diǎn),所以后序遍歷時(shí)A結(jié)點(diǎn)是最后遍歷的,其后序遍歷的結(jié)果為CBEFDA。3、在數(shù)據(jù)處理中,其處理的最小單位是()。A、數(shù)據(jù)B、數(shù)據(jù)項(xiàng)C、數(shù)據(jù)結(jié)構(gòu)D、數(shù)據(jù)元素標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)據(jù)元素是由多個(gè)數(shù)據(jù)項(xiàng)組成,數(shù)據(jù)是能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)和加工處理的信息載體,數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng)。4、在數(shù)據(jù)庫(kù)系統(tǒng)的內(nèi)都結(jié)構(gòu)體系中,索引屬于()。A、模式B、內(nèi)模式C、外模式D、概念模式標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫(kù)物理存儲(chǔ)結(jié)構(gòu)與物理存取方法,如數(shù)據(jù)存儲(chǔ)的文件結(jié)構(gòu)、索引、集簇及hash等存取方式與存取路徑,內(nèi)模式的物理性主要體現(xiàn)在操作系統(tǒng)及文件級(jí)上,它還未深入到設(shè)備級(jí)上(如磁盤及磁盤操作)。5、以下()不屬于對(duì)象的基本特征。A、繼承性B、封裝性C、分類性D、多態(tài)性標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:對(duì)象具有特征:標(biāo)識(shí)惟一性,指對(duì)象是可區(qū)分的;分類性,指可以將具有相同屬性和操作的對(duì)象抽象成類;多態(tài)性,指同一個(gè)操作可以是不同對(duì)象的行為;封裝性,從外面看只能看到對(duì)象的外部特征,而不知道也無(wú)需知道數(shù)據(jù)的具體結(jié)構(gòu)以及實(shí)現(xiàn)操作的算法;模塊獨(dú)立性好,對(duì)象是面向?qū)ο蟮能浖幕灸K,對(duì)象內(nèi)部各種元素彼此結(jié)合得很緊密,內(nèi)聚性強(qiáng)。6、數(shù)據(jù)庫(kù)系統(tǒng)的核心是()。A、數(shù)據(jù)模型B、軟件開發(fā)C、數(shù)據(jù)庫(kù)設(shè)計(jì)D、數(shù)據(jù)庫(kù)管理系統(tǒng)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS是數(shù)據(jù)庫(kù)系統(tǒng)的核心。DBMS是負(fù)責(zé)數(shù)據(jù)庫(kù)的建立、使用和維護(hù)的軟件。DBMS建立在操作系統(tǒng)之上,實(shí)施對(duì)數(shù)據(jù)庫(kù)的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫(kù)命令以及應(yīng)用程序的執(zhí)行,最終都必須通過(guò)DBMS。另外,DBMS還承擔(dān)著數(shù)據(jù)庫(kù)的安全保護(hù)工作,按照DBA所規(guī)定的要求,保證數(shù)據(jù)庫(kù)的完整性和安全性。7、開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱作()。A、軟件矛盾B、軟件危機(jī)C、軟件耦合D、軟件產(chǎn)生標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:隨著計(jì)算機(jī)軟件規(guī)模的擴(kuò)大,軟件本身的復(fù)雜性不斷增加,研制周期顯著變長(zhǎng),正確性難以保證,‘軟件開發(fā)費(fèi)用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了入門難以控制軟件發(fā)展的局面,即所謂的“軟件危機(jī)”。8、關(guān)系模型允許定義3類數(shù)據(jù)約束,下列不屬于數(shù)據(jù)約束的是()。A、實(shí)體完整性約束B、參照完整性約束C、屬性完整性約束D、用戶自定義的完整性約束標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:關(guān)系模型允許3類數(shù)據(jù)約束,它們是:實(shí)體完整性約束該約束要求關(guān)系的主鍵中屬性值不能為空值,這是數(shù)據(jù)庫(kù)完整性的最基本要求。參照完整性約束:該約束是關(guān)系之間相關(guān)聯(lián)的基本約束,它不允許關(guān)系引用不存在的元組:即在關(guān)系中的外鍵要么是所關(guān)聯(lián)關(guān)系中實(shí)際存在的元組,要么就為空值。用戶定義的完整性約束:用戶定義的完整性就是針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù)的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語(yǔ)義要求。9、關(guān)系表中的每一行記錄稱為一個(gè)()。A、字段B、元組C、屬性D、關(guān)鍵碼標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在關(guān)系表中,每一列稱為一個(gè)屬性,對(duì)應(yīng)表中的一個(gè)字段;每一行稱為一個(gè)元組,對(duì)應(yīng)表中的一條記錄。10、在數(shù)據(jù)庫(kù)管理技術(shù)的發(fā)展中,數(shù)據(jù)獨(dú)立性最高的是()。A、人工管理B、文件系統(tǒng)C、數(shù)據(jù)庫(kù)系統(tǒng)D、數(shù)據(jù)模型標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在人工管理階段,數(shù)據(jù)無(wú)法共享,冗余度大,不獨(dú)立,完全依賴程序;在文件系統(tǒng)階段,數(shù)據(jù)共享性差;在數(shù)據(jù)庫(kù)系統(tǒng)階段,共享性好,獨(dú)立性高。11、以下敘述錯(cuò)誤的是()。A、C語(yǔ)言區(qū)分大小寫B(tài)、C程序中的一個(gè)變量,代表內(nèi)存中一個(gè)相應(yīng)的存儲(chǔ)單元,變量的值可以根據(jù)需要隨時(shí)修改C、整數(shù)和實(shí)數(shù)都能用C語(yǔ)言準(zhǔn)確無(wú)誤地表示出來(lái)D、在C程序中,正整數(shù)可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制的形式來(lái)表示標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題涉及C語(yǔ)言最基本的3個(gè)概念:①C語(yǔ)言是區(qū)分大小寫的,q和Q是兩個(gè)不同的變量;②變量的實(shí)質(zhì)就是在內(nèi)存中占據(jù)一定的存儲(chǔ)單元,存儲(chǔ)單元里存放的是該變量的值,變量的值可以根據(jù)需要進(jìn)行修改:③整數(shù)在允許的范圍內(nèi)可以準(zhǔn)確的表示出來(lái),但不可能表示無(wú)限度的實(shí)數(shù)。正整數(shù)可用二進(jìn)制、十越制、八進(jìn)制和十六進(jìn)制表示。12、有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case1:case3:printf("%d\n",n);break;case2:case4:printf("%d\n");continue;case0:exit(0);}printf("%d\n",n);}以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()A、for循環(huán)語(yǔ)句固定執(zhí)行8次B、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時(shí)結(jié)束循環(huán)操作C、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時(shí)不做任何操作D、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時(shí)結(jié)束程序運(yùn)行標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時(shí),執(zhí)行“case0:exit(0)”這條語(yǔ)句,結(jié)束程序的運(yùn)行。13、可在C程序中用作用戶標(biāo)識(shí)符的一組標(biāo)識(shí)符是()。A、voiddefineWORDB、as_b3_123IfC、For--abccaseD、2cDOSIG標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,標(biāo)識(shí)符是由字母、數(shù)字或下劃線組成,并且它的第一個(gè)字符必須是字母或下劃線,關(guān)鍵字不能用作用戶標(biāo)識(shí)符。14、若變量己正確定義并賦值,則以下符合C語(yǔ)言語(yǔ)法的表達(dá)式是()。A、a=a+7;B、a=7+b+c,a++C、int(12.3%4)D、a=a+7=c+b標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:選項(xiàng)A)是一個(gè)C語(yǔ)句,不是表達(dá)式;選項(xiàng)B)是利用一個(gè)逗號(hào)表達(dá)式給a賦值;選項(xiàng)C)中的“%”求余運(yùn)算符,要求兩個(gè)運(yùn)算對(duì)象都必須是整型;選項(xiàng)D)中,不能用表達(dá)式給表達(dá)式賦值,但是變量可以給自身賦值,例如:a=a-H。15、有以下程序段charch;intk;ch=’a’;k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十進(jìn)制代碼為97,則執(zhí)行上述程序段后輸出結(jié)果是()。A、因變量類型與格式描述符的類型不匹配輸出無(wú)定值B、輸出項(xiàng)與格式描述符個(gè)數(shù)不符,輸出為零值或不定值C、a,97,12k=12D、a,97,k=12標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在用基本輸出函數(shù)printf時(shí),格式說(shuō)明與輸出項(xiàng)的個(gè)數(shù)應(yīng)該相同。如果格式說(shuō)明的個(gè)數(shù)少于輸出項(xiàng)的個(gè)數(shù),多余的輸出項(xiàng)不予輸出;如果格式說(shuō)明個(gè)數(shù)多于輸出項(xiàng)個(gè)數(shù),則對(duì)于多余的格式項(xiàng)輸出不定值或0。16、下列敘述中錯(cuò)誤的是()。A、計(jì)算機(jī)不能直接執(zhí)行用C語(yǔ)言編寫的源程序B、C程序經(jīng)C編譯程序編譯后,生成后綴為.obj的文件是一個(gè)二進(jìn)制文件C、后綴為.obj的文件,經(jīng)連接程序生成后綴為.exe的文件是一個(gè)二進(jìn)制文件D、后綴為.obf和.exe的二進(jìn)制文件都可以直接運(yùn)行標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C源程序經(jīng)過(guò)程序編譯之后生成一個(gè)后綴為“.obj”的二進(jìn)制文件(稱為目標(biāo)文件),然后由稱為“連接程序”的軟件包文件與C語(yǔ)言提供的各種庫(kù)函數(shù)連接起來(lái)生成一個(gè)后綴為“.exe”的可運(yùn)行文件。17、有以下程序#include<stdio.h>voidmain(){inta=1,b:=0;printf("%d,",b=(a++)+(a++));printf("%d>n",a+b);}程序運(yùn)行后的輸出結(jié)果是()。A、4,6B、2,5C、3.5D、2,6標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在主函數(shù)中定義了兩個(gè)整型變量a和b,并把它們的初值分別設(shè)置為1和0;在第二條語(yǔ)句中,首先計(jì)算b=a+a,然后a自增兩次,因此第二句結(jié)束時(shí),b=2,a=3,然后第三句,a+b=5。18、若有代數(shù)式,(其中e僅代表自然對(duì)數(shù)的底數(shù),1不是變量),則下列能夠正確表示該代數(shù)式的C語(yǔ)言表達(dá)式是()。A、sqrt(abs(n^x+e^x))B、sqrt(fabs(pow(n,x)+pow(x,e)))C、sqrt(fabs(pow(n,x)+exp(x)))D、sqrt(fabs(pow(x,n)+exp(x)))標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:n和e的x冪次方,要分別調(diào)用C語(yǔ)言的數(shù)學(xué)庫(kù)函數(shù)“doublepow(n,x)”和“doubleexp(x)”,因?yàn)檫@兩個(gè)函數(shù)的返回值都為double型,對(duì)兩者的和計(jì)算絕對(duì)值,調(diào)用庫(kù)函數(shù)“doublefabs(pow(n,x)+exp(x))”,求出和的絕對(duì)值,再調(diào)用開平方函數(shù)“doublesqrc(fabs(pow(n,x)+exp(x)))”,這樣計(jì)算出的結(jié)果就是題干中表達(dá)式的值。19、設(shè)有定義:intk=0;,下列選項(xiàng)的4個(gè)表達(dá)式中與其他3個(gè)表達(dá)式的值不相同的是()。A、k++B、k+=1C、++kD、k+1標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:因?yàn)轭}中有語(yǔ)句“intk=0;”,所以選項(xiàng)B)、C)、D)都是對(duì)k的值加1,選項(xiàng)A)的語(yǔ)句k++表示先利用k的值后進(jìn)行運(yùn)算,然后k的值才加1。20、有下列程序,其中‰表示按無(wú)符號(hào)整數(shù)輸出。main(){unsignedintx=0xFFFF;/*x的初值為十六進(jìn)制數(shù)*/printf("%u\n",x);}程序運(yùn)行后的輸出結(jié)果是()。A、-1B、65535C、32767D、0xFFFF標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:“%u”格式符表示以十進(jìn)制形式輸出無(wú)符號(hào)整形變量。本題中無(wú)符號(hào)整形變量x=0xFFFF表示的是十六進(jìn)制無(wú)符號(hào)整型變量的最大值65535,所以最后輸出的結(jié)果為65535。21、下面程序的運(yùn)行結(jié)果是()。for(i=3;i<7;i++)printf((i%2)?("**%d\n"):("##%d\n"),i);A、**3##4**5**6B、##3**4##5**6C、##3**4##5##6D、**3##4**5##6標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查printf函數(shù)的輸出格式和條件表達(dá)式“?:”的使用。①printf函數(shù)輸出時(shí)“**%d\n”和“##%d\n”中的“##”和“**”都是直接輸出。②條件表達(dá)式的基本格式為:“a?b:c”。它的運(yùn)算規(guī)則為:當(dāng)a為非0時(shí),整個(gè)表達(dá)式的值取b的值,當(dāng)a為0時(shí),整個(gè)表達(dá)式取c的值。22、設(shè)有語(yǔ)句:if(a==1)b=2;c=3;,以下語(yǔ)句中與之等價(jià)的是()。A、if(a==1){b=2;c=3;}B、if(a!=1){;}else{b=2;c=3;}C、if(a==1)c=3;b=2;D、(a==1)?b=2:a=a;c=3;標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C語(yǔ)言中,用分號(hào)表示一條語(yǔ)句的結(jié)束,用{}把幾條語(yǔ)句放在一塊表示一個(gè)語(yǔ)句塊,其整體表示一個(gè)功能。因而在題目給出的四個(gè)選項(xiàng)中,選項(xiàng)A)、B)、C)均與題中所給不同,而選項(xiàng)D)相同。23、運(yùn)行下列程序時(shí),若輸入數(shù)據(jù)為“321”,則輸出結(jié)果是()。main(){intnum,i,j,k,s;scanf("%d",&num);if(num>99)s=3;elseif(num>9)s=2:elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s){case3:printf("%d%d%d\n",k,i);break;case2:printf("%d%d\n",k,j);case1:printf("%d\n",k);}}A、123B、1,2,3C、321D、3,2,1標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查if…else語(yǔ)句和switch語(yǔ)句。scanf函數(shù)通過(guò)鍵盤讀入。num的值。因?yàn)椤皀um=321>99”,所以“s=3,i=3,i=2,k=1”。因?yàn)閟=3,所以執(zhí)行case3,輸出k,j,i的值,然后通過(guò)break結(jié)束程序。24、有以下程序#include<stdio.h>#include<string.h>structA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,"ZhangDa",1098.0};a=f(a);printf("%d,%s,%6.1f\n",a.a(chǎn),a.b,a.c);}structAf(structAt){t.a(chǎn)=1002;strcpy(t.b,"WangPeng");t.c=1220.0;returnt;}程序運(yùn)行后的輸出結(jié)果是()。A、1001,ZhangDa,1098.0B、1002,ZhangDa,1220.0C、1001,WangPeng,1098.0D、1002,WangPeng,1220.0標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在主函數(shù)中定義結(jié)構(gòu)體A的變量a,并對(duì)其賦初值,再調(diào)用函數(shù)f(a),在函數(shù)f(a)中對(duì)結(jié)構(gòu)體變量a的各個(gè)成員重新進(jìn)行了賦值操作,并把其值返回在屏幕上輸出。25、判斷char型變量c1是否為小寫字母的正確表達(dá)式為()。A、’a’<=c1<=’z’,B、(c1>=a)&&(c1<=z)C、(’a’>=c1‖(’z’<=c1)D、(c1>=’a’)&&(c1<=’z’)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,字符常量在程序中要用單引號(hào)括起來(lái)。首先判斷c1是否為小寫字母的主要條件“c1>=’a’”和“c1<=’z’”是邏輯與關(guān)系,其次選項(xiàng)A)的這種形式C語(yǔ)言中沒(méi)有,所以選項(xiàng)D)正確。26、設(shè)有定義:chars[10];inti=0;,以下不能將一行(不超過(guò)100個(gè)字符)帶有空格的字符串正確讀入的語(yǔ)句或語(yǔ)句組是()。A、gets(s);B、scanf("%s",s);C、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查標(biāo)準(zhǔn)輸入輸出函數(shù)和循環(huán)語(yǔ)句。gets(s)函數(shù)的作用是將輸入的字符讀入字符串s,直到遇到回車。而scand()函數(shù)接收字符串時(shí)的結(jié)束標(biāo)志為回車或者空格。因此選項(xiàng)B)不能,選項(xiàng)C)和選項(xiàng)D)中按字符逐個(gè)讀入字符串s中,直到讀入的字符是換行符為止,因此正確。27、下面4個(gè)關(guān)于C語(yǔ)言的結(jié)論中錯(cuò)誤的是()。A、可以用do…while語(yǔ)句實(shí)現(xiàn)的循環(huán)一定可以用while語(yǔ)句實(shí)現(xiàn)B、可以用for語(yǔ)句實(shí)現(xiàn)的循環(huán)一定可以用while語(yǔ)句實(shí)現(xiàn)C、可以用while語(yǔ)句實(shí)現(xiàn)的循環(huán)一定可以用for語(yǔ)句實(shí)現(xiàn)D、do…while語(yǔ)句與while語(yǔ)句的區(qū)別僅是關(guān)鍵字“while”出現(xiàn)的位置不同標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查幾個(gè)循環(huán)語(yǔ)句的關(guān)系。①do…while語(yǔ)句、while語(yǔ)句、for語(yǔ)句所實(shí)現(xiàn)的循環(huán)可以相互替代:②do…while語(yǔ)句和while語(yǔ)句的區(qū)別是do…while語(yǔ)句至少執(zhí)行一次,再判斷循環(huán)條件,while語(yǔ)句是先判斷條件再執(zhí)行。28、若有以下程序段:structst{intn;int*m;};inta=2,b=3,c=5;structsts[3]=({101,&a},{102,&c},{103,&b}};main(){structst*p;p=s;…}則以下表達(dá)式中值為5的是()。A、(p++)->mB、*(p++)->mC、(*p).mD、*(++p)->m標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查如何通過(guò)指針引用數(shù)組元素。首先定義了一個(gè)結(jié)構(gòu)體,然后定義了一個(gè)結(jié)構(gòu)體變量s[3],并賦了初值。在主程序中,定義了一個(gè)指向結(jié)構(gòu)體變量s的指針p,要使表達(dá)式的值為5,就應(yīng)該引用s[1].m的值,使指針p指向s[1],++p可以實(shí)現(xiàn)將p指針加1,指向s[1]。29、下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4;*y=s[0];m++;}voidmain(){inta[]={1,2,3,4,5},k;intx;printf("\n");for(k=0;k<=4;k++){sub(a,&x);printf("%d,",X);}}A、1,1,1,1,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題中sub(int*s,int*y)函數(shù)的參數(shù)是兩個(gè)指針型變量,在函數(shù)體內(nèi)將數(shù)組s的第一個(gè)元素賦給y。主程序內(nèi),首先定義了一維數(shù)組并賦初值,然后通過(guò)for循環(huán),5次調(diào)用sub(a,&x)函數(shù),每一次調(diào)用都是將數(shù)組a的第一個(gè)元素1賦給x,并輸出。30、有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return(y);elseretum((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運(yùn)行后的輸出結(jié)果是()。A、3B、6C、8D、12標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:fun(b,c)即fun(5,6),5!=6,所以返回6;fun(2*a,6)即fun(8,6),8!=6,所以返回6。31、C語(yǔ)言中規(guī)定,程序中各函數(shù)之間()。A、既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用B、不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用C、允許直接遞歸調(diào)用不允許間接遞歸調(diào)用D、不允許直接遞歸調(diào)用允許間接遞歸調(diào)用標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用的基本概念。在函數(shù)調(diào)用時(shí),只要符合函數(shù)的使用,程序中的各個(gè)函數(shù)間既可以直接調(diào)用其他函數(shù),也可以遞歸調(diào)用其自身。32、以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1;for(i=0;i<3.i++)for(j=i,j<=i0++)s+=a[i][a[j][j];printf("%d\n",s);}A、3B、4C、1D、9標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:當(dāng)外層循環(huán)為i時(shí),內(nèi)層循環(huán)j只能取j=i,所以s+=a[i][a[j][j]],其實(shí)就是s+=a[i][a[i][i]],當(dāng)i=0時(shí),s=s+a[0][a[0][0]]=s+a[0][0]=1,當(dāng)i=1時(shí)S=S+a[1][a[1][1]]=s+a[1][1]=1+1=2,當(dāng)i=2時(shí),s=s+a[2][a[2][2]]=s+a[2][2]=2+2=4。33、有以下程序:#include<stdio.h>#define5+6main(){inta=2,c;C=x*2:printf("%d",c);}程序運(yùn)行后的輸出結(jié)果是()。A、17B、22C、16D、11標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:define語(yǔ)句僅進(jìn)行簡(jiǎn)單替換,因此c=5+6*2=17。34、當(dāng)用“#defineF37.5f”定義后,下列敘述正確的是()。A、F是float型數(shù)B、F是char型數(shù)C、F無(wú)類型D、F是字符串標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:字符替換定義格式為:#deflne標(biāo)識(shí)符(形參表)形參表達(dá)式。題中F是代表形參表達(dá)式的標(biāo)識(shí)符(字符串)。35、若有定義語(yǔ)句:inta=3,b=2,c=1;,以下選項(xiàng)中錯(cuò)誤的賦值表達(dá)式是()。A、a=(b=4)=3;B、a=b=c+1;C、a=(b=4)+c;D、a=1+(b=c=4);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:這道題目主要考察賦值表達(dá)式,對(duì)于賦值表達(dá)式來(lái)說(shuō),賦值號(hào)“=”的左邊一定為變量名,右邊為一個(gè)C語(yǔ)言合法的表達(dá)式。36、以下說(shuō)法正確的是()。A、宏定義是C語(yǔ)句,要在行末加分號(hào)B、可以使用≠≠undefine提前結(jié)束宏名的使用C、在進(jìn)行宏定義時(shí),宏定義不能嵌套D、雙引號(hào)中出現(xiàn)的宏名也要進(jìn)行替換標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查宏的使用規(guī)則:①字符替換格式:#define標(biāo)識(shí)符字符串,行末不加分號(hào);②雙引號(hào)中出現(xiàn)的宏名不替換;③如果提前結(jié)束宏名的使用,程序中可以使用#undefine;④在進(jìn)行宏定義時(shí),宏定義能層層置換,能夠嵌套。37、下面程序的輸出結(jié)果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt;main(){printf("%d\n",sizeof(t));}A、32B、16C、10D、4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:“聯(lián)合體”所占用的內(nèi)存空間為最長(zhǎng)的成員所占用的空間。題中聯(lián)合體的z[10]成員是聯(lián)合體中占空間最長(zhǎng)的成員。38、以下程序中函數(shù)sort的功能是對(duì)a數(shù)組中的數(shù)據(jù)進(jìn)行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for{j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa,[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A、1,2,3,4,5,6,7,8,9,10,B、10,9,8,7,6,5,4,3,2,1,C、1,2,3,8,7,6,5,4,9,10,D、1,2,10,9,8,7,6,5,4,3,標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:程序中sort函數(shù)的功能是對(duì)數(shù)組中的數(shù)據(jù)進(jìn)行從大到小的排序。主函數(shù)main中調(diào)用函數(shù)“sort(&aa[3],5);”,使得數(shù)組aa中從第4個(gè)元素開始的5個(gè)元素進(jìn)行從大到小的排序,數(shù)組aa中的元素變?yōu)椋?,2,3,8,7,6,5,4,9,10。并輸出這些元素。39、設(shè)x=061,y=016,則z=x|y的值是()。A、00001111B、11111111C、00111111D、11000000標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題主要考查按位或運(yùn)算,x=061(二進(jìn)制為00110001),y=016(二進(jìn)制為00001110),進(jìn)行或運(yùn)算后結(jié)果為00111111。40、函數(shù)rewind(fp)的作用是()。A、使fp指定的文件的位置指針重新定位到文件的開始位置B、將fp指定的文件的位置指針指向文件中所要求的特定位置C、使fp指定的文件的位置指針向文件的末尾D、使fp指定的文件的位置指針自動(dòng)移至下一個(gè)字符位置標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:位置指針重返文件頭函數(shù)rewindq()的調(diào)用形式為:rewind(fp)。其中,“fp”是指向文件的文件型指針。rewind(fp)的功能是:使fp指定的文件的位置指針重新定位到文件的開始位置。二、程序填空題(本題共1題,每題1.0分,共1分。)41、給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,在main函數(shù)中將多次調(diào)用fun函數(shù),每調(diào)用一次fun函數(shù),輸出鏈表尾部結(jié)點(diǎn)中的數(shù)據(jù),并釋放該結(jié)點(diǎn),使鏈表縮短。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#iniclude<stdlib.h>#defineN8typedefStruct1ist{intdata;structlist;*next;}SLIST;voidfun(SLIST*p)(SLIST*t,*s;t=p->next;s=p;while(t->next!=NULL){s=t;/**********found**********/t=t->___1___;}/**********found**********/printf("%d",___2___);s->rlext=NULL;/**********found**********/free(___3___);}SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;i<N;i++){q=(SLIST*)malloc(sizeof(SLIST));q->data=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("\nThelistisNULL!\n");else{printf("\nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->End\n");}}main(){SLIST*head;inta[N]={11,12,15,18,19,22,25,29};head=crearliSt(a);printf("\nOutputfromhead:\n");outlist(head);printf("\nOutputfromtail:\n");while(head->next!=NULL){fun(head);printf("\n\n");printf("\nOutputfromheadagain:\n");outlist;(head);}}標(biāo)準(zhǔn)答案:(1)next(2)t->data(3)t知識(shí)點(diǎn)解析:fun函數(shù)的功能是輸出鏈表尾部結(jié)點(diǎn)中的數(shù)據(jù),并釋放該結(jié)點(diǎn),使鏈表縮短。由于鏈表是單向的,找到鏈表尾部結(jié)點(diǎn)需要利用循環(huán)從頭結(jié)點(diǎn)開始查找,直至找到最后一個(gè),找到之后輸出尾部結(jié)點(diǎn)的數(shù)據(jù),然后刪除尾結(jié)點(diǎn)。第一空:fun函數(shù)中的循環(huán)目的是找到尾結(jié)點(diǎn)“while(t->next!=NULL)”,利用結(jié)點(diǎn)變量s和t,s指向當(dāng)前節(jié)點(diǎn),t不斷指向下一個(gè)結(jié)點(diǎn),因此,第一空處應(yīng)該是“t=t->next;”。第二空:這里是輸出尾結(jié)點(diǎn)中的數(shù)據(jù),已經(jīng)利用循環(huán)找到了尾結(jié)點(diǎn)t,t的數(shù)據(jù)是t->data,因此,第二空處應(yīng)該為“printf”("%d",t->data);”。第三空:輸出尾結(jié)點(diǎn)數(shù)據(jù)之后刪除尾結(jié)點(diǎn),使用free,又因?yàn)槲步Y(jié)點(diǎn)是t,因此,第三空處應(yīng)該為“free(t);”。三、程序修改題(本題共1題,每題1.0分,共1分。)42、給定程序MODI1.C中,函數(shù)fun的功能是判斷整數(shù)n是否是“完數(shù)”。當(dāng)一個(gè)數(shù)的因子之和恰好等于這個(gè)數(shù)本身時(shí),就稱這個(gè)數(shù)為“完數(shù)”。例如:6的因子包括1、2、3,而6=1+2+3,所以6是完數(shù)。如果是完數(shù),函數(shù)返回值為1,否則函數(shù)返回值為0。數(shù)組a中存放的是找到的因子,變量k中存放的是因子的個(gè)數(shù)。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include<stdio.h>intfun(intn,inta[],int*k){intm=0,i,t;t=n;/**********found**********/for(i=0;i<n;i++)if(n%i==0){a[m]=i;m++;t=t-i;}/**********found**********/k=m;/**********found**********/if(t=0)return1;elsereturn0;}main(){intn,a[10],flag,i,k;printf("請(qǐng)輸入一個(gè)整數(shù):");scanf("%d",&n);flag=fun(n,a,&k),if(flag){printf("%d是完數(shù),其因子是:",n);for(i=0,i<k,i++)printf("%d",a[i]);printf("\n");}elseprintf("%d不是完數(shù).\n",n);}標(biāo)準(zhǔn)答案:(1)for(i=0;i<n;i++)改為for(i=1;i<n;i++)(2)k=m;改為*k=m;(3)if(t=0)改為if(t==0)知識(shí)點(diǎn)解析:本題的fun函數(shù)主要功能是:是判斷整數(shù)n是否是“完數(shù)”。當(dāng)一個(gè)數(shù)的因子之和恰好等于這個(gè)數(shù)本身時(shí),就稱這個(gè)數(shù)為“完數(shù)”。(例如:6的因子包括1、2、3,而6=1+2+3,所以6是完數(shù))如果是完數(shù),函數(shù)返回值為1,否則函數(shù)返回值為0。數(shù)組a中存放的是找到的因子,變量k中存放的是因子的個(gè)數(shù)。這里是一個(gè)條件判斷問(wèn)題,原理上利用條件if條件語(yǔ)句和for循環(huán)得到結(jié)果,結(jié)果則是用數(shù)組輸出完數(shù)的因子,用k變量輸出因子的個(gè)數(shù)。這里fun()函數(shù)為了判定這個(gè)數(shù)字是否為完數(shù),一定要使用正確的循環(huán),這個(gè)判斷條件還是需要一定的步驟的。最重要的就是注意細(xì)節(jié)(1)第一個(gè)錯(cuò)誤在fun()函數(shù)的for循環(huán)中,這里的循環(huán)的就是輸入數(shù)字n的因式,很明顯的一個(gè)問(wèn)題就是循環(huán)的起始值有問(wèn)題,這從i=0開始就違反了最基本的四則運(yùn)算,0不可能是其他整數(shù)的因式,也沒(méi)有意義。所以這里應(yīng)該將“i=0”改為“i=1”。(2)第二個(gè)錯(cuò)誤在fun()函數(shù)中數(shù)字經(jīng)過(guò)for循環(huán)過(guò)后,這里“k=m”,是為了得到“k”的值,也就是因子的個(gè)數(shù)。但是要注意的細(xì)節(jié)是在fun()函數(shù)中的參數(shù)是“*k”,也就是說(shuō)k只是一個(gè)指針變量,而不是我們所需要的因子個(gè)數(shù)的變量,所以這里我們應(yīng)該使用的是“*k”,即將“k=m”改為“*k=m”。(3)第三個(gè)錯(cuò)誤在fun函數(shù)第二個(gè)if條件語(yǔ)句中,這里“f(t=0)return1;”的t是數(shù)字減掉因子和的值,也就是說(shuō)只要是t等于0就代表輸入的數(shù)字是一個(gè)完數(shù),這里原本的意圖就是在得到因子的和之后判斷數(shù)字是否為完數(shù)。但是又有一個(gè)細(xì)節(jié)沒(méi)有注意到的就是在if條件語(yǔ)句中,等于號(hào)應(yīng)該是“==”,而不是普通的“=”,所以這里應(yīng)該將“if(t=0)”改為“if(t==0”。)四、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)43、請(qǐng)編寫函數(shù)fun,功能是:判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)據(jù)的位數(shù)不超過(guò)4位),并將結(jié)果通過(guò)函數(shù)值返回。例如:若輸入的數(shù)據(jù)為123,則輸出結(jié)果為:輸入的數(shù)字是3位。注意:部分源程序存在PROG1.C中,請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。#include<stdio.h>voidNONO();intfun(intn){}main(){intn,place;do{printf("請(qǐng)輸入一個(gè)4位以內(nèi)的正整數(shù):");scarlf("%d”,&n);}while(n<0||n>9999);place=fun(n);printf("輸入的數(shù)字是%d位\n",place);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti,n,place;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d",&n);place=fun(n);fprintf(wf,"%d\n",place);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:intfun(intn){intk=0;if(n>999)k=4;elseif(n>99)k=3;。elseif(n>9)k=2;elsek=1;returnk;}知識(shí)點(diǎn)解析:本題fun函數(shù)的主要功能是判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)據(jù)的位數(shù)不超過(guò)4位),并將結(jié)果通過(guò)函數(shù)值返回。首先我們能想到這一題主要在于判斷,因?yàn)轭}目已經(jīng)限制了條件,就是數(shù)字的大小要不超過(guò)四位數(shù)的數(shù)字,而且要求只要輸出這個(gè)數(shù)字的位數(shù),這樣我們就能想到,只要判斷這個(gè)數(shù)字的大小就能知道位數(shù)了,小于10位1位,大于等于10小于100為2位,大于等于100小于1000位3位,大于等于1000小于等于9999為4位。所以只需要很簡(jiǎn)單的幾個(gè)判斷語(yǔ)句就能實(shí)現(xiàn)函數(shù)的功能,然后輸出結(jié)果。主函數(shù)中首先要定義數(shù)據(jù),然后需要手動(dòng)輸入一個(gè)用來(lái)進(jìn)行判斷的數(shù)字,注意數(shù)字要不超過(guò)4位,見(jiàn)程序代碼第14~16行,而且這里為了防止輸入時(shí)不小心的錯(cuò)誤或者是有人故意錯(cuò)誤輸入而引發(fā)的不好的后果,在數(shù)據(jù)進(jìn)入fun函數(shù)處理之前還要一個(gè)while函數(shù)來(lái)進(jìn)行判斷數(shù)據(jù)是否合理在進(jìn)行處理,見(jiàn)程序代碼第17行。然后數(shù)字進(jìn)入fun函數(shù),這里很明顯會(huì)出現(xiàn)四種情況,數(shù)字的位數(shù)為1位,2位,3位或4位,所以我們用if…elseif來(lái)區(qū)別這四種情況見(jiàn)程序第6~9行,在判斷完之后我們就可以返回?cái)?shù)字位數(shù)k的值然后再到主函數(shù)main函數(shù)中進(jìn)行輸出處理。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、下面程序的運(yùn)行結(jié)果是()。#includemain(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elseprintf("#");}}A、*#*#*B、#*#*#*C、*#*#D、#*#*標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:分析程序可知,程序循環(huán)5次,然后利用if語(yǔ)句決定每次循環(huán)時(shí)輸出的字符。當(dāng)i為奇數(shù)時(shí),i%2=1,if(i%2)為真,輸出“*”:當(dāng)i為偶數(shù)時(shí),i%2=0,if(i%2)為假,執(zhí)行else語(yǔ)句,輸出“#”,所以當(dāng)i取1、3、5值時(shí)輸出“*”,當(dāng)i取2、4值時(shí)輸出“#”。2、下列敘述中正確的是()。A、在棧中,棧中元素隨棧底指針與棧頂指針的變化而變化B、在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而變化C、在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而變化D、以上說(shuō)法均不對(duì)標(biāo)準(zhǔn)答
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公務(wù)員工作總結(jié)態(tài)度端正與廉潔奉公
- 美甲店服務(wù)員工作感悟
- 有害廢棄物安全回收流程
- 2025年中考化學(xué)一輪復(fù)習(xí)之化學(xué)式的書寫與意義
- 酒店管理工作關(guān)鍵職責(zé)講解
- 稅務(wù)報(bào)告與申報(bào)流程
- 銀行員工感悟
- 整形行業(yè)采購(gòu)工作總結(jié)
- 2024年設(shè)備監(jiān)理師考試題庫(kù)【原創(chuàng)題】
- 別墅度假休閑旅游合同
- 醫(yī)保繳費(fèi)問(wèn)題排查整改報(bào)告
- 2024年黑龍江高中學(xué)業(yè)水平合格性考試數(shù)學(xué)試卷試題(含答案詳解)
- 2024年度醫(yī)院財(cái)務(wù)部述職報(bào)告課件
- 浙江省杭州市余杭區(qū)2023-2024學(xué)年五年級(jí)上學(xué)期1月期末道德與法治試題
- 工程管理培訓(xùn)教案
- agv無(wú)人運(yùn)輸車維修保養(yǎng)合同
- 2023-2024學(xué)年二年級(jí)數(shù)學(xué)上冊(cè)期末樂(lè)考非紙筆測(cè)試題(一)蘇教版
- 學(xué)生信息技術(shù)應(yīng)用實(shí)踐
- Android移動(dòng)應(yīng)用開發(fā)基礎(chǔ)教程-教案
- 2024年江蘇省學(xué)業(yè)水平合格性考試語(yǔ)文全真模擬卷
- 2023年總裝電氣工程師年度總結(jié)及下一年計(jì)劃
評(píng)論
0/150
提交評(píng)論