




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級(C語言)筆試模擬試卷11(題后含答案及解析)題型有:1.選擇題2.填空題選擇題(1-10、21-40每題2分,11-20每題1分,共70分)下列各題A、B、C、D四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位置上。1.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是()。A.程序的規(guī)模B.程序的易讀性C.程序的執(zhí)行效率D.程序的可移植性正確答案:B解析:結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是程序清晰易讀,可理解性好。2.視圖設(shè)計一般有三種設(shè)計次序,下列不屬于視圖設(shè)計的是()。A.自頂向下B.由外向內(nèi)C.由內(nèi)向外D.自底向上正確答案:B解析:視圖設(shè)計一般有三種設(shè)計次序,它們分別是自頂向下、自底向上和由內(nèi)向外,可以單獨使用也可混合使用。3.下列關(guān)于棧的敘述中正確的是()。A.在棧中只能插入數(shù)據(jù)B.在棧中只能刪除數(shù)據(jù)C.棧是先進先出的線性表D.棧是先進后出的線性表正確答案:D解析:棧是限定在一端進行插入與刪除的線性表,是按照“先進后出”或“后進先出”的原則組織數(shù)據(jù)的,因此,棧也被稱為“先進后出”表或“后進先出”表。4.在軟件生命周期中,能準確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。A.概要設(shè)計B.詳細設(shè)計C.可行性分析D.需求分析正確答案:D解析:軟件生命周期的主要活動階段為:①可行性研究和計劃制定。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標和總的要求,給出其功能、性能、可靠性以及接口等方面的可能方案,制定完成開發(fā)任務(wù)的實施計劃。②需求分析。對待開發(fā)軟件提出的需求進行分析并給出詳細定義,即準確地確定軟件系統(tǒng)的功能,編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。③軟件設(shè)計。系統(tǒng)設(shè)計人員和程序設(shè)計人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及處理流程。④軟件實現(xiàn)。完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。⑤軟件測試。在設(shè)計測試用例的基礎(chǔ)上,檢驗軟件的各個組成部分。編寫測試分析報告。⑥運行和維護。將已交付的軟件投入運行,并在運行使用中不斷地維護,根據(jù)新提出的需求進行必要而且可能的擴充和刪改。5.下列說法中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是()。A.數(shù)據(jù)結(jié)構(gòu)B.數(shù)據(jù)操作C.數(shù)據(jù)查詢D.數(shù)據(jù)約束正確答案:C解析:數(shù)據(jù)模型所描述的內(nèi)容有數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束。其中,數(shù)據(jù)結(jié)構(gòu)主要描述數(shù)據(jù)的類型、內(nèi)容、性質(zhì)以及數(shù)據(jù)庫的聯(lián)系等;數(shù)據(jù)操作主要描述在相應(yīng)數(shù)據(jù)結(jié)構(gòu)上的操作類型與操作方式。6.以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是()。A.隊列B.線性表C.二叉樹D.棧正確答案:C解析:線性表、棧和隊列等數(shù)據(jù)結(jié)構(gòu)所表達和處理的數(shù)據(jù)以線性結(jié)構(gòu)為組織形式。棧是一種特殊的線性表,它只能在固定的一端進行插入和刪除操作,又稱后進先出表;隊列是插入在一端進行,刪除在另一端進行的線性表,又稱先進先出表。7.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為()。A.n+1B.nC.(n+1)/2D.n/2正確答案:B解析:在順序查找中,如果線性表中被查元素不在線性表中,或是線性表中的最后一個,則為了查找這個元素需要與線性表中所有元素進行比較,這是順序查找最壞的情況。8.下列有關(guān)數(shù)據(jù)庫的描述,正確的是()。A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關(guān)系C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件正確答案:C解析:數(shù)據(jù)庫是數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個應(yīng)用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共享”的特點。9.下面不屬于軟件設(shè)計原則的是()。A.抽象B.模塊化C.自底向上D.信息隱蔽正確答案:C解析:軟件設(shè)計遵循軟件工程的基本目標和原則,建立了適用于在軟件設(shè)計中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念,它們是抽象、模塊化、信息隱蔽和數(shù)據(jù)獨立性。自底向上是集成測試中增量測試的一種。10.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流圖(DFD)作為描述工具的軟件開發(fā)階段是()。A.可行性分析B.需求分析C.詳細設(shè)計D.程序編碼正確答案:B解析:軟件開發(fā)階段包括需求分析、總體設(shè)計、詳細設(shè)計、編碼和測試五個階段,其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。11.程序中若有如下說明和定義語句:charfun(char*);main(){char*s=“one”,a[5]={0},(*f1)()=fun,ch;┆}以下選項中對函數(shù)fun的正確調(diào)用語句是()。A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s)正確答案:A解析:程序中定義的n是一個指向函數(shù)fun的指針變量,即將函數(shù)fun的人口地址賦給指針變量f1,這時f1和fun都指向函數(shù)的開頭,調(diào)用*f1就是調(diào)用函數(shù)fun。注意,此時用函數(shù)指針變量調(diào)用函數(shù)時,只需用(*f1)代替函數(shù)名fun即可,再在(*f1)后的括號中根據(jù)需要寫上實參,所以(%f1)(a);相當于fun(a);故選項A)是正確的。12.設(shè)有如下說明:typedefstruetST{longa;intb;charc[2];}NEW;則下面敘述中正確的是()。A.以上的說明形式非法B.ST是一個結(jié)構(gòu)體類型C.NEW是一個結(jié)構(gòu)體類型D.NEW是一個結(jié)構(gòu)體變量正確答案:C解析:typedef關(guān)鍵字用于聲明一個新的類型名代替已有的類型名。本題中如果沒有用typedef進行定義的話,則structST為結(jié)構(gòu)體類型,現(xiàn)在用typedef定義后,相當于用NEW代表了structST這一結(jié)構(gòu)體類型,故NEW為結(jié)構(gòu)體類型。13.以下不能定義為用戶標識符的是()。A.MainB._0C._intD.sizeof正確答案:D解析:C語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線,標識符名不能與關(guān)鍵字重名。選項A)中Main與主函數(shù)名main不同,所以選項D)是非法的標識符。14.以下選項中不能作為合法常量的是()。A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0正確答案:B解析:選項中的幾個常量都是指數(shù)形式的實型常量。該類型的常量要求字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),所以選項B)錯誤。15.有以下程序:#include<stdio.h>main(){intm=12,n=34;printf(“%d%d”,m++,++n);printf(“%d%d\n”,n++,++m);}程序運行后的輸出結(jié)果是()。A.12353514B.12353513C.12343514D.12343513正確答案:A解析:程序執(zhí)行printf(“%d%d”,m++,++n);后,輸出的是m和n+1的值1235,然后m+1=13,再執(zhí)行printf(“%d%d\n”,n++,++m);輸出n和m+1的值3514,之后n+1=36。這里要注意的是m++和++m的區(qū)別:m++是先輸出m的值,再執(zhí)行m++;++m是先執(zhí)行++m,再輸出m的值。16.有以下程序:#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<a+10;p++)printf(“%d,”,*p);}程序運行后的輸出結(jié)果是()。A.1,2,3,4,5,6,7,8,9,0,B.2,3,4,5,6,7,8,9,10,1,C.0,1,2,3,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,正確答案:A解析:C語言規(guī)定數(shù)組名代表數(shù)組的首地址,所以for循環(huán)中循環(huán)變量p的初值即&a[o),故輸出的*p的值為a[0]的值。執(zhí)行p++后,指針變量P指向a[1],這時輸出*P即輸出a[1]的值,經(jīng)過10次循環(huán),將輸出a數(shù)組的全部數(shù)據(jù):1,2,3,4,5,6,7,8,9,0,17.有定義語句:intb;charc[10];則正確的輸入語句是()。A.seanf(“%d%s”,&b,&c);B.scanf(“%d%s”,&b,c);C.seanf(“%d%s”,b,c);D.scanf(“%d%s”,b,&c);正確答案:B解析:scanf函數(shù)中格式控制后面是地址表列,不能用變量名。數(shù)組名c代表數(shù)組在內(nèi)存的首地址,&b代表變量b的首地址,選項B)正確。18.若有以下說明和定義:uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是()。A.data的每個成員起始地址都相同B.變量data所占的內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等C.程序段:data.a=5;printf(“%f\n”,data.c);輸出結(jié)果為5.000000D.data可以作為函數(shù)的實參正確答案:C解析:共用體成員a,b,c共占用同一個內(nèi)存空間,所以data的每個成員起始地址都相同;共用體變量所占的內(nèi)存長度等于最長的成員的長度,故變量data所占的內(nèi)存字節(jié)數(shù)與成員所占字節(jié)數(shù)相等;由于各成員變量的類型不一致,所以它們的存儲方式也不相同,整型占用2個字節(jié)的存儲空間,double型占用8個字節(jié)的存儲空間;data可以作為函數(shù)的實參,此時data作為一個地址進行地址傳送;執(zhí)行data.a=5;printf(“%f\n”,data.c);系統(tǒng)不能自動將整型變量轉(zhuǎn)換為浮點型值,printf函數(shù)只是將內(nèi)存中的數(shù)據(jù)以不同類型輸出,而不能將內(nèi)存中的整型數(shù)據(jù)自動轉(zhuǎn)換為等值的浮點數(shù),故選項C)錯誤。19.有以下程序:#include<stdio.h>main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf(“%d,%d\n”,a,b);}程序運行后的輸出結(jié)果是()。A.6,1B.2,1C.6,0D.2,0正確答案:B解析:“/”表示整除,“%”表示求余。程序中表達式a=d/10%9的值為25/10%9=2,則b=a&&(-1)=2&&(-1)=1(注意:-1表示真,0表示假),所以a,b的值分別為2,1。20.有以下程序:#include<stdio.h>main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13;14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<=i;j++)printf(“%4c”,”);for(j=______;j<4;j++)printf(“%4d”,hum[i][j]);printf(“\n”);}}若要按以下形式輸出數(shù)組右上半三角;1234678111216則在程序下劃線處應(yīng)填入的是()。A.i-1B.iC.i+1D.4-i正確答案:B解析:本程序為二重循環(huán),外循環(huán)控制輸出數(shù)據(jù)的行數(shù),內(nèi)循環(huán)控制輸出數(shù)據(jù)的列數(shù)。本題需要輸出4行4列,外層循環(huán)語句for(i=0;i<4;i++)控制輸出4行,內(nèi)層的第一條for循環(huán)控制每行輸出的空格數(shù),第二條for循環(huán)用于控制每行的數(shù)字輸出,由于每一行的數(shù)字個數(shù)比前一行少1個,所以內(nèi)層的第二條for循環(huán)每次循環(huán)的次數(shù)需要遞減1,那么j的初始值應(yīng)該遞增,因為第一行輸出的是4個數(shù),所以空格中應(yīng)填i。21.若已定義c為字符型變量,則下列語句中正確的是()。A.c=‘97’B.c=“97”;C.c=97;D.c=“a”;正確答案:C解析:C語言中,字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個字符數(shù)據(jù)既可以字符形式輸出,也可以整數(shù)形式輸出,所以把整型數(shù)據(jù)賦給字符型變量,直接用c=97即可,所以選項C)正確。由于題目要求選出正確的語句,選項A)少分號,不能構(gòu)成語句,因此錯誤。B)、D)是將一個字符串賦給一個字符變量,所以錯誤。22.設(shè)變量x為float型且已賦值,則以下語句中能將x中的數(shù)值保留到小數(shù)點后兩位,并將第三位四舍五入的是()。A.x=x*100+0.5/100.0;B.x=(x*100+0.5)/100.0C.x=(int)(x*100+0.5)/100.0;D.x=(x/100+0.5)/100.0;正確答案:C解析:本題考查實型數(shù)據(jù)。題目要求保留到小數(shù)點后兩位,選項A)、B)、D)都不合要求。在選項C)中,x*100+0.5的作用是將第三位四舍五入,取整后再除以100.0,即可得符合要求的數(shù)據(jù)。23.有以下程序:#include<stdio.h>main(){intk=4,n=0;for(;n<k;){n++;if(n%3!=0)continue;k--;}printf(“%d,%d\n”,k,n);}程序運行后的輸出結(jié)果是()。A.1,1B.2,2C.3,3D.4,4正確答案:C解析:本題考查循環(huán)和continue語句,continue語句的功能是結(jié)束本次循環(huán)。n從0開始循環(huán),判斷n%3!=0是否成立,如果成立,結(jié)束本次循環(huán),繼續(xù)下一次for循環(huán);否則執(zhí)行k--,并繼續(xù)下一次for循環(huán),直至循環(huán)結(jié)束。在程序中,當n取1,2時,不執(zhí)行k--,當n取3時,執(zhí)行k--,k變?yōu)?,循環(huán)結(jié)束,輸出k,n的值分別為3,3。24.以下程序的功能是計算:。#include<stdio.h>main(){intn;floats;s=1.0;for(n=10;n>1;n--)s=s+1/n;printf(“%6.4f\n”,s);}程序運行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行是()。A.s=1.0;B.for(n=10;n>1;n--)C.s=s+1/n;D.printf(“%6.4f\n”,s);正確答案:C解析:該程序的運行結(jié)果是1.0000,算法錯誤。在s=s+1/n中,因為n為整型,所以循環(huán)中1/n始終為0。這就是本題算法錯誤的原因。應(yīng)把s=s+1/n改為s=s+1.0/n。25.若有如下程序段,其中s,a,b,c均已定義為整型變量,且a,c均已賦值(c大于0):s=a;for(b=1;b<=c;b++)s=s+1;則與上述程序段功能等價的賦值語句是()。A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;正確答案:B解析:本題考查賦值語句。s的初值是a,b從1循環(huán)到c,每循環(huán)一次,s加1,共加了1*c次,因此程序?qū)崿F(xiàn)的功能是s=a+c。26.若已定義的函數(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)用。在有參函數(shù)調(diào)用中,是將主調(diào)函數(shù)的實參值傳給被調(diào)函數(shù)的形參。按函數(shù)在程序中出現(xiàn)的位置來分,有以下三種函數(shù)調(diào)用形式:①函數(shù)調(diào)用作為一條語句。例如:fun();這時不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。故選項A)正確。②函數(shù)出現(xiàn)在表達式中,這種表達式稱為函數(shù)表達式。這時要求函數(shù)帶回一個確定的值以參加表達式的運算。例如:c=5*max(a,b);函數(shù)max是表達式的一部分,將其值乘以5后賦給c。故選項C)正確。③函數(shù)調(diào)用作為一個函數(shù)的實參,例如:m=max(a,max(b,c));其中max(b,c)是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實參。故選項B)正確。函數(shù)調(diào)用不可作為一個函數(shù)的形參,因為函數(shù)調(diào)用參數(shù)的數(shù)據(jù)傳遞是單向傳遞,即實參傳給形參,不能由形參傳給實參。故選項D)錯誤。27.有以下函數(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解析:本題考查函數(shù)調(diào)用。函數(shù)調(diào)用時,實參前不需加類型說明,選項A)錯誤;題目中的函數(shù)沒有返回值,所以選項B)錯誤;函數(shù)調(diào)用前不需要加類型說明,選項D)錯誤。28.有以下程序:#include<stdio.h>voidfun(char*a,char*b){a=b;(*a)++;}main(){charc1=‘A’,c2=‘a(chǎn)’,*p1,*p2;p1=&c1;P2=&c2;fun(p1,p2);printf(“%c%c\n”,c1,c2);}程序運行后的輸出結(jié)果是()。A.AbB.a(chǎn)aC.AaD.Bb正確答案:A解析:本題中fun函數(shù)的形參是兩個指向字符型數(shù)據(jù)的指針,其功能是把b賦給a,然后將a所指存儲單元里的變量值加1。在main函數(shù)中,p1里存放的是c1的地址,p2里存放的是c2的地址,經(jīng)函數(shù)調(diào)用fun(p1,P2)后,p2的值賦給了p1,使p1和p2都指向了c2,而(*a)++又使’a’的值加1變成了’b’,所以此時c2的值為’b’,而c1的值沒變,仍為’A’。程序改變的是p1的地址和c2的值。29.有以下程序:#include<stdio.h>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解析:本題考查邏輯或運算。因為b>a為真,即n=1,則m不需再計算,保持原值,因此k值為1,m值仍為0。30.以下敘述中正確的是()。A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方B.花括號“{”和“}”只能作為函數(shù)體的定界符C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名D.分號是C語句之間的分隔符,不是語句的一部分正確答案:A解析:在C程序中/*……*/表示注釋部分,注釋只是讓閱讀程序的人更容易理解程序,對編譯和運行不起作用,可以加在程序中任何位置,選項A)正確;花括號“{”和“}”不僅可以作為函數(shù)體的定界符,還可以構(gòu)成復(fù)合語句,選項B)錯誤;系統(tǒng)提供的函數(shù)和main函數(shù)不能由用戶命名,選項C)錯誤;所有的C語句都以分號結(jié)尾,選項D)錯誤。31.下列函數(shù)定義中,會出現(xiàn)編譯錯誤的是()。A.max(intx,inty,int*z){*z=x>y?x:y;}B.intmax(intx,y){intz;z=x>y?x:y;returnz;}C.max(intx,inty){intz;z=x>y?x:y;return(z);}D.intmax(intx,inty){return(x>y?x:y);}正確答案:B解析:在選項B)中,定義max函數(shù)時,形參只定義了x的數(shù)據(jù)類型,而未定義y的數(shù)據(jù)類型,所以會出現(xiàn)編譯錯誤。32.以下不能正確定義二維數(shù)組的選項是()。A.inta[2][2]={{1},{2}};B.inta[][2]={1,2,3,4};C.inta[2][2]={{1},2,3};D.inta[2][]={{1,2},{3,4}};正確答案:D解析:選項A)定義的數(shù)組按行各數(shù)組元素分別是:1,0,2,0;選項B)定義的數(shù)組按行各數(shù)組元素分別是:1,2,3,4;選項C)定義的數(shù)組按行各數(shù)組元素分別是:1,0,2,3;因為定義數(shù)組時,第一維的長度可以不指定,第二維的長度必須指定,所以選項D)錯。33.有以下程序:#include<stdio.h>main(){ints=0,a=1,n;scanf(“%d”,&n);do{s+=1;a=a-2;}while(a!=n);printf(“%d\n”,s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值是()。A.-1B.-3C.-5D.0正確答案:B解析:本題考查do-while語句。當n=-1時,s+=1,s=1;a=a-2=-1;a!=n不成立,結(jié)束循環(huán),此時s值為1,不符合題意;當n=-3時,s+=1,s=1;a=a-2=-1;a!=n成立,繼續(xù)循環(huán),s=s+1=2,a=a-2=-3;a!=n不成立,此時s值為2,符合題意。34.以下能正確定義一維數(shù)組的選項是()。A.intnum[];B.#defineN100intnum[N];C.intnum[0…100];D.intN=100;intnum[N];正確答案:B解析:C不允許對數(shù)組的大小作動態(tài)定義,即數(shù)組的大小不依賴于程序運行過程中變量的值,選項A)錯誤;字符常量可以作為定義數(shù)組大小的常量表達式,選項B)正確;不能用區(qū)間表示數(shù)組大小,選項C)錯誤;D)中的N為變量,所以錯誤。35.有以下程序:#include<stdio.h>main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf(“%d%d%3.1f%3.1f\n”,a,c,f,x);}程序運行后的輸出結(jié)果是()。A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5正確答案:B解析:本題考查復(fù)合賦值運算符。本題中先計算c的值,c=c*(x=6.5)=10*6.5=65;然后計算f的值,f=f/c=100.0/65=1.538462;最后計算a的值,a=f,a取f的整數(shù)部分,即為1。36.已定義以下函數(shù):fun(char*p2,char*p1){while((*p2=*p1)!=‘\0’){p1++;p2++;}}此函數(shù)的功能是()。A.將p1所指字符串復(fù)制到p2所指內(nèi)存空間B.將p1所指字符串的地址賦給指針p2C.對p1和p2兩個指針所指字符串進行比較D.檢查p1和p2兩個指針所指字符串中是否有’\0’正確答案:A解析:while((*p2=*p1)!=‘\0’表示將p1所指向的值賦給*p2,即將p1所指字符串復(fù)制到p2所指內(nèi)存空間。要注意這里*p2=*p1是賦值操作,而不是比較是否相等,所以選項B)、C)、D)都不對。37.以下選項中不能正確把cl定義成結(jié)構(gòu)體變量的是()。A.typedefstruct{intred;intgreen;intblue;}COLOR;COLORcl;B.structcolorcl{intred;intgreen;intblue;}C.structcolor{intred;intgreen;intblue;}cl;D.struct{intred;intgreen;intblue;}cl;正確答案:B解析:本題選項A)、C)、D)是定義結(jié)構(gòu)體及其變量的三種正確的形式,能正確將c1定義為結(jié)構(gòu)體變量。選項B)錯誤。38.有以下程序:#include<stdio.h>#defineF(x,y)(x)*(y)main(){inta=3,b=4;printf(“%d\n”,F(a++,b++));}程序運行后的輸出結(jié)果是()。A.12B.15C.16D.20正確答案:A解析:本題考查帶參數(shù)的宏定義。對F(a++,b++)展開后,宏的返回值為3×4=12,這里a++,b++都是先使用變量值,再自增。39.有以下程序:#include<stdio.h>fun(inta,intb){if(a>b)return(a);elsereturn(b);}main(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf(“%d\n”,r);}程序運行后的輸出結(jié)果是()。A.3B.6C.8D.12正確答案:D解析:本題考查函數(shù)的返回值。fun函數(shù)的功能是比較a,b的值,返回其中較大者。對于main函數(shù)中的語句r=fun(fun(x,y),2*z);是先調(diào)用fun(x,y)返回8,再將8和12作為實參調(diào)用函數(shù)fun,得到的返回值為12。40.有以下程序:#include<stdio.h>main(){printf(“%d\n”,NULL)”}程序運行后的輸出結(jié)果是()。A.0B.1C.-1D.NULL沒定義,出錯正確答案:A解析:本題按“%d”格式輸出,相當于輸出控制字符NULL的ASCII碼值,即為0。41.有定義:intx,y;若要通過scanf(“%d,%d”,&x,&y);使變量x得到數(shù)值11,變量y得到數(shù)值12,下面四組輸入形式中,錯誤的是()。A.1112<回車>B.11,12<回車>C.11,12<回車>D.11,<回車>12<回車>正確答案:A解析:格式輸入函數(shù)的一般形式為:scanf(格式控制,地址表列)在“格式控制”字符串中,除格式說明以外的其他字符為按原樣輸入的字符,在輸入數(shù)據(jù)時應(yīng)按原樣輸入這些字符。所以輸入時,兩個數(shù)字之間的逗號是不可少的。42.若程序中已包含頭文件stdio.h,以下選項能正確運用指針變量的程序段是()。A.int*i=NULL;scanf(“%d”,i);B.float*f=NULL;*f=10.5;C.chart=‘m’,*c;*c=&t;D.long*L;L=‘\0’;正確答案:D解析:本題考查指針變量的運用。選項A)、B)的指針定義錯誤,空指針NULL是對指針變量賦。值而得到的。例如:#defineNULL0int*p=NULL;對指針變量賦。值和不賦值的時候意義是不同的:指針變量未賦值時,它是指向任意不確定的存儲單元,不能使用,否則將造成意外錯誤;而指針變量賦0值后,則可以使用,只是它不指向具體的變量而已。選項C)中的*c=&t;錯誤,因為&t是地址,而*c是值。選項D)是讓指針L指向字符串的末尾,即字符串的結(jié)束符。43.以下不能定義為用戶標識符的是()。A.scanfB.VoidC._3com_D.int正確答案:D解析:標識符是C語言中用來表示變量名、數(shù)組名、函數(shù)名、指針名、結(jié)構(gòu)名、聯(lián)合名、枚舉常數(shù)名、用戶定義的數(shù)據(jù)類型名、語句標號等用途的字符序列。標識符由1~32個字符組成,第一個字符必須是字母或下劃線,后面的字符可以是字母、數(shù)字或下劃線。標識符不能與C關(guān)鍵字相同,并區(qū)分大小寫。選項D)錯誤,因為int是C語言中的關(guān)鍵字。44.以下程序中函數(shù)scmp的功能是返回形參指針s1和s2所指字符串中較小字符串的首地址。#include<stdio.h>#include<string.h>char*scmp(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對字符串進行復(fù)制*/strcpy(string,scmp(string,str[2]));printf(“%s\n”,string);}若運行時依次輸入:abcd、abba和abc三個字符串,則輸出結(jié)果為()。A.a(chǎn)bcdB.a(chǎn)bbaC.a(chǎn)bcD.baca正確答案:B解析:本題考查返回指針值的函數(shù)。一個函數(shù)可以帶回一個整型值、字符值、實型值等,也可以帶回指針型的數(shù)據(jù),即地址。函數(shù)strcmp(字符串1,字符串2)的作用是比較字符串1和字符中2。如果字符串1=字符串2,函數(shù)值為0;如果字符串1,字符串2,函數(shù)值為一正整數(shù);如果字符串1<字符串2,函數(shù)值為一負整數(shù)。本題程序中scmp函數(shù)的作用是比較s1和s2的大小,對strcmp函數(shù)的返回值進行判斷,如果字符串1<字符串2,則返回字符串1的值,反之返回字符串2的值。所以main函數(shù)中scmp(str[0],str[1])的返回值是abba,通過strcpy函數(shù)把返回值abba復(fù)制到string中。當執(zhí)行scmp(string,str[2])時,scrap函數(shù)的返回值為abba,再次復(fù)制到string中,最后string的值為abba。45.有定義:inta=1,b=2,c=3,x;則以下選項中各程序段執(zhí)行后,x的值不為3的是()。A.if(c<a)x=1;elseif(b<a)x=2;elsex=3;B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;正確答案:C解析:選項A),因為前面兩個條件都不滿足,所以執(zhí)行x=3。選項B),a<3成立,執(zhí)行x=3。選項C),a<3成立,執(zhí)行x=3;a<2成立,執(zhí)行x=2;a<1不成立,不執(zhí)行x=1,所以執(zhí)行此段程序后x=2。選項D),a<b成立,執(zhí)行x=b,此時x=2;b<c成立,執(zhí)行x=c,此時x=3;c<a不成立,不執(zhí)行x=a,所以執(zhí)行此段程序后x=3。46.有以下程序:#include<stdio.h>main(){intx=3,y=2,z=1;printf(“%d\n”,x/y&~z);程序運行后的輸出結(jié)果是()。A.3B.2C.1D.0正確答案:D解析:&是按位“與”運算符,若參加運算的兩個運算量的相應(yīng)位都為1,則該位的結(jié)果值為1,否則為0?!恰叭》础边\算符,用來對一個二進制數(shù)按位取反,即將0變1,1變0。對于x/y&~z,先計算x/y的值,結(jié)果為1,用十六進制表示為0001;z用十六進制表示為0001,則~z為FFFE;最后進行&運算,整個表達式的值為0。47.若fp已正確定義并指向某個文件,當未遇到該文件結(jié)束標志時函數(shù)feof(fp)的值為()。A.0B.1C.-1D.一個非0值正確答案:A解析:feof(fp)用來測試fp所指向的文件當前狀態(tài)是否“文件結(jié)束”。如果是文件結(jié)束,函數(shù)feof(fp)的值為1(真),否則為0(假)。48.已定義ch為字符型變量,以下賦值語句中錯誤的是()。A.ch=‘\’;B.ch=62+3;C.ch=NULL;D.ch=‘\xaa’;正確答案:A解析:字符型變量用來存放字符常量,且只能存放一個字符。賦值反斜杠線“\”,必須用轉(zhuǎn)義字符實現(xiàn),即ch=‘\\’,所以選項A)錯誤;字符型變量可以賦0~255之間的ASCII碼值,整型數(shù)據(jù)和字符型數(shù)據(jù)有時可以通用,所以選項B)正確;可以將NULL賦給一個字符型變量,NULL代表一個空字符,相當于0,選項C)正確;’\xaa’表示的是1~2位16進制數(shù)所代表的字符,所以選項D)正確。49.有以下程序:#include<stdio.h>main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf(“%d\n”,a[1][2]);}程序運行后的輸出結(jié)果是()。A.3B.6C.9D.2正確答案:B解析:本題考查指向數(shù)組元素的指針變量。p=&a[0][0]是把該數(shù)組的第一個元素a[0][0]的地址賦給指針變量p,a[1][2]是數(shù)組中的第6個元素,根據(jù)for循環(huán)中的賦值可知,輸出結(jié)果是6。50.有以下結(jié)構(gòu)體說明和變量定義,如下圖所示,指針p、q、r分別指向一個鏈表中的三個連續(xù)結(jié)點。structnode{intdata;structnode*next;}*p,*q,*r;現(xiàn)要將q和r所指結(jié)點的先后位置交換,同時要保持鏈表的連續(xù),以下錯誤的程序段是()。A.r->next=q;q->next=r->next;p->next=r;B.q->next=r->next;p->next=r;r->next=q;C.p->next=r;q->next=r->next;r->next=p;D.q->next=r->next;r->next=q;p->next=r;正確答案:A解析:對于選項A),執(zhí)行r->next=q后,r->next指向了q。此時q->next=r->next就相當于q->next=q;所以q的下一個結(jié)點指向了自己,而不是指向原來r的下一個結(jié)點,所以選項A)錯誤。填空題(每空2分,共30分)請將每一個空的正確答案寫在答題卡上。注意:以命令關(guān)鍵字填空的必須拼寫完整。51.在樹形結(jié)構(gòu)中,樹根結(jié)點沒有【】。正確答案:前件解析:在樹形結(jié)構(gòu)中,每一個結(jié)點只有一個前件,稱為父結(jié)點;沒有前件的結(jié)點只有一個,稱為樹的根結(jié)點;每一個結(jié)點可以有多個后件,它們都稱為該結(jié)點的子結(jié)點;沒有后件的結(jié)點稱為葉子結(jié)點。52.Jackson結(jié)構(gòu)化程序設(shè)計方法是英國的M.Jackson提出的,它是一種面向【】的設(shè)計方法。正確答案:數(shù)據(jù)結(jié)構(gòu)解析:結(jié)構(gòu)化分析方法主要包括:面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法,面向數(shù)據(jù)結(jié)構(gòu)的Jackson方法和面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法。53.面向?qū)ο蟮哪P椭校罨镜母拍钍菍ο蠛汀尽?。正確答案:類解析:面向?qū)ο竽P椭?,最基本的概念是對象和類。對象是現(xiàn)實世界中實體的模型化;將屬性集和方法集相同的所有對象組合在一起,可以構(gòu)成一個類。54.軟件設(shè)計模塊化的目的是【】。正確答案:降低復(fù)雜性解析:模塊化是指解決一個復(fù)雜問題時自頂向下逐層把軟件系統(tǒng)劃分成若干模塊的過程,由此分解來降低復(fù)雜性。55.數(shù)據(jù)模型按不同應(yīng)用層次分成三種類型,它們是概念數(shù)據(jù)模型、【】和物理數(shù)據(jù)模型。正確答案:邏輯數(shù)據(jù)模型解析:數(shù)據(jù)模型按不同的應(yīng)用層次分成三種類型,它們是概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型、物理數(shù)據(jù)模型。56.在C語言中(以16位PC機為例),一個float型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為4;一個double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為【】。正確答案:8解析:在一般系統(tǒng)中,一個float型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(32位),一個double型數(shù)據(jù)占8個字節(jié)。57.以下程序輸出的結(jié)果是【】。#include<stdio.h>main(){inta=5,b=4,c=3,d;d=(a>b>c);printf(“%d\n”,d);}正確答案:0解析:在本題中,d=(a>b>c);相當于d=(5>4>3);其計算過程為:先算5>4,結(jié)果為真,得1,即d=(1>3);然后計算1>3,結(jié)果為假,得0。58.mystrlen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡ntmystden(char*str){inti;fo,(i=0;【】!=‘\0’;i++);return(i);正確答案:*(str+i)或str[i]解析:str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過程中,用*(str+i)或str[i]來訪問字符串的第i個元素,判斷是否是結(jié)束標志,如果不是,i=i+1,繼續(xù)取下一個元素進行判斷,直到*(str+i)的值為”\0”為止。59.以下程序的輸出結(jié)果是【】。#include<stdio.h>#deftneJFT(x)x*xmain(){inta,k=3;a=++JFT(k+1);printf(“%d”,a);}正確答案:9解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實參k+1替換,其他字符不變,所以JFT(k+1)經(jīng)替換后為k+1,k+1,則a=++k+1*k+1。若k的值為3,則經(jīng)過運算為a=4+1*4+1=9。60.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存入整型數(shù)據(jù),成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補充完整。structnode}intinfo;【】link;};正確答案:struetnode*解析:本題中的結(jié)構(gòu)類型名為struetnode,所以空白處應(yīng)填:structnode*,即定義一個指向自身的結(jié)構(gòu)體指針。61.設(shè)有以下結(jié)構(gòu)體類型:structst{charname[8];intnum;floats[4];}student[50];并且結(jié)構(gòu)體數(shù)組student中的元素都已有值。若要將這些元素寫到硬盤文件fp中,請將以下fwrite語句補
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西軟件職業(yè)技術(shù)大學(xué)《工程力學(xué)(下)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南通科技職業(yè)學(xué)院《經(jīng)濟法學(xué)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 合肥職業(yè)技術(shù)學(xué)院《數(shù)字信號處理與通信》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年湖北省部分省級示范高中高二上學(xué)期期中測試歷史試卷
- 江西工程學(xué)院《環(huán)境評價》2023-2024學(xué)年第二學(xué)期期末試卷
- 六盤水幼兒師范高等??茖W(xué)校《民族與文化地理》2023-2024學(xué)年第二學(xué)期期末試卷
- 信陽涉外職業(yè)技術(shù)學(xué)院《數(shù)字邏輯電路綜合》2023-2024學(xué)年第二學(xué)期期末試卷
- 昆山登云科技職業(yè)學(xué)院《專業(yè)技能訓(xùn)練化學(xué)教學(xué)技能與訓(xùn)練含》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南勞動人事職業(yè)學(xué)院《建筑給排水與消防》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州華商職業(yè)學(xué)院《劇目》2023-2024學(xué)年第二學(xué)期期末試卷
- 水手課件教學(xué)課件
- 《微生物學(xué)發(fā)展史》課件
- 網(wǎng)約車司機安全培訓(xùn)
- DB52T 1566-2021 托幼機構(gòu)消毒衛(wèi)生規(guī)范
- 非煤礦山復(fù)工復(fù)產(chǎn)安全培訓(xùn)
- 我國科技型中小企業(yè)稅收優(yōu)惠政策激勵效應(yīng)及優(yōu)化路徑研究的開題報告
- 舞蹈學(xué)課件教學(xué)課件
- 電力局供電公司聘用合同樣本
- 臨床中心靜脈穿刺置管護理深靜脈CVC
- 絲綢之路上的民族學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 鐵路基礎(chǔ)知識題庫單選題100道及答案解析
評論
0/150
提交評論