國家二級(C語言)筆試模擬試卷23(題后含答案及解析)_第1頁
國家二級(C語言)筆試模擬試卷23(題后含答案及解析)_第2頁
國家二級(C語言)筆試模擬試卷23(題后含答案及解析)_第3頁
國家二級(C語言)筆試模擬試卷23(題后含答案及解析)_第4頁
國家二級(C語言)筆試模擬試卷23(題后含答案及解析)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級(C語言)筆試模擬試卷23(題后含答案及解析)題型有:1.選擇題2.填空題選擇題(1-10、21-40每題2分,11-20每題1分,共70分)下列各題A、B、C、D四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位置上。1.算法執(zhí)行過程中所需要的存儲空間稱為算法的A.時間復雜度B.計算工作量C.空間復雜度D.工作空間正確答案:C解析:算法執(zhí)行時所需要的存儲空間,包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間,其中額外空間還包括算法程序執(zhí)行過程的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間.這些存儲空間共稱為算法的空間復雜度。2.以下數(shù)據(jù)結(jié)構(gòu)中屬于線性數(shù)據(jù)結(jié)構(gòu)的是A.集合B.線性表C.二叉樹D.圖正確答案:B解析:所謂的線性結(jié)構(gòu)是指:如果一個非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個條件,即1)有且只有一個根結(jié)點;2)每一個結(jié)點最多有一個前件,也最多有一個后件。同時滿足兩個條件的只有線性表,而其他三種數(shù)據(jù)結(jié)構(gòu)的結(jié)點可能存在多個前件或后件,所以不是線性結(jié)構(gòu)。故答案為B。3.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是A.順序存儲的有序線性表B.線性鏈表C.二叉鏈表D.有序線性鏈表正確答案:A解析:二分查找只適用于順序存儲的有序表。在此所說的有序表是指線性表中的元素按值非遞減排列(即從小到大,但允許相鄰元素值相等)的。選項A正確。4.函數(shù)重載是指A.兩個或兩個以上的函數(shù)取相同的函數(shù)名,但形參的個數(shù)或類型不同B.兩個以上的函數(shù)取相同的名字和具有相同的參數(shù)個數(shù),但形參的類型可以不同C.兩個以上的函數(shù)名字不問,但形參的個數(shù)或類別相同D.兩個以上的函數(shù)取相同的函數(shù)名,并且函數(shù)的返回類型相同正確答案:A解析:函數(shù)重載指的是兩個或兩個以上的函數(shù)具有相同的函數(shù)名,但形參的個數(shù)或類型不同。程序中通過判斷主調(diào)函數(shù)傳過來的參數(shù)的個數(shù)和類型,來決定選擇調(diào)用哪個具體的函數(shù)。5.檢查軟件產(chǎn)品是否符合需求定義的過程稱為A.確認測試B.集成測試C.驗證測試D.驗收測試正確答案:A解析:確認測試是要檢查已實現(xiàn)的軟件是否滿足了需求規(guī)格說明書中確定了的各種需求,以及軟件配置是否完全、正確。軟件需求規(guī)格說明書是軟件確認測試的基礎(chǔ)。6.在結(jié)構(gòu)化程序設(shè)計方法中,下面哪種內(nèi)聚的內(nèi)聚性最弱?A.邏輯內(nèi)聚B.時間內(nèi)聚C.偶然內(nèi)聚D.過程內(nèi)聚正確答案:C解析:內(nèi)聚有很多種類,其中內(nèi)聚性由弱到強的順序為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚.所以本題的答案為C。7.支持數(shù)據(jù)庫各種操作的軟件系統(tǒng)叫做A.數(shù)據(jù)庫管理系統(tǒng)B.文件系統(tǒng)C.數(shù)據(jù)庫系統(tǒng)D.操作系統(tǒng)正確答案:A解析:數(shù)據(jù)庫管理系統(tǒng)是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等操作。所以答案為A。8.數(shù)據(jù)庫系統(tǒng)可分為三級模式,下列選項中不屬于數(shù)據(jù)庫三級模式的是A.抽象模式B.外模式C.概念模式D.內(nèi)模式正確答案:A解析:數(shù)據(jù)庫的三級模式是指概念模式、內(nèi)模式和外模式,其中外模式又叫子模式,內(nèi)模式又叫物理模式.所以本題答案為A。9.在數(shù)據(jù)庫設(shè)計的四個階段中,為關(guān)系模式選擇存取方法應(yīng)該是在______階段。A.需求分析B.概念設(shè)計C.邏輯設(shè)計D.物理設(shè)計正確答案:D解析:需求分析階段是分析用戶的需求,顯然不屬于這個階段,由此可以排除選項A.概念設(shè)計是將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)及概念模型的過程,涉及不到數(shù)據(jù)的存取,所以選項D錯誤。邏輯設(shè)計是在概念設(shè)計的基礎(chǔ)上將E-R圖轉(zhuǎn)換成數(shù)據(jù)庫管理系統(tǒng)的邏輯數(shù)據(jù)模型表示的邏輯模式,也不涉及存取問題,選項C也不對。答案為D。10.以下說法不正確的是A.C程序中必須有一個main()函數(shù),C程序是從main()函數(shù)的第1條語句開始執(zhí)行的。B.非主函數(shù)都是在執(zhí)行主函數(shù)時,通過函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的。C.C程序中的main()函數(shù)必須放在程序的開始位置。D.C程序中的main()函數(shù)位置可以任意指定。正確答案:C解析:本題考核的知識點是main()函數(shù)的作用,以及main()函數(shù)在程序中出現(xiàn)的位置。一個完整的C語言程序有且僅有一個主函數(shù)(main()函數(shù))。程序總從main()函數(shù)的第一條語句開始執(zhí)行,到main()函數(shù)的最后一條語句結(jié)束,其他函數(shù)都是在執(zhí)行main()函數(shù)時,通過函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的。C語言規(guī)定,main()函數(shù)在程序中的位置是任意的,故選項c不正確。所以,4個選項中C符合題意。11.C語言中用于結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)是A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)B.if、switch、breakC.for、while、do-whileD.if、for、continue正確答案:A解析:結(jié)構(gòu)化程序設(shè)計是由3種基本結(jié)構(gòu)組成的,它們是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。所以,A選項為所選。12.為了使模塊盡可能獨立,要求A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡最強正確答案:B解析:系統(tǒng)設(shè)計的質(zhì)量主要反映在模塊的獨立性上.評價模塊獨立性的主要標準有兩個:一是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度;二是模塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚.一般來說,要求模塊之間的耦合盡可能地弱,即模塊盡可能獨立,而要求模塊的內(nèi)聚程度盡量地高。綜上所述,選項B的答案正確。13.以下非法的賦值語句是A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;正確答案:C解析:本題考查的知識點是賦值語句的基本知識。在表達式的運算中,雙目賦值運算符的格式為“變量二表達式”,單目運算符一般形式為“運算符表達式”或“表達式運算符”。常量和表達式是不能被賦值的。選項A為復合表達式,首先計算(i=2,++i)的值,然后賦值給n,故選項A正確;選項B為簡單自加運算,故選項B正確;選項C在表達式++(i+1);中,(i+1)不是變量,該表達式的值為常量,而在++運算中,其運算對象必須為變量,故選項C錯誤;選項D中為復合賦值表達式,正確.所以應(yīng)當選擇C。14.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf(“%d,%d\n”,k,m);}程序運行后的輸出結(jié)果是A.0,0B.0,1C.1,0D.1,1正確答案:C解析:在“||”運算中當其左邊的表達式為真,右邊的表達式將不再執(zhí)行。主函數(shù)中,“||”左邊的表達式k=(n=b>a),“2>1”為真,所以n被賦值為1,接著k被賦值1,即“||”運算符左邊表達式為真,此時不再計算“||”右邊的表達式,因此m的值沒有被改變?nèi)詾?,最后的輸出結(jié)果1,0。所以,4個選項中選項C符合題意。15.已知i、j、k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1、i的值為2、k的值為3,以下選項中正確的輸入語句是A.scanf(“%2d%2d%2d”,&i,&j,&k);B.scanf(“%d%d%d”,&i,&j,&k);C.scanf(“%d,%d,%d”,&i,&j,&k);D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);正確答案:C解析:本題考查的知識點是輸入函數(shù)scanf()基本用法。使用該語句時,要求除格式控制符以外的字符都要原樣輸入,“,”為非格式符,要原樣輸入。選項A,輸入格式描述為“%2d%2d%2d”,輸入要用空格隔開,不滿足鍵盤輸入1,2,3的條件,故A錯誤:選項B中,輸入格式描述符為“%d%d%d”,輸入也要用空格隔開,故錯誤:選項D中,輸入格式描述符為“i=%d,i=%d,k=%d”,應(yīng)該從鍵盤輸入i=1,j=2,k=3,才能使得i,j,k的值為1,2,3,故選項D錯誤。4個選項中C正確。16.設(shè)有如下程序段:intx=2002,y=2003;printf(“%d\n”,(x,y));則以下敘述中正確的是A.輸出語句中格式說明符的個數(shù)少于輸出項的個數(shù),不能正確輸出B.運行時產(chǎn)生出錯信息C.輸出值為2002D.輸出值為2003正確答案:D解析:逗號運算符的結(jié)合性為從左到右,其一般形式為“表達成1,表達式2”,整個表達式的值為表達式2的值。故4個選項中選項D符合題意。17.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型的是A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個都是正確答案:C解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有三種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實體之間的聯(lián)系是用樹結(jié)構(gòu)來表示的,其中實體集(記錄型)是樹中的結(jié)點,而樹中各結(jié)點之間的連線表示它們之間的關(guān)系。因此,本題的正確答案是C。18.若x和y代表整型數(shù),以下表達式中不能正確表示數(shù)學關(guān)系|x-y|<10的是A.a(chǎn)bs(x-y)<10B.x-y>-10&&x-y<10C.!(x-y)<=10||!(y-x)>10D.(x-y)*(x-y)<100正確答案:C解析:本題考核的知識點是關(guān)系運算和邏輯運算的混合應(yīng)用。選項A用了一個絕對值函數(shù)abs(),故選項A正確:選項B中用了一個“&&”邏輯與,故選項B正確:選項C中,“||”左邊的式子如為真,將不再判斷其后的表達式的值,故選項C不正確;選項D為本題中數(shù)學關(guān)系式的一個等價命題,故選項D正確.所以,4個選項中選項C符合題意。19.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf(“%d”,d+++1);elseprintf(“%d”,++d+1);printf(“%d\n”,D);}程序運行后的輸出結(jié)果是A.2B.3C.43D.44正確答案:A解析:本題考核的知識點是if-else語句的程序分析。我們首先看程序中if-else的匹配,由于C語言中規(guī)定else總是與最近的if搭配,因此程序中else與第二個訂搭配,即該if-else語句為第一個if語句的執(zhí)行部分,接著判斷第一個if后面括號里的表達式的值“a>b”為假(“3>4”為假),因此不執(zhí)行后面if-else語句,程序?qū)?zhí)行下面的輸出語句輸出d,而d一直未被改變故為原來的值2,所以,4個選項中選項A符合題意。20.若定義:inta=511,*b=&a;則printf(“%d\n”,*B);的輸出結(jié)果為A.無確定值B.a(chǎn)的地址C.512D.511正確答案:D解析:本題考核的知識點是printf()函數(shù)的輸出格式.本題中先定義了一個int型的變量a并賦初值為511,接著定義了一個指向a的指針變量b,在printf()函數(shù)的輸出格式中,是輸出*b,即輸出指針所指向變量a的值為511,因此輸出511。所以,4個選項中D為所選。21.有以下程序:main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf(“%d,%d,%d\n”,x,y,z);}程序執(zhí)行后的輸出結(jié)果是A.3,2,0B.3,2,-1C.4,3,1D.5.-2,-5正確答案:B解析:本題中首先定義了三個整型變量x、y和z并分別賦值為0、5和3,while循環(huán)的判定條件為z-->0&&++x<5,由于x的初值為3,所以當z--執(zhí)行3次后,z-->0將不在成立,又由于x的初值為0,所以++x執(zhí)行5次,++x<5將不再成立,而它們兩個表達式的值為邏輯與的關(guān)系,故當z-->0不成立時整個表達式的值為假,因此該循環(huán)共執(zhí)行了3次,即語句y=y-1共執(zhí)行了三次,但while循環(huán)的判定表達式卻執(zhí)行了四次,故起最后輸出的x、y、z的值分別為3,2,-1,所以,4個選項中選項B符合題意。22.以下程序的功能是:按順序讀入10名學生4門課程的成績,計算出每位學生的平均分并輸出,程序如下:main(){intn.k;floatscore.sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf(“%f”,&score);sum+=score;}ave=sum/4.0;printf(“NO%d:%f\n”,n,ave);}}上述程序運行后結(jié)果不正確,調(diào)試中發(fā)現(xiàn)有—條語句出現(xiàn)在程序中的位置不正確。這條語句是A.sum=0.0;B.sum+=score;C.a(chǎn)ve=sun/4.0;D.printf(“NO%d:%f\n”,n,ave);正確答案:A解析:程序中使用了兩層for循環(huán),外層循環(huán)的作用是控制人數(shù),循環(huán)一次是求一個人的成績和,然后除以4得到平均成績。每個人的成績總和一開始時都必須清0,否則就會出現(xiàn)后面人的總成績越來越大?!皊um=0.0”;應(yīng)在外層循環(huán)中。選項A正確。23.以下程序中,while循環(huán)的循環(huán)次數(shù)是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}A.1B.10C.6D.死循環(huán),不能確定次數(shù)正確答案:D解析:break語句只能在循環(huán)體和switch語句體內(nèi)使用,當break出現(xiàn)在switch語句體內(nèi)時,其作用只是跳出該switch語句體。當break出現(xiàn)在循環(huán)體中,但不在switch語句體內(nèi)時,則在執(zhí)行break后,跳出本層循環(huán)體.而continue語句的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判定。本程序中,變量i的初始值為0,判斷while后面括號內(nèi)表達式的值為真,執(zhí)行循環(huán)體內(nèi)的if語句,判斷if后面括號內(nèi)表達式的值為真,執(zhí)行“continue;”語句.因continue的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判斷,所以i的值未發(fā)生變化,循環(huán)條件仍然為真,if語句也仍然成立,因此循環(huán)將無止境地進行下去。所以,4個選項中D為所選。24.有以下程序段typedefstructNODE{intnum;structNODE*next;}OLD;以下敘述中正確的是A.以上的說朗形式非法B.NODE是一個結(jié)構(gòu)體類型C.OLD是一個結(jié)構(gòu)體類型D.OLD是一個結(jié)構(gòu)體變量正確答案:C解析:將題目中的定義語句去掉前面的typedef和后面的OLD(分號保留),就是一條完整的結(jié)構(gòu)體定義語句,其中struct是說明符,NODE是結(jié)構(gòu)體名,大括號里面的是結(jié)構(gòu)體成員的定義.此時要聲明該結(jié)構(gòu)體變量時需要使用struct加結(jié)構(gòu)體名一起來聲明,structNODE一起構(gòu)成一個結(jié)構(gòu)體類型,就好像字符類型char。若只去掉前面的typedef,就是一條結(jié)構(gòu)體定義同時聲明一個結(jié)構(gòu)體變量OLD的語句,因為OLD的前面部分是structNODE的完整寫法,可以看作是structNODE。C語言允許用typcdcf說明一種新類型名,其語法格式為:typedef類型名標識符;以后就可以用該標識符來代替被說明的類型名了。因此,當前面存在typedef時,該語句就變成7給structNODE的完整寫法定義一個新的名稱OLD。所以,此時的OLD是一個結(jié)構(gòu)體類型,它相當于structNODE,即可以和char一樣單獨用來聲明該結(jié)構(gòu)體變量,而NODE只是一個結(jié)構(gòu)體名,不能單獨用來聲明變量。所以,4個選項中C符合題意.25.有以下函數(shù)定義:voidfun(intn,doublex){……}若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun的正確調(diào)用語句是A.fun(inty,doublem);B.k=fun(10,12.5);C.fun(x,n);D.voidfun(n,x);正確答案:C解析:選項A中應(yīng)將y和m前面的函數(shù)的類型說明符去掉,故選項A不正確;選項B中函數(shù)傳了2個參數(shù),其中一個為整型一個為浮點型,而fun()函數(shù)在定義時聲明的2個參數(shù),一個為整型一個為雙精度型,其參數(shù)類型不一致,故選項B不正確;選項D在調(diào)用函數(shù)時,不應(yīng)該再聲明其返回類型,故迭項D不正確.所以,4個選項中選項C符合題意。26.有定義語句:intb;charc[10];,則正確的輸入語句是A.scanf(“%d%s”,&b,&C);B.scanf(“%d%s”,&b,C);C.scanf(“%d%s”,b,C);D.scanf(“%d%s”,b,&C);正確答案:B解析:scanf函數(shù)的第一個參數(shù)是格式控制字符串,該字符串中所出現(xiàn)的格式控制符必須與scanf函數(shù)的笫二個及其后面的參數(shù)一一對應(yīng).本題中四個選項的格式控制字符串都是”%d%s”,其中包括兩個格式控制符%d和%s,它們分別表示輸入一個十進制整數(shù)和輸入一個字符串,其對應(yīng)的參數(shù)應(yīng)該分別為一個整型變量的地址和一個字符型數(shù)組的首地址。變量的地址可以通過對變量做取地址(&)運算來得到,而宇符型數(shù)組的首地址則可以直接通過數(shù)組名來得到。所以,4個選項中選項B符合題意。27.以下不能正確計算代數(shù)式sm2()值的C語言表達式是A.1/3*sin(1/2)*sin(1/2)B.sin(0.5)*sin(0.5)/3C.pow(sin(0.5),2)/3D.1/3.0*pow(sin(1.0/2),2)正確答案:A解析:當運算符“/”的左右兩邊運算分量都是整數(shù)的時候,運算結(jié)果也是一個整數(shù),如果除不凈則舍去小數(shù)部分。若兩個運算分量有一個是實數(shù),才會返回真正除法上的實數(shù)結(jié)果。選項A中傳遞給sin()函數(shù)的參數(shù)表達式1/2計算出來的結(jié)果為整數(shù)0,所以不能正確計算出題目要求的值,而其余選項中,除號兩邊都至少有一個運算分量是實數(shù),故應(yīng)該選擇A。28.有以下程序int*f(znt*x,int*y){if(*x<*y)returnX;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(“%d,%d.%d\n”,*p,*q,*r);}執(zhí)行后輸出結(jié)果是A.7,8,8B.7,8,7C.8,7,7D.8,7,8正確答案:B解析:本題定義了一個返回值為指針的函數(shù)f(),此函數(shù)有兩個指針型的形參x和y)該函數(shù)的功能,是返回x和y指向的變量中值較小的那個指針變量。主函數(shù)中定義了兩個指針變量p和小并讓它們指向了變量a和b,調(diào)用函數(shù)f(),返回指向的變量值較小的指針變量,r的值為指針變量p的值(變量a的地址),因此最后輸出的*p、*q和,r的值是7,8和7。所以,B選項為所選。29.s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句S:則以下選項中正確的是A.if(s1>s2)S;B.if(strcmp(s1,s2))S;C.if(strcmp(s2,s1)>0)S:D.if(strcmp)(s1,s2)>0)S;正確答案:D解析:在C語言中字符串的比較用strcmp()函數(shù),該函數(shù)有兩個參數(shù),分別為被比較的兩個字符串。如果第一個字符串大于第二個字符串返回值大于0,若小于返回值小于0,相等返回值為0.字符串比較大小的標準是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串,如果遇到某一個字符小,該字符所在的字符串就是較小的字符串。本題中要求當s1所指字符串大于s2所指串時,執(zhí)行語句s,因此應(yīng)該為strcmp(s1,s2)>0或者strcmp(s2,s1)<0,所以,4個選項中選項D符合題意。30.若整型變量a、b、c、d中的值依次為:1、4、3、2。則條件表達式a<b?a:c<d?c:d的值是A.1B.2C.3D.4正確答案:A解析:因為條件運算符的結(jié)合方向為“自右至左”,所以表達式a<b?a:c<d?c:d相當于a<b?a:(c<d?c:D)。由于a=1,b=4,所以a<b的結(jié)果為“真’,所以整個表達式的值為a的值1。所以,4個選項中選項A符合題意。31.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;*q=*(p+5);printf(“%d%d\n”,*p,*q);}程序運行后的輸出結(jié)果是A.運行后報錯B.66C.611D.510正確答案:A解析:本題考核的知識點是通過指針引用數(shù)組的元素的方法.本題中首先定義了一個一維數(shù)組a并初始化,由于定義該數(shù)組的時候省略了長度,因此該數(shù)組的長度為初始化時候賦初值的個數(shù)即為12。數(shù)組名a代表數(shù)組的首地址,所以*p=a+5語句使得p指向數(shù)組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內(nèi)存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。所以,4個選項中選項A符合題意。32.以下能正確定義一維數(shù)組的選項是A.intnum[];B.#defineN100intnum[N];C.intnum[0..100];;D.intN=100;intnum[N]正確答案:B解析:選項A定義數(shù)組時省略了長度,而C語言中規(guī)定,只有在定義并同時進行初始化時,數(shù)組的長度才可以省略,數(shù)組的長度為初始化時候的成員個數(shù),故選項A錯誤:在C語言中規(guī)定,數(shù)組的長度必須是一個整數(shù)或整型常量表達式,故選項C不正確;定義時數(shù)組的長度不能使用變量表示,故選項D不正確,所以,4個選項中選項B符合題意。33.在C語言中,形參的缺省存儲類是A.a(chǎn)utoB.registerC.staticD.extern正確答案:A解析:在C語言中,行參的缺省存儲類為auto。所以,4個選項中A為所選.34.有以下程序#include.<string.h>main(){char*p=“abcde\ofghjik\0”;printf(“%d\n”,strlen(p));}程序運行后的輸出結(jié)果是A.12B.15C.6D.5正確答案:D解析:本題首先定義了一個字符型指針變量p,并用一個宇符串給它賦值,然后調(diào)用printf()函數(shù)輸出p所指向的字符串的長度。字符串的結(jié)束標記為“\0”,其長度為“\0”前的字符個數(shù),故長度為5。所以4個選項中D正確。35.閱讀以下函數(shù)fun(char*sl,char*s2){inti:0;while(sl[i]==s2[i]&&s2[i]!=‘\0’)i++;return(sl[i]==‘\0’&&s2[i]==‘\0’);}此函數(shù)的功能是A.將s2所指字符申賦給s1B.比較s1和s2所指字符串的大小,若s1比s2的大,函數(shù)值為1,否則函數(shù)值為0C.比較s1和s2所指字符串是否相等,若相等,函數(shù)值為1,否則函數(shù)值為oD.比較s1和s2所指字符串的長度,若s1比s2的長,函數(shù)值為1,否則函數(shù)值為o正確答案:C解析:在函數(shù)fun()中有兩個字符型指針變量s1和s1,在函數(shù)中程序執(zhí)行while循環(huán),該循環(huán)退出條件有兩個:一個是s1[i]!=s2[i](兩個字符串不相等);第二個是sl[i]和s2[i]相等均為“\0”(兩個字符串相等)。循環(huán)退出后,執(zhí)行return語句,即兩個字符串相等則返回1,不相等則返回0。所以,C選項為所選。36.有以下程序voidf(int*x,int*y){intt;t=*X;*X=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7);while(p>q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf(“%d,”,a[i]);}程序運行后的輸出結(jié)果是A.8,2,3,4,5,6,7,1,B.5,6,7,8,1,2,3,4,C.1,2,3,4,5,6,7,8,D.8,7,6,5,4,3,2,1,正確答案:D解析:在C語言中,函數(shù)參數(shù)的默認傳遞方式是傳值,即函數(shù)內(nèi)部的形參只是調(diào)用時的實參的一個拷貝,改變形參,實參不會被改變.如果想要實現(xiàn)傳址調(diào)用只能使用傳遞指針的方式來實現(xiàn).利用指針作函數(shù)的參數(shù)時,無論形參指針還是實參指針所指的都是同一個內(nèi)存地址,所以形參如果改變了這個地址中的內(nèi)容,也就是改變了實參所指的地址內(nèi)容.本題程序開頭定義了一個函數(shù)f(),在函數(shù)中用一個臨時變量t交換了兩個指針參數(shù)所指的地址內(nèi)容,所以該函數(shù)的作用就是交換兩個參數(shù)所指的內(nèi)容。在主函數(shù)中,首先定義了一個int型數(shù)組a,并定義了兩個int型指針p、q分別指向數(shù)組a的第一個元素和最后一個元素。然后使用一個while循環(huán)調(diào)用函數(shù)f()不斷交換兩個指針所指的內(nèi)容,每次交換后p往后移動一個元素,q往前移動一個元素,直到q不再大于p,即直到兩個指針在數(shù)組a的中間相遇為止。所以,程序最終運行的結(jié)果是數(shù)組a中的所有元素全被反序排列一次。故應(yīng)該選擇選項D。37.設(shè)有如下說明typedefstruct{intn;charc;doubleX;}STD;則以下選項中,能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語句是A.STDtt[2]={{1,’A’,62},{2,’B’,75}};B.STDtt[2]={1,”A”,62,2,”B”,75};C.structtt[2]={{1,’A’),{2,’B’}};D.structtt[2]={{1,”A”,62.5},{2,”B”,75.0}};正確答案:A解析:本題定義了一個結(jié)構(gòu)體類型并自定義類型名為STD,用戶自定義類型后,就可以利用它進行變量與數(shù)組的定義。定義的方法,與c語言中其他類型的定義完全一樣,定義結(jié)構(gòu)型數(shù)組并賦初值時,每個元素用一對“{”和“}”括起來,字符型元素用“‘”括起來,選項A,B、C、D中只有選項A符合條件。所以,A選項為所選。38.有以下程序main(){union{unsignedintn;unsignedcharC;}ul;u1.C=‘A’;printf(“%c\n”,u1.n);}執(zhí)行后輸出結(jié)果是A.產(chǎn)生語法錯B.隨機值C.AD.65正確答案:C解析:在定義共用體的同時,定義了一個共用體型變量u1,共占兩個字節(jié),有兩個成員n和c,兩個成員的首地址是相同的.因此給u1.c賦一個“A”,其實就是給無符號整型成員u1.n的低字節(jié)賦一個“A”,輸出u1.n的時候是以字符型的形式輸出,只輸出它的低地址的一個字節(jié),因此為“A”。所以,C選項為所選。39.以下程序十函數(shù)scmp的功能是返回形參指針s1和s2所指字符串中較小字符串的首地址:#include<stdio.h>#include<string.h>char*scrap(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*庫函數(shù)strcpy對寧符中進行復制*/strcpy(string,scmp(string,str[2]));printf(“%s\n”,string);}若運行時依次輸入:abcd、4bba和abc三個寧符市,則輸出結(jié)果為A.a(chǎn)bcdB.a(chǎn)bbaC.a(chǎn)bcD.a(chǎn)bca正確答案:A解析:字符串比較大小的標準是從第一個字符開始依次向右比較,遇到某一個字符ASCII碼值較大時,該字符所在的字符串就是較大的字符串。主函數(shù)中調(diào)用了函數(shù)scmp(),分析不難知道該函數(shù)的作用是返回參加比較的兩個字符串中的較小的字符串,它的主函數(shù)中定義了一個二維字符數(shù)組來存放三個字符串.接著通過for循環(huán)給每個字符串賦值,賦值后三個字符串分別為“abcd”、“abba”、“abc”,接著比較str[0]和str[1]的大小,根據(jù)字符串大小比較標準可知str[0]較小,然后通過函數(shù)strcpy()把str[0]中的字符串,拷貝到string中,然后比較string和str[2]的大小,比較結(jié)果是string較小,最后輸出string的值為“abcd”,所以,4個選項中選項A符合題意。40.下面程序的功能是輸出以下形式的金寧塔圖案:*************main(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf(““);for(j=1;j<=();j++)printf(“*”);printf(“\n”);}}在下劃線處應(yīng)填入的是A.iB.2*i-1C.2*i+1D.i+2正確答案:B解析:通過觀察可知圖形共四行,上函數(shù)中通過一個for循環(huán)四次,輸出4行。第一行輸出3個空格和1個“*”,第2行輸出2個空格和3個“”,第3行輸出3個空格和5個“*”,第四行輸出7個“*”,主函數(shù)中通過第二個循環(huán)控制每行的輸出空格數(shù),第三個for循環(huán)控制輸出的“*”的個數(shù),總結(jié)規(guī)律:每行輸出的“*”的個數(shù),總比前一行的多2個,且第一行的個數(shù)為1,可以斷定每行輸出的”*”的個數(shù)組成了一個公差為2的等差數(shù)列,所以每行輸出“*”的個數(shù)即該等差數(shù)列的通項,故該空格處應(yīng)該填寫2*i-1,所以,4個選項中選項B符合題意。41.若有以下定義和語句:ints[4][5],(*ps)[5];ps=s;則對s數(shù)組元素的正確引用形式是A.ps+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+3正確答案:C解析:本題首先定義了一個4行5列的數(shù)組s,又定義了一個指向由5個元素組成的一維數(shù)組的指針變量ps,通過賦值讓ps指向了數(shù)組s的首地址。此時數(shù)組元素s[i][j]的地址為“*(ps+1)+j”,數(shù)組元素s[i][j]可表示為*(*(ps+1)+j)。選項B表示的是數(shù)組元素a[3][0]的地址;選項D表示的是數(shù)組元素s[1][3]的地址;選項A中“ps+1”為指向下一行(第二行)的地址;選項c中ps[0][2]無條件等價于“*(ps[0]+2)”又無條件等價于”(*(ps+0)+2)”,即是數(shù)組元素s[0][2]。所以,4個選項中C為所選。42.以下程序的輸出結(jié)果是main(){intb[3][3]={0,1,2,O,l,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t=t+b[i][b[j][j]];printf(“%d\n”,t);}A.3B.4C.1D.9正確答案:B解析:本題中定義了一個二維數(shù)組b并初始化,定義了一個變量t并賦初值1。接著通過一個二重循環(huán)將若干個元素的值加到變量t中。循環(huán)的執(zhí)行步驟是:外層循環(huán)變量i=0時,內(nèi)層循環(huán)變量j=i,執(zhí)行語句“t=t+b[i][b][j][j]]”,相當于t=t+b[0][b][0][0]],由于b[0][0]的值為0,得到t的值為1;依次類推,循環(huán)共執(zhí)行了3次,最后輸出t的值為4。所以,4個選項中B為所選。43.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;正確答案:C解析:data是一結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應(yīng)該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個成員,而不是一單獨的變量,故選項A不正確;選項B在p=data.a表達式中右邊為一個結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應(yīng)該將一地址賦給它,改選項B不正確:選項D表達式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確;4個選項中只有C正確。44.有以下程序main(){inta=i,b;for(b=1;b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a-=3;}printf(“%d\n”,B);}程序運行后的輸出結(jié)果是A.3B.4C.5D.6正確答案:B解析:在一個循環(huán)體中,若執(zhí)行到break則跳出循環(huán)體,執(zhí)行循環(huán)體后面第一條語句;若執(zhí)行到continue則開始下一次循環(huán)體的執(zhí)行。本題中a的初始值為1,在循環(huán)體中首先判斷a,如果>=8就用break跳出循環(huán),接下來的判斷語句a%2==1,是判斷a除以2的余數(shù)是否為1,即a是否為奇數(shù),是的話給a累加一個5,然后用continue開始下一次循環(huán).若兩個條件都不滿足就讓a自減一個3.因此第1次循環(huán)開始a為1不大于8,且是奇數(shù),所以a被累加5開始下一次循環(huán);第2次循環(huán)開始a為6不大于8,不是奇數(shù),所以a被減去3;第3次循環(huán)開始a為3不大于8,是奇數(shù),所以a被加上一個5;第4次開始a為8,滿足第一個條件跳出循環(huán)。b在第1次循環(huán)時等于1,以后每次累加1,所以最后輸出為4,選項B正確.45.有以下程序,其中函數(shù)f的功能是將多個字符串按字典順序排序#include<string,h>voidf(char*p[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){t=p[i];p[i]=p[j];p[j]=t;}}main(){char*p[5]={“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”};f(p,5);printf(“%d\n”。strlen(p[1]));}程序運行后的輸出結(jié)果是A.2B.3C.6D.4正確答案:D解析:本題所說的字典順序是由f()函數(shù)中所調(diào)用的strcmp()函數(shù)對字符串大小的比較方法來決定的。strcmp()函數(shù)是依次對兩個參數(shù)所指字符串對應(yīng)位置上的字符兩兩進行比較,當出現(xiàn)第一對不相同的字符時,即由這兩個字符的ASCII碼值的大小來決定整個字符串的大小。另外,根據(jù)f()函數(shù)中交換兩個元素的條件strcmp(p[i],p[j]>0可以看出,當前面的元素大于后面的元素時,則交換兩個元素,即從小到大排序。所以數(shù)組最終排序的結(jié)果是”aabdfg”,”abbd”,”abc”,“cd”,”dcdbe”。因此最終輸出的p[1]的長度為4.應(yīng)該選擇D。46.有以下函數(shù)fun(char*a,char*B){while((*a!=‘\0’)&&(*b!=‘\0’)&&(*a==*B)){a++;b++;}return(*a-*B);}該函數(shù)的功能是A.計算a和b所指字符串的長度之差B.將b所指字符串復制到a所指字符串中C.將b所指字符串連接到a所指字符串后面D.比較a和b所指字符串的大小正確答案:D解析:本題要求閱讀的代碼是一個函數(shù),閱讀之前先要看清函數(shù)的定義,該函數(shù)有兩個參數(shù),都是字符指針,這說明它接收的是兩個字符串.該函數(shù)沒有定義返回類型,C語言規(guī)定函數(shù)的返回類型為int時可以省略,所以切不可將其看成是無返回類型的void型函數(shù),它是int型函數(shù)。函數(shù)體中除了返回語句外,只有一條while循環(huán)語句,該循環(huán)的循環(huán)條件為(*a!=‘\’0}&&(*b!=‘\0’)&&(*a==*B),即當a和b所指處都不是字符結(jié)束符’\0’并且a和b所指處的內(nèi)容相等時執(zhí)行循環(huán)。而循環(huán)體中只是簡單地將指針a和b同時往后移動1位。循環(huán)結(jié)束后返回a所指內(nèi)容減去b所指內(nèi)容的差。換個角度去考慮,也就是說當字符串a(chǎn)或b中有一個結(jié)束了或者是它們的相同位置中有一個字符不同時,則返回該位置兩個字符之差。若兩者長度相同而且所有對應(yīng)字符都相同的話,最后返回的是’\0\-’\0’=0,否則的話就返回兩個字符串第一對不相同的字符之差.這時應(yīng)該可以看出來,這個函數(shù)實現(xiàn)的是對兩個字符串的比較。所以,4個選項中D正確。47.有以下程序floatfl(floatn){returnn*n;}floatf2(floatn){return2*n;}main(){float(*p1)(float),(*p2)(float),(*t)(float),y1,Y2;p1=f1;p2=f2;y1=p2(p1(2.O));t=p1;p1=p2;p2=t;y2=p2(pl(2.0));printf(“%3.0f,%3,Of\n”,y1,y2);}程序運行后的輸出結(jié)果是A.8,16B.8,8C.16,16D.4,8正確答案:A解析:題目一開始定義了兩個函數(shù),f1()實現(xiàn)的是返回參數(shù)的平方;f2()實現(xiàn)的是返回參數(shù)的2倍。接下來在主函數(shù)中定義了三個函數(shù)指針p1,p2,t。語句p1=f1;p2=f2;讓指針p1指向函數(shù)n(),指針p2指向函數(shù)9()。然后調(diào)用p2(p1(2.0)),即讓2先平方再乘以2,結(jié)果為8并賦給y1。然后語句序列t=p1;p1=p2;p2=t;交換了p1和p2的值,即p1指向f2(),p2指向f1()。再調(diào)用p2(p1(2.0)),讓2先乘以2再平方,結(jié)果為16賦給y2.最后輸出y1,y2的值為8和16,應(yīng)該選擇A。48.有以下程序:#inClude<stdlib.h>structNODE{intnum;structNODE*next;};main(){StructN00E*p,*q,*r;intsum;0;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(Sizeof(structNODE));p->num=1;q->num=2;r->num=3;p->next=q;q->next=r;r->next=NULL;sum+=q->next->num;sum+=p->num;printf(“%d\n”,sum);}執(zhí)行后的輸出結(jié)果是A.3B.4C.5D.6正確答案:B解析:本題中定義了一個結(jié)點structNODE,在主函數(shù)中定義了三個結(jié)點變量指針p、q和r,接著通過malloc函數(shù)分配了三個結(jié)點并讓p、q和r分別指向他們,再接著給p、q和r所指向的結(jié)點的hum域賦值為1、2、3,然后讓結(jié)點p指向q,讓q指向r,r指向NULL。顯然q->next->num的值為指針r所指向結(jié)點的num域的值為3,p->num的值為指針p所指向結(jié)點的num域的值為1,故最后輸出s的值為3+1=4。所以,4個選項中選項B符合題意。49.有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r,分別指向此鏈表中的3個連續(xù)結(jié)點。Structnode{intdata;Structnode*hext;}*p,*q,*r;現(xiàn)要將Q所指結(jié)點從鏈表中刪除,同時要保持鏈表的連續(xù),以下不能完成指定操作的語句是A.p->next=q->next;B.p->next=p->next->next;C.p->next=r;D.p=q->next;正確答案:D解析:要刪除鏈表中間的某個結(jié)點,只需要使它的前一個結(jié)點的next指針指向它的后一個結(jié)點-不過,嚴格來講還需要使用free()函數(shù)釋放掉該結(jié)點在內(nèi)存中所占的空間。本題要刪除的是q所指結(jié)點(以下簡稱q結(jié)點),只需使p結(jié)點的next指針指向r結(jié)點即可。選項A中,因為Q結(jié)點的next指向r結(jié)點,所以執(zhí)行p->next=q->next;語句后p結(jié)點的next就指向了r結(jié)點,故選項A能完成刪除。選項B中,p->next->next等價于q->next,因此也能完成刪除。選項C直接讓p->next指向r結(jié)點,當然可以刪除。選項D使指針p指向q->next(即r結(jié)點),這樣做不會影響到內(nèi)存中的鏈表,所以應(yīng)該選擇D。50.有以下程序structSTU{charname[10];intnum;floatTotalScore;};voldf(structSTU*p){structSTUs[2]={{“SunDan”,20044,550),{“Penghua”.20045,537}},*q=s++p;++q;*p=*q;}main(){structSrUs[3]={{“YangSan”,20041,703),{“LiSiGuo”,20042,580}};f(s);printf(“%s%d%3.of\n”,S[1].name,s[1].num,s[1].Totalscore);}程序運行后的輸出結(jié)果是A.SunDan20044550B.Penghua20045537C.USiGuo20042580D.SunDan20041703正確答案:B解析:在主函數(shù)中,首先聲明了一個結(jié)構(gòu)體數(shù)組s[3],然后用數(shù)組名調(diào)用函數(shù)f,而數(shù)組名是數(shù)組首地址的指針,因此,傳遞給函數(shù)的是指向上函數(shù)中s[0]的指針。在函數(shù)中,將參數(shù)指針往后移動了一位++p;,所以該指針現(xiàn)在指向主函數(shù)中的s[1],函數(shù)中也聲明?一個結(jié)構(gòu)體數(shù)組s[2]和一個結(jié)構(gòu)體指針q,q雖然初始化指向函數(shù)中的結(jié)構(gòu)數(shù)組s[2]的首地址,但也被往后移動了一位,所以函數(shù)調(diào)用的結(jié)果是將函數(shù)中的s[1]賦給了主函數(shù)中的s[1],故最終輸出為:Penghua20045537,應(yīng)該選擇B。填空題(每空2分,共30分)請將每一個空的正確答案寫在答題卡上。注意:以命令關(guān)鍵字填空的必須拼寫完整。51.算法的復雜度主要包括______復雜度和空間復雜度。正確答案:時間解析:算法的復雜度主要指時間復雜度和空間復雜度。52.在一棵二叉樹上第6層的結(jié)點個數(shù)最多是______個。正確答案:32解析:根據(jù)二叉樹的性質(zhì),在二叉樹的第K層上,最多有2k-1個結(jié)點。所以,第6層的結(jié)點數(shù)最多為32。53.若按功能劃分,軟件測試的方法通常分為______測試方法和黑盒測試方法。正確答案:白盒解析:軟件測試的方法分為白盒測試方法和黑盒測試方法.54.在數(shù)據(jù)庫理論中,數(shù)據(jù)物理結(jié)構(gòu)的改變,如存儲設(shè)備的更換、物理存儲的更換、存取方式改變等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不引起應(yīng)用程序的變化,稱為______。正確答案:物理獨立性解析:數(shù)據(jù)的物理結(jié)構(gòu)改變,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不引起應(yīng)用程序的變化,這種性質(zhì)叫做物理獨立性。55.問題處理方案的正確而完整的描述稱為______。正確答案:算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。56.若有語句inti=-19,j=i%4;printf(“%d\n”,j),則輸出的結(jié)果是______。正確答案:-3解析:本題考核的知識點是運算符“%’的應(yīng)用。該運算符是求兩個數(shù)相除的余數(shù),其結(jié)果與被除數(shù)的符號一致,本題中“-19%4”的值為“-3”,所以說空格處應(yīng)該填-3。57.以下程序運行后的輸出結(jié)果是______。#defineS(x)4*X*x+1main(){inti=6,j=8;printf(“%d\n”,S(i+i));}正確答案:81解析:,解此類題一定要注意宏替換與函數(shù)調(diào)用的區(qū)別。宏替換是字面上的,在編譯期間就完成了,它只是將實參字符串替換蚌宏中形參出現(xiàn)的位置,得到的新串來替換掉宏調(diào)用.。而函數(shù)是將實參先計算好,然后將值賦給形參,再執(zhí)行函數(shù)體,整個過程在程序運行時發(fā)生。所以本題的宏調(diào)用s(1+1)將被替換成表達式4*i+j*i+j+1等于4*6+8*6+8+1=24+48+8+1=81。所以本題輸出81。58.以下程序的輸出結(jié)果是______。main(){inta=0;a+-(a=8);printf(“%d\n”,a);}正確答案:16解析:在程序中首先將8賦值給變量a,然后在進行復合賦值運算。即a=a+a=8+8=16,所以該空格處應(yīng)該填16。59.若有以下程序main(){inta=4,b=3,c=5,t=0;if(a<b)t=a;a=b;b=t;if(a<c)t=a;a=c;c=t;printf(“%d%d%dln”,a,b,c);}執(zhí)行后輸出結(jié)果為______。正確答案:503解析:此處需注意的是:如果if后面的條件為真,只執(zhí)行其后的一條語句或一條復合語句,如果if后面的條件為假,只執(zhí)行else后面的一條語句或一條復合語句。先判斷表達式“a<b”為假,不執(zhí)行“t=a”,但執(zhí)行“a=b;b=t;”,s的值為3,b的值為0。在判斷表達式“a<c”,值為真,所以執(zhí)行后面的3條語句“t=a;a=c;c=t”,結(jié)果a的值為5,c的值為3,所以最后輸出的結(jié)果為5、0和3。60.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁?。main(){intt=0,s=0,i;for(i=1;i<=5;i++){t=i+______;s=s+t;}printf(“s=%d\n”,s);}正確答案:t*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。61.若有以下程序main(){chara;a=‘H’-’A’+’0’;printf(“%c\n”,a);}執(zhí)行后輸出的結(jié)果是______。正確答案:7解析:本題考核的知識點是字符類型變量的運算。字符型數(shù)據(jù)可作為整型參加算術(shù)運算,其值為其對應(yīng)的ASCII碼?!疕’-’A’的結(jié)果是7,加’0’后是’7’的ASCII碼,所以輸出的是字符’7’。62.以下程序的輸出結(jié)果是______。main(){char*p-”abcdefgh”,*r;long*q;q=(long*)p;q++;r=[char*)q;printf(“%s\n”,r);}正確答案:efgh解析:本題定義了一個字符型指針變量p并通過賦初值讓它指向了一個字符串,定義了另一個字符型指針變量r和一個長整型指針變量q。首先通過語句“q=(long*)p;”把P的地址值強制轉(zhuǎn)換為長整型地址值并賦值給q,然后執(zhí)行“q++;”,地址值增加了4,執(zhí)行語句“r=(char*)q”,把長整型指針變量q的值再強制轉(zhuǎn)換成字符型地址值并賦給r,r的值應(yīng)為字符串中字符“e”的地址,最后輸出r指向的字符串,是“efgh”。63.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是______。#defineN2#defineMN+1#defineKM+1*M/2main(){inti;for(i-1;i<K;i++){...}...}正確答案:4解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。64.以下程序運行后的輸出結(jié)果是______。structNODE{inthum;structNODE*next;};main(){structNODEs[3]={{1,‘\0’},{2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論