![國家二級C語言機試(選擇題)模擬試卷24(共270題)_第1頁](http://file4.renrendoc.com/view12/M09/1C/00/wKhkGWa9R46AMV_cAAH_-8gskDk474.jpg)
![國家二級C語言機試(選擇題)模擬試卷24(共270題)_第2頁](http://file4.renrendoc.com/view12/M09/1C/00/wKhkGWa9R46AMV_cAAH_-8gskDk4742.jpg)
![國家二級C語言機試(選擇題)模擬試卷24(共270題)_第3頁](http://file4.renrendoc.com/view12/M09/1C/00/wKhkGWa9R46AMV_cAAH_-8gskDk4743.jpg)
![國家二級C語言機試(選擇題)模擬試卷24(共270題)_第4頁](http://file4.renrendoc.com/view12/M09/1C/00/wKhkGWa9R46AMV_cAAH_-8gskDk4744.jpg)
![國家二級C語言機試(選擇題)模擬試卷24(共270題)_第5頁](http://file4.renrendoc.com/view12/M09/1C/00/wKhkGWa9R46AMV_cAAH_-8gskDk4745.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
國家二級C語言機試(選擇題)模擬試卷24(共9套)(共270題)國家二級C語言機試(選擇題)模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列敘述中正確的是()。A、在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態(tài)變化B、在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態(tài)變化C、在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態(tài)變化D、以上說法都不正確標準答案:C知識點解析:棧是先進后出的數據結構,在整個過程中,棧底指針不變,入棧與出棧操作均由棧頂指針的變化來操作,所以選擇C選項。2、以下敘述正確的是A、C語言程序是由過程和函數組成的B、C語言函數可以嵌套調用,例如:fun(fun(x))C、C語言函數不可以單獨編譯D、C語言中除了main函數,其他函數不可作為單獨文件形式存在標準答案:B知識點解析:在C語言中,允許函數的嵌套調用,即遞歸調用。在C語言中不存在過程的概念,在C語言中函數允許單獨編譯,可以作為單獨的文件形式存在。3、對下列二叉樹進行中序遍歷的結果是A、ACBDFEGB、ACBDFGEC、ABDCGEFD、FCADBEG標準答案:A知識點解析:本題考查二叉樹的遍歷,中序遍歷首先遍歷左子樹,然后訪問根節(jié)點,最后遍歷又子樹,選A。4、以下選項中可用作C程序合法實數的是A、3.0e0.2B、E9C、.1e0D、9.12E標準答案:C知識點解析:C程序的合法實數有兩種表示形式,一種是小數形式,另一種是指數形式,對于用指數形式表示的實數來說,需要灃意的是字*e或E之前必須要有數字,且字*e或E后面的指數必須為整數。5、結構化程序設計中,下面對goto語句使用描述正確的是()。A、禁止使用goto語句B、使用goto語句程序效率高C、應避免濫用goto語句D、以上說法都不對標準答案:C知識點解析:結構化程序設計中,應盡量避免使用GOTO語句,但不是禁止使用,所以選擇C。6、程序流程圖中帶有箭頭的線段表示的是()。A、圖元關系B、數據流C、控制流D、調用關系標準答案:C知識點解析:在數據流圖中,用標有名字的箭頭表示數據流。在程序流程圖中,用標有名字的箭頭表示控制流。所以選擇C。7、有以下程序#includemain(){inta=3;printf("%dkn",(a+=a-=a*a));}程序運行后的輸出結果是A、9B、0C、3D、-12標準答案:D知識點解析:對于表達式a+=a-=a*a相當于a=a-(a*a),然后計算a=a+a,a的初值為3,則表達式的值為-12。8、有以下程序:#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;}}printf(’’%d\n’’,m);}程序運行后的輸出結果是()。A、1B、2C、3D、4標準答案:B知識點解析:本題考查switch語句。因為“a=6”,所以“a%2=0”,因此第一個switch語句,執(zhí)行“case0”,將m加1,遇到break語句跳出switch語句,輸出m值為2。9、設棧的存儲空間為S(1:50),初始狀態(tài)為top=0。現經過一系列正常的入棧與退棧操作后,top=51,則棧中的元素個數為A、不可能B、50C、0D、1標準答案:A知識點解析:棧是向上增長的,每次壓入一個元素,棧的TOP指針向上移動一位,即top-1。對于這個題目,由于top初始值等于0,此時入棧一個元素,top值減1,即0-1=-1,發(fā)生下溢錯誤,所以選項A正確。10、以下選項中,當x為大于1的奇數時,值為0的表達式是A、x/2B、x%2=0C、x%21=0D、x%2=1標準答案:B知識點解析:因為x的值為大于1的奇數,所以x除以2的余數等于1。所以選項B等于關系表達式的結果為假,即等于0。11、有以下稗宇:#includemain(){inta=1,b=2,c=3,x;x=(a^b.&c:printf(“%d\n”,x);}程序的運行結果是()。A、3B、1C、2D、0標準答案:A知識點解析:本題考查位運算符以及相關運算。^為按位或,&為按位與,那么a^b為3,再與c按位與仍然為3,所以答案為A選項。12、以下不合法的數值常量是()。A、8.0E0.5B、1e1C、011D、Oxabcd標準答案:A知識點解析:A選項中E后面的指數必須為整型數據,所以錯誤。C選項中011表示的是八進制常量,0xabcd表示的是十六進制常量。13、以下選項中不能作為C語言合法常量的是()。A、O.1e+6B、’cd’C、’’\a’’D、’\011’標準答案:B知識點解析:要想表示字符串常量,應該用雙引號表示,即’’ed’’,單引號用于表示字符常量,所以B選項中的表示方法錯誤。14、若有定義:inta,b;通過語句scanf(’’%d;%d’,&a,&b);能把整數3賦給變量a,5賦給變量b的輸入數據是A、3.5B、35C、3;5D、35標準答案:C知識點解析:在采用scanf這個函數輸入數據時,要嚴格遵守其輸入的規(guī)則定義。本題此函數定義的規(guī)則是,存兩個整數之間加分號輸入。15、下列敘述中錯誤的是A、循環(huán)隊列空的條件是隊頭指針與隊尾指針相同B、若二叉樹沒有葉子結點,則為空二叉樹C、帶鏈棧的棧底指針是隨棧的操作而動態(tài)變化的D、若帶鏈隊列中只有一個元素,則隊頭指針與隊尾指針必定相同標準答案:A知識點解析:初始化建空隊時,令front=rear=0,當隊空時:front=rear;當隊滿時:front=rear亦成立。因此,只憑等式front=rear無法判斷隊空還是隊滿。有兩種方法處理上述問題:①另設一個標志位以區(qū)別隊列是空還是滿;②少用一個元素空間,約定以“隊列頭指針front在隊尾指針rear的下一個位置上”作為隊列“滿”狀態(tài)的標志。即:隊空時:front=rear;隊滿時:(rear+1)%maxsize=front。所以選項A正確。16、以下程序:#include<stdio.h>#include<string.h>rnain(){Charstr[]=’’abcd\n\123\xab’’;printf(’’%d’’,strlen(str));}運行后的輸出結果是()。A、10B、9C、7D、14標準答案:C知識點解析:本題考查字符串的長度,需注意轉義字符串,例如,“\n”表示換行,為一個長度,“\123”表示3位八進制數123表示的字符,為一個長度,“\xab”表示二位十六進制數ab表示的字符,也為一個長度。17、在學生管理的關系數據庫中,存取一個學生信息的數據單位是A、文件B、數據庫C、字段D、記錄標準答案:D知識點解析:本題考查關系數據庫中,數據單位的相關概念。文件是指存儲在外部介質上的數據的集合。數據庫是存儲在計算機存儲設備上,結構化的相關數據集合。它不僅包括描述事物的數據本身,而且還包括相關事物之間的聯(lián)系。在數據庫中,表的“行”稱為“記錄”,“列”稱為“字段”。由此可得,題中存取一個學生信息的數據單位為記錄。18、在下列關系運算中,不改變關系表中的屬性個數但能減少元組個數的是A、并B、交C、投影D、笛卡兒乘積標準答案:B知識點解析:關系R與S經交運算后所得到的關系是由那些既在R內又在S內的有序組所組成,記為R∩S。形式定義如下:R∩S≡{t∈R∧t∈S}=R-(R-s)。所以不改變關系表中的屬性個數,但能減少元組個數的是關系表之間的交操作。19、有以下程序main(){inta=3;do{printf(’’%d,’’,a-=2);}while(!(-a));printf(’’\n’’);}程序運行后的輸出結果是A、1,B、1,-2,C、3,0,D、1,0標準答案:B知識點解析:循環(huán)體執(zhí)行兩次。首先輸出a=1,然后判斷表達式!(一a),a為0,循環(huán)條件表達式值為1,執(zhí)仃第二次循環(huán)體,輸出a=-2。判斷循環(huán)條件表達式值為0,循環(huán)退出。20、有三個關系R、S和T如下:由關系R和S通過運算得到關系T,則所使用的運算為A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:關系R與S經交運算后所得到的關系是由那些既在R內又在S內的有序組組成的,記為R∩S。21、若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是A、形參只是形式上的存在,不占用具體存儲單元B、函數的形參和實參分別占用不同的存儲單元C、同名的實參和形參占同一存儲單元D、函數的實參和其對應的形參共占同一存儲單元標準答案:B知識點解析:在C語言中,函數的實參單元與形參單元在內存中分配不同的存儲單元。在調用函數時,給形參分配臨時存儲單元,并將實參對應的值傳遞給形參,在被調用函數中對形參存儲單元中的值進行運算,最后通過return語句把函數值返回調用函數。當調用結束后,形參單元被釋放,實參單元仍保留并維持原值。22、以下選項中不能用作C程序合法常量的是A、1.234B、’\123’C、123D、\x7G標準答案:A知識點解析:本題考查C語言中的常量。選項A)錯誤,多了逗號;選項B)是字符常量:選項C)是整型常量;選項D)是字符常量。23、以下敘述中錯誤的是A、預處理命令行的最后不能以分號表示結束B、C程序對預處理命令行的處理是在程序執(zhí)行的過程中進行的C、#defineMAX是合法的宏定義命令行D、在程序中凡是以“#”開始的語句行都是預處理命令行標準答案:B知識點解析:預處理命令行是以“#”開始的語句,預處理命令行的最后不能以分號表示結束,預處理命令行。其中宏定義的字符替換的定義格式為:#define標識符字符串,預處理命令行是在系統(tǒng)劉源程序進行編譯之前進行處理的,不是在程序執(zhí)行的過程中。24、數據庫管理系統(tǒng)是A、操作系統(tǒng)的一部分B、在操作系統(tǒng)支持下的系統(tǒng)軟件C、一種編譯系統(tǒng)D、一種操作系統(tǒng)標準答案:B知識點解析:數據庫管理系統(tǒng)是數據庫的結構,它是一種系統(tǒng)軟件,負責數據庫中的數據組織、數據操縱、數據維護、控制及保護和數據服務等。25、以下敘述中正確的是A、在scanf函數的格式串中,必須有與輸入項一一對應的格式轉換說明符B、只能在printf函數中指定輸入數據的寬度,而不能在scanf函數中指定輸入數據占的寬度C、scanf函數中的字符串,是提示程序員的,輸入數據時不必管它D、復合語句也被稱為語句塊,它至少要包含兩條語句標準答案:A知識點解析:輸入函數的調用格式:scanf(格式控制,輸入項1,輸入項2,…)格式控制的主要作用是指定輸入時的數據轉換格式,格式串中,必須含有與輸入項一一對應的格式轉換說明符選項A)正確,在scanf。函數的格式字符前可以加入一個正整數指定輸入數據所占的寬度.但不可以用實數指定小數位的寬度,選項B)錯誤,scanf函數中的格式控制字符串是為了輸入數據用的,無論其中有什么字符,也不會輸出到屏幕上,因此若想在屏幕上輸出提示信息,應該首先使用printf函數輸出,選項C)錯誤,復合語句還可以是空語句昵,并沒有規(guī)定語句條數,選項D)錯誤。26、有以下程序:#include<stdio.h>yoidfun(char*c){while(*c){if(*c>=a’a’&&*c<=’z’)*c=*c=*(*’a’-’A’);C++;}}yoidmain(){chars[81];gets(s);fun(s);puts(s);}當執(zhí)行程序時從鍵盤上輸入HelloBeijing<回車>,則程序的輸出結果是A、HELLOBEIJINGB、HelloBeijingC、helloBeijingD、hELLOBeijing標準答案:A知識點解析:子函數*fun的功能是把小寫字*轉換成人寫字*,所以程序的輸出結果為選項A。27、有以下程序main(){inti=5;do{if(i%3=1)if(i%5==2){printf("*%d",i);break;}i++;}while(i!=0);printf("\n"),}程序的運行結果是A、*3*5B、*5C、*7D、*2*6標準答案:C知識點解析:由于循環(huán)變量i的初值等于5,所以第一、二次進入do…while循環(huán)語句時,條件語句if(i%3==1),if(i%5==2){printf(“*%d”,i);break;不執(zhí)行,只執(zhí)行i++語句。當i=7時,滿足條件語句if(i%3==1),if(i%5==2){printf("*%d,"i);break;},所以輸出*7,結束循環(huán)。28、若變量己正確定義,有以下程序段i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其輸出結果是A、0,0B、1.1C、0,1D、程序進入無限循環(huán)標準答案:C知識點解析:do…while循環(huán)的執(zhí)行過程如下:①執(zhí)行do后面的循環(huán)體中的語句。②計算while后一對圓括號中表達式的值。當值為非0時,轉去執(zhí)行步驟①:當值為0時,執(zhí)行步驟③。③退出do…while循環(huán)。對于本題變量i的初始值等于“0”,接著執(zhí)行do后面的循環(huán)體中的語句,輸出變量i的值0。再判斷while后面括號中表達式i++的值,其值為0,所以循環(huán)結束。此時變量i的值經過自加已經變?yōu)閘,所以再次輸出i的值“1”。29、有以下程序main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的運行結果是A、a=2,b=2B、a=1,b=1C、a=1,b=0D、a=2,b=1標準答案:D知識點解析:本題考查的是用switch語句實現多分支選擇結構,首先進入第一個switch(x)判斷,進入ease1中進行嵌套判斷,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接著執(zhí)行case2,a自加為2,b自加為1,遇到break,結束循環(huán),此時a=2,b=1。30、程序流程圖中帶有箭頭的線段表示的是()。A、圖元關系B、數據流C、控制流D、調用關系標準答案:C知識點解析:在數據流圖中,用標有名字的箭頭表示數據流。在程序流程圖中,用標有名字的箭頭表示控制流。所以選擇C)。31、下列條件語句中,輸出結果與其他語句不同的是A、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);標準答案:A知識點解析:選項B、C、D這三條語句都是在變量不等于0的情況下,輸出x;等于0的情況下輸出y,而選項A則正好相反。32、有以下程序#includevoidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(a);for(i=0;i<5;i++)printf("%d,",a[i]);}程序運行后的輸出結果是()。A、6,2,3,4,5,B、2,2,3,4,5,C、1,2,3,4,5,D、2,3,4,5,6,標準答案:A知識點解析:函數f的功能是循環(huán)執(zhí)行語句"(*q)++;"五次,而該語句的執(zhí)行過程是獲取指針p指向的數據并自加,由于指針p沒有移動,所以每次獲取的都是數組a第一個元素的值,自加五次之后,值為6,數組的其他元素沒有變化,所以答案選A。33、假定已建立以下鏈表結構,且指針p和q已指向如圖所示的節(jié)點:則以下選項中可將q所指節(jié)點從鏈表中刪除并釋放該節(jié)點的語句組是A、p=q->next;free(q);B、p=q;free(q);C、(*p).next=(*q).next;flee(p);D、p->next=-q>next;free(q);標準答案:D知識點解析:本題考查了在線性鏈表刪除一個節(jié)點的方法,要刪除q所指向的節(jié)點,只需要把q所指向的節(jié)點的前一個節(jié)點中的后繼指針指向q所指向的節(jié)點的下一個節(jié)點即可,即p->next=q->next。再釋放q所指向的節(jié)點,即free(q)。34、有下列程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}程序的運行結果是A、127B、1212C、1111D、117標準答案:D知識點解析:在本題中,定義了3個宏定義語句,分別是:#defineN5、#defineMN+5和#definef(x)(x*M),所以根據C語言的宏替換規(guī)則,我們可知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。35、若變量已正確定義for(x=0,y=0;(y!=99&&x<4);x++)則以上for循環(huán)A、執(zhí)行3次B、執(zhí)行4次C、執(zhí)行無限次D、執(zhí)行次數不定標準答案:B知識點解析:本題重點考察for語句的循環(huán)次數,for(x=0,y=0;(y!=99&&x<4);x++),y!=99&&x<4即循環(huán)條件當y不等于99以及x<4時,執(zhí)行循環(huán)語句,當有一個條件不成立時,均結束循環(huán),因此循環(huán)4次,B選項正確。36、以下結構體類型說明和變量定義中正確的是A、structREC;{intn;charc;};RECt1,t2;B、typedefstruct{intn;charc;}REC;RECt1,t2;C、typedefstructREC;{intn=0;charc=’A’;}t1,t2;D、struct{intn;charc;}REC;RECt1,t2;標準答案:B知識點解析:本題考查結構體的相關知識,選項A中structREC后面不能有分號,C選項中typedefstructREC的后面也不能有分號,選項D中REC已經是結構體變量,不能當做結構體類型來使用。37、以下選項中合法的標識符是A、1__B、1-1C、1_1D、_11標準答案:D知識點解析:C語言中的標識符由下劃線、字母和數字組成,且必須以下劃線或字母開始,所以只有D選項正確。38、若有以下程序#include#includetypedefstructstu{charname[10],gender;intscore;}STU;voidf(char*p){strcpy(p,"Qian");}main(){STUa={"Zhao",’m’,290},b;b=a;f();b.gender=’f’;b.score=350;printf("%s,%c,%d,",,a.gender,a.score);printf("%s,%c,%d\n",,b.gender,b.score);}則程序的輸出結果是A、Zhao,m,290,Qian,f,350B、Zhao,m,290,Zhao,m,290C、Qian,f,350,Qian,f,350D、Zhao,m,290,Zhao,f,350標準答案:A知識點解析:本題考查結構體的相關操作以及傳值、傳址的區(qū)別,該題中調用f函數后,b的name會重新賦值為Qian,選項A正確。39、以下敘述中正確的是A、數組下標的下限是1B、數組下標的下限由數組中第一個非零元素的位置決定C、數組下標的下限由數組中第一個被賦值元素的位置決定D、charc1,c2,*c3,c4[40];是合法的變量定義語句標準答案:D知識點解析:數組下標的下限是0。因此D選項正確。40、數據庫管理系統(tǒng)是A、操作系統(tǒng)的一部分B、在操作系統(tǒng)支持下的系統(tǒng)軟件C、一種編譯系統(tǒng)D、一種操作系統(tǒng)標準答案:B知識點解析:數據庫管理系統(tǒng)是數據庫的機構,它是一種系統(tǒng)軟件,負責數據庫中數據組織、數據操縱、數據維護、控制及保護和數據服務等。是一種在操作系統(tǒng)之上的系統(tǒng)軟件。國家二級C語言機試(選擇題)模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列敘述中正確的是()。A、棧與隊列都只能順序存儲B、循環(huán)隊列是隊列的順序存儲結構C、循環(huán)鏈表是循環(huán)隊列的鏈式存儲結構D、以上說法都不對標準答案:B知識點解析:棧和隊列都可以采用鏈式存儲結構,選項A)錯誤。隊列的順序存儲結構一般采用循環(huán)隊列的形式,所以循環(huán)隊列是隊列的順序存儲結構,選項B正確,選項C)錯誤。答案選B)。2、已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉換為對應小寫字母的語句是A、c=(’A’+c)%26-’a’B、c=C+32C、c=C-’A’+’a’D、c=(C-’A’)%26+’a’標準答案:A知識點解析:由題意可知,小寫字符a和大寫字符A的ASCⅡ代碼相差為32,所以選項C能將大寫字符C的ASCII代碼轉換為小寫字符c的ASCII代碼;選項D和C)左側的表達式都是大寫字符C與大寫字符A的差與’a’的ASCII代碼的和就是小寫字符c的ASCII代碼。而選項A中應該是加上’a’,而不是減去’a’。3、若變量已正確定義并賦值,則錯誤的賦值語句是()。A、a+a+1:B、a=sizeof(double);C、a=d‖c;D、a+1=a:標準答案:D知識點解析:賦值號“=”的左邊必須是一個變量名。4、軟件設計中劃分模塊的一個準則是()。A、低內聚低耦合B、高內聚低耦合C、低內聚高耦合D、高內聚高耦合標準答案:B知識點解析:一般較優(yōu)秀的軟件設計,應盡量做到高內聚,低耦合,即減弱模塊之間的耦合性和提高模塊內的內聚性,有利于提高模塊的獨立性。5、在結構化程序設計中,模塊劃分的原則是A、各模塊應包括盡量多的功能B、各模塊的規(guī)模應盡量大C、各模塊之間的聯(lián)系應盡量緊密D、模塊內具有高內聚度、模塊間具有低耦合度標準答案:D知識點解析:內聚性是對一個模塊內部各個元素間彼此結合的緊密程度的度量。耦合性是對模塊間互相連接的緊密程度的度量。在結構化程序設計中,模塊劃分應遵循高內聚、低耦合的原則,即減弱模塊之間的耦合性和提高模塊內聚性,有利于提高軟件模塊的獨立性。6、以下不正確的轉義字符是()。A、’\\’B、’\d’C、’\s’D、’088’標準答案:D知識點解析:“’\\’”是反斜線符,“’\d’”是整型變量轉義字符,“’\s’”是字符串型轉義字符,C語言中沒有規(guī)定“’088’”為轉義字符。7、關于C程序的編譯和運行,以下敘述中錯誤的是()。A、C語言源代碼程序通過編譯、鏈接步驟之后才能形成一個可執(zhí)行文件B、用C語言編寫的程序是以ASCⅡ代碼形式存放在一個文本文件中C、C語言中的所有語句都將被轉換成二進制的機器指令D、C語言源程序經編譯后生成后綴為.obj的目標程序標準答案:C知識點解析:C語言中的某些語句并不會被轉換成二進制機器指令,如宏定義命令,在預編譯之后替換到代碼中,該命令本身也就不存在了,不會轉換成二進制的機器指令。C語言編寫的源程序就是以ASCⅡ的形式存放在文本文件中的。C源程序經過C編譯程序編譯之后生成一個后綴為.obj的二進制文件(稱為目標文件),然后由稱為“鏈接程序”的軟件,因此.obj文件與C語言提供的各種庫函數鏈接起來生成一個后綴為.EXE的可執(zhí)行文件。8、下列條件語句中,輸出結果與其他語句不同的A、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);標準答案:A知識點解析:選項B)、C)、D)這三條語句都是存變量不等于0的情況下,輸出x;等于0的情況下輸出y,而選項A)則正好相反。9、設有定義語句intx[6]={2,4,6,8,5,7),*p=x,i;要求依次輸出x數組6個元素中的值不能完成此操作的語句是A、for(i=0;i<6;i++)printf("%2d",*(p++));B、for(i=0;i<6;i++)printf("%2d",*(p+i));C、for(i=0;i<6;i++)printf("%2d",*p++);D、for(i=0;i<6;i++)printf("%2d",(*p)++);標準答案:D知識點解析:指針p指向數組x,因此可以使用p來輸出數組x的值。選項A中,*(p++)表示先取出p指向的元素的值,然后p++指向下一個元素,滿足要求;選項B中*(p+i)每次i的值發(fā)生變化,(p+i)指向x數組的x[i]元素,因此*(p+i)是取出數組x的x[i]元素的值,滿足要求;選項C和選項A相比,少了括號,由于.運算符的優(yōu)先級比++要求,因此,因此*p++表示先取出p指向的元素的值,然后p再++指向下一個元素,滿足要求:選項D中(*p)++表示先取出p指向的元素的值,然后該值++,p沒有增加,每次循環(huán)都*p取出的x[0]的值,不滿足要求。10、若變量已正確定義為int型,要通過語句scanf("%d,%d,%d",&a,&b,&c);給a賦值1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是(注:□代表一個空格符)A、□□□1,2,3B、1,□□□2,□□□3C、1,2,3D、1□2□3標準答案:D知識點解析:本題主要考查scanf函數的輸入格式問題。scanf函數的一般形式為:scanf(格式控制字符串,地址1,地址2,…);格式控制字符串是由雙撇號括起來的字符串,它主要由兩種類型的字符組成:①格式說明符由“%”和格式字符組成,如%c,%d,%s,%f等。其作用是將輸入的數據轉換為指定的格式,賦給scanf的二個參量(是地址1)所指定的內存單元(可能一次使用多個)中。格式說明以“%”字符為標志;②普通字符,是需要用戶在輸入時原樣輸入的字符。在本題中格式控制字符串為“%d,%d,%d”,表示按十進制輸入三個數據。要求在輸入數據時,兩個數據間一定以一個逗號“,”作為間隔符。11、一個教師講授多門課程,一門課程由多個教師講授。則實體教師和課程間的聯(lián)系是A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標準答案:D知識點解析:一個教師可講授多門課程,一門課程可由多個教師講授,則實體教師和課程的聯(lián)系是多對多的聯(lián)系。12、若有以下函數首部intfun(doublex[10],int*n)則下面針對此函數的函數聲明語句中正確的是A、intfun(double,int);B、intfun(double*,int*);C、intfun(double*x,intn);D、intfun(doublex,int*n);標準答案:B知識點解析:函數聲明的一般形式為:類型說明符被調函數名(類型形參,類型形參…);或為:類型說明符被調函數名(類型,類型…);由于函數首部為intfun(doublex[10],int*n),因此B選項正確。13、已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉換為對應小寫字母的語句是A、c=(’A’+c)%26-’a’B、c=C+32C、c=C-’A’+’a’D、c=(C-’A’)%26+’a’標準答案:A知識點解析:由題意可知,小寫字符a和大寫字符A的ASCⅡ代碼相差為32,所以選項C)能將大寫字符C的ASCⅡ代碼轉換為小寫字符c的ASCⅡ代碼;選項D)和C)左側的表達式都是大寫字符C與大寫字符A的差與’a’的ASCⅡ代碼的和就是小寫字符c的ASCⅡ代碼。而選項A)中應該是加上’a’,而不是減去’a’。14、有以下程序#includeintfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf("%d\n",fun(a,4,0));}程序的運行結果是A、4B、34C、31D、32標準答案:C知識點解析:本題重點考察二維數組名作為實參進行參數傳遞,在主函數中調用了fun函數,實參為二維數組名a和兩個整數4、0,這樣對應定義fun函數首部也有三種形式,這里采用了第一種形式,也就是行指針,這樣在fun函數對s[i][j]進行操作實際上就是對主函數中的a[i][j]進行操作,再分析fun函數的作用便可知,是求二維數組第0列中最大的那個元素。因此C選項正確。15、以下定義數組的語句中錯誤的是A、intnum[][3]={{1,2),3,4,5,6};B、intnum[]={1,2,3,4,5,6};C、intnum[][4]={1,2,3,4,5,6};D、intnum[2][4]={{1,2},{3,4},{5,6}};標準答案:D知識點解析:在選項D的數組定義中,賦值號左邊定義了一個2行4列的二維數組,而在右邊定義了一個3行2列的二維數組。16、有以下程序:#include<stdio.h>#defineSUB(a)(a)-(a)main(){Inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%d\n",d);}程序的運行結果是()。A、0B、-12C、-20D、10標準答案:C知識點解析:本題考查宏定義。宏定義只是做簡單的替換,本題中SUB(a+b)*c=(a+b)-(a+b)*c=-20,所以C選項正確。17、以下敘述中正確的是A、a表示一個字符常量B、’\0’表示字符0C、表達式:’a>’b’的結果是“假”D、’\’’’是非法的標準答案:C知識點解析:字符常量可以參加關系運算,按照其存儲的ASCII碼值進行比較,’a’>’b’不成立,值為假。而’\0’表示NULL,ASCII碼值為0。18、以下敘述中正確的是A、C程序書寫格式嚴格,要求一行內只能寫一個語句B、C程序書寫格式自由,一個語句可以寫在多行上C、C程序中的注釋只能出現在程序的開始位置和語句的后面D、用C語言編寫的程序只能放在一個程序文件中標準答案:B知識點解析:本題主要考查的是C語言結構中的源程序書寫格式這個知識點,在C浯言中注釋部分對程序的運行結果不產生任何影響,它可以出現在任意位置:C語言書寫自由,一行內可以寫多個語句,一個語句可以寫在多行上;由于C語言編寫的程序有很好的移植性,可以放在多個程序文件中。19、設有定義:inta=2,b=3,c=4;,則以下選項中值為0的表達式是A、(!a==1)&(!b==0)B、(a<b)&!c||1C、a&bD、a||(b+b)||(c-a)標準答案:A知識點解析:本題主要考查邏輯運算。選項A中,(!a==1)中!運算優(yōu)先級比==高,因此!a為假,然后在和1比較是否相等,因此整個表達式的結果為假,(!a==1)和(!b==0)是與的關系,前面的表達式為假,整個表達式結果就是假(0);選項B中a<b為真,!c值為假,(a<b)&!c值為假,(a<b)&!c‖1為真:選項C中a&b的值為2;選項D中a的值為真,表達式的結果為真。20、以下選項中不合法的標識符是A、FORB、&aC、printD、_00標準答案:B知識點解析:合法的標識符要滿足組成字符為a~z以及A~z,數字字符0到9和下劃線,其中數字不開頭,不能是關鍵字。選項B中,&不屬于組成字符,是錯誤的。21、以下選項中有語法錯誤的是A、charstr[3][10];str[1]="guest";B、charstr[][10]={"guest"};C、char*str[3];str[1]="guest";D、char*str[]={"guest"};標準答案:A知識點解析:本題考查字符數組的定義和使用。選項A定義了一個二維字符數組,第二句是直接給字符數組賦值錯誤,C語言中不能直接給字符數組賦值;選項B、C)和D)都是正確的。22、設有以下語句typedefstructTT{charc;inta[4];}CIN;則下面敘述中正確的是A、TT是struct類型的變量B、可以用TT定義結構體變量C、CIN是structTT類型的變量D、可以用CIN定義結構體變量標準答案:D知識點解析:C語言允許用typedef說明一種新的類型名,說明新類型名的語句為一般形式為:typedef。類型名標識符在此,“類型名”必須是此語句之前已有定義的類型標識符?!皹俗R符”是一個用戶定義標識符,用作新的類型名。typedef語句的作用僅僅是用“標識符”來代表已存在的“類型名”,并未產生新的數據類型,原有類型名依然有效。在本題中用typedef定義CIN為TT的一種新的類型名.因而可以用它定義一個結構體變量。23、以下選項中,當x為大于1的奇數時,值為0的表達式是A、x/2B、x%2==0C、x%2!=0D、x%2==1標準答案:B知識點解析:A選項的值為不定值,但絕對不是0,算術運算符的優(yōu)先級高于關系運算符的優(yōu)先級,所以當x為大于1的奇數時,B選項的值為假,即0?C選項的值為真,即1,D選項的值為真,即1,選項B正確。24、有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結果是A、24B、5C、32D、40標準答案:C知識點解析:在for循環(huán)體中,先判斷自變量i能否被5整除,然后自加兩次,最后判斷i能否被8整除。當for循環(huán)執(zhí)行到第30次時,i的值為30能被5整除,然后i經過兩次自加1運算,值變?yōu)?2,能被8整除,故執(zhí)行“printf("%d",i);”語句,即輸出32。25、在關系數據庫中,描述全局數據邏輯結構的是A、內模式B、用戶模式C、概念模式D、物理模式標準答案:C知識點解析:概念模式也稱為模式或邏輯模式,概念模式是數據庫中全體數據的整體邏輯結構和特征的描述,概念模式通常還包含有訪問控制、保密定義和完整性檢查等方面的內容,以及概念/物理之間的映射。26、以下敘述中正確的是A、charca[3][5]={"A","BB","CCC"};是不合語法的B、字符串數組,是指數組中的每個元素都是一個存放字符串的一維數組C、charca[][5]:{"A",”BB”,"CCC"};是不合語法的D、char*ca[3]={"A","BB","CCC"};是不合語法的標準答案:B知識點解析:字符串數組,也就是二維字符數組,其中每個元素為一個字符串,選項B)的說法正確。選項A)和C)對于ca的定義是正確的。選項D)定義一個指針數組,可以保存多個字符串的首地址。27、若有以下程序#includeintf(intm){staticintn=0;inta=2;n++;a++;returnn+m+a;}main(){intk;for(k=0;k<4;k++)printf("%d,",f(k));}則程序的輸出結果是A、3,5,7,9,B、4,7,10,13,C、4,5,6,7,D、4,6,8,10,標準答案:D知識點解析:本題考查靜態(tài)局部變量以及自增運算符,靜態(tài)局部變量在函數調用結束后,并不釋放,仍然保留它的值,本題中,k為0時,returnn+m+a之前,n為1,a為局部變量是3,m為0,所以第一個返回值為4。k為1,在函數返回值之前,靜態(tài)局部變量為2,局部變量a仍然為3,m為1,所以結果是6,依此類推答案為D。28、有以下程序#includefunc(intn)voidmain(){staticintnum=1;{func(3);func(4);printf("\n");}num=num+n;printf("%d",num);}程序運行后的輸出是A、45B、35C、48D、34標準答案:C知識點解析:在函數func(intn)中定義了局部靜態(tài)變量num,其初始值等于l,所以在主函數中執(zhí)行func(3),輸出4,此時靜態(tài)變量num的值等于4,當退出函數func(3)時,其值不會丟失,所以當在執(zhí)行func(4)時,輸出8。29、設有定義doublea[10],*s=a;以下能夠代表數組元素a[3]的是A、(*s)[3]B、*s[3]C、*s+3D、*(s+3)標準答案:D知識點解析:語句*s=a,使用指針變量s指向一維數組a的首地址,所以*(s+3)表示的是引用數組a[3]。30、數據字典(DD)所定義的對象都包含于A、數據流圖(DFD圖)B、程序流程圖C、軟件結構圖D、方框圖標準答案:A知識點解析:在數據流圖中,對所有元素都進行了命名,所有名字的定義集中起來就構成了數據字典。因此選A,而B,C,D都不符合。31、有以下程序#include<stdio.h>intfun(chars[]){char*p=s;while(*P!=0)p++;return(p-s);}main(){printf("%d\n",fun("0ABCDEF"));}程序運行后的輸出結果是A、6B、7C、1D、0標準答案:B知識點解析:函數fun的主要功能是計算字符串中實際字符的個數,因此主函數中調用fun得到結果為7。32、以下敘述中正確的是A、書寫源程序時,必須注意縮進格式,否則程序會有編譯錯誤B、程序的主函數名除main外,也可以使用Main或_mainC、程序可以包含多個主函數,但總是從第一個主函數處開始執(zhí)行D、在C程序中,模塊化主要是通過函數來實現的標準答案:D知識點解析:C語言的源程序中對縮進沒有要求,所以A選項錯誤。C語言中區(qū)分大小寫,main函數不能寫成Main或_main,所以B選項錯誤。一個C程序有且只有一個主函數,所以C選項錯誤。33、有以下程序(說明:字*A的ASCII碼值是65)voidfun(char*s){while(*s){if(*s%2)printf("%c",*s);s++;}}main(){chara[]="BYTE";fun(a);printf("\n");}程序運行后的輸出結果是A、BTB、YEC、YTD、BY標準答案:B知識點解析:程序只輸出字母ASCII值為奇數的字母,根據字母B,Y,T,E的ASCII值的奇偶性相應輸出。34、設有定義語句:char*aa[2]={"abcd","ABCD"};則以下敘述正確的是A、aa數組的兩個元素只能存放含有4個字符的一維數組的首地址B、aa數組的值分別是字符串"abcd"和"ABCD"C、aa是指針變量,它指向含有兩個元素的字符型數組D、aa[0]存放了字符串"abcd"的首地址標準答案:D知識點解析:題目中char*aa[2],定義了指針教組aa,有兩個元素,aa[0]存放"abcd"地址,而aa[1]存放"ABCD"地址。35、若有以下定義intx[10],*pt=x;則對x數組元素的正確引用是()。A、*(x+3)B、*&x[10]C、*(pt+10)D、pt+3標準答案:A知識點解析:數組x[10]下標的最大值為9,不能引用下標大于9的數組元素,選項B)、C)錯誤;指針pt指向數組x的首地址,所以pt+3與&x[3]等價,為數組第四個元素的地址,不是引用數組元素的值,選項D)錯誤。所以答案選A)。36、以下敘述中正確的是A、break語句不能用于提前結束for語句的本層循環(huán)B、continue語句使得整個循環(huán)終止C、使用break語句可以使流程跳出switch語句體D、在for語句中,continue與break的效果是一樣的,可以互換標準答案:C知識點解析:用break語句可以使程序流程跳出switch語句體,也可用break語句在循環(huán)結構中終止循環(huán)體,從而提前結束循環(huán),而continue語句的作用是結束本次循環(huán),即跳過本次循環(huán)體中continue語句后面的語句,立刻進行下一次的循環(huán)條件判斷,可以理解為僅結束本次循環(huán)。37、以下敘述中正確的是A、在包含文件中,不得再包含其他文件B、#include命令行不能出現在程序文件的中間C、在一個程序中,允許使用任意數量的#include命令行D、雖然包含文件被修改了,包含該文件的源程序也可以不重新進行編譯和連接標準答案:C知識點解析:#include文件包含命令,使用時應注意以下5個規(guī)則:①包含文件的#include命令行通常應書寫在所用源程序文件的開頭,故有時也把包含文件稱作“頭文件”。頭文件名可以由用戶指定,其后綴不一定用“.h”;②包含文件中,一般包含有一些公用的#define命令行、外部說明或對(庫)函數的原型說明;③當包含文件修改后,對包含該文件的源程序必須重新進行編譯連接;④在一個程序中,允許有任意多個#include命令行;⑤在包含文件中還可以包含其他文件。38、有以下程序#include<stdio.h>main(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);printf("outputn:");orintf("%d\n",p:}該程序、試圖通過指針p為變量n讀入數據并輸出,但程序有多處錯誤,以下語句正確的是A、intn,*p=NULL;B、*p=&n;C、scanf("%d",&p)D、printf("%d\n",p);標準答案:A知識點解析:選項A)表示在程序中,聲明定義變量語句“intn,*p=NULL;”定義了整型變量n和指針變量p,并且指針變量p初始化為空。其他的語句都是錯誤的。其中選項B),&n的地址應存放到指針變量p中,而選項C)中數據輸入項錯誤,選項D)輸出地址信息。39、以下選項中合法的變量是A、5aB、_10_C、A%D、sizeof標準答案:B知識點解析:變量的命名要符合標識符的命名規(guī)則,即由下劃線、字母或數字組成,且必須以下劃線或字母開始,也不能和關鍵字相同,所以選擇B。40、有以下程序#include#includestructA{inta;charb[10];doublec;};voidf(structAt);main(){structAa={1001,"ZhangDa",1098.0};f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}voidf(structAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}程序運行后的輸出結果是A、1002,ZhangDa,1202.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1001,ZhangDa,1098.0標準答案:D知識點解析:本題考查結構體的相關操作以及傳值、傳址的區(qū)別,該題中調用f函數后,會生成參數a的一個副本,而不會改變a的值,所以a值維持原值,選項D正確。國家二級C語言機試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是A、有一個以上根結點的數據結構不一定是非線性結構B、只有一個根結點的數據結構不一定是線性結構C、循環(huán)鏈表是非線性結構D、雙向鏈表是非線性結構標準答案:B知識點解析:在數據結構中,樹這類的數據結構只有一個根結點,但它不是線性結構。2、設棧的順序存儲空間為S(1:m),初始狀態(tài)為top=0。現經過一系列正常的入棧與退棧操作后,top=m+1,則棧中的元素個數為()。A、0B、mC、不可能D、m+1標準答案:C知識點解析:棧為空時,棧頂指針top=0,經過入棧和退棧運算,指針始終指向棧頂元素。初始狀態(tài)為top=0,當棧滿top=m,無法繼續(xù)入棧,top值不可能為m+1。3、下列敘述中錯誤的是()。A、循環(huán)鏈表中有一個表頭結點B、循環(huán)鏈表是循環(huán)隊列的存儲結構C、循環(huán)鏈表的表頭指針與循環(huán)鏈表中最后一個結點的指針均指向表頭結點D、循環(huán)鏈表實現了空表與非空表運算的統(tǒng)一標準答案:B知識點解析:循環(huán)鏈表是指在單鏈表的第一個結點前增加一個表頭結點,隊頭指針指向表頭結點,最后一個結點的指針域的值由NULL改為指向表頭結點。循環(huán)鏈表是線性表的一種鏈式存儲結構,循環(huán)隊列是隊列的一種順序存儲結構。4、若運行時給變量x輸入12,則以下程序的運行結果是()。main(){intx,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í)行“y=x-12=0”。5、在具有2n個結點的完全二叉樹中,葉子結點個數為()。A、nB、n+1C、n-1D、n/2標準答案:A知識點解析:由二叉樹的定義可知,樹中必定存在度為0的結點和度為2的結點,設度為0結點有a個,根據度為0的結點(即葉子結點)總比度為2的結點多一個,得度為2的結點有a-1個。再根據完全二叉樹的定義,度為1的結點有0個或1個,假設度1結點為0個,a+0+a-1=2n,得2a=2n-1,由于結點個數必須為整數,假設不成立;當度為1的結點為1個時,a+1+a-1=2n,得a=n,即葉子結點個數為n。6、在數據庫設計中,將E—R圖轉換成關系數據模型的過程屬于()。A、需求分析階段B、概念設計階段C、邏輯設計階段D、物理設計階段標準答案:C知識點解析:E—R圖轉換成關系模型數據則是把圖形分析出來的聯(lián)系反映到數據庫中,即設計出表,所以屬于邏輯設計階段。7、在學校里,教師可以講授不同的課程,同一課程也可由不同教師講授,則實體教師與實體課程間的聯(lián)系是()。A、一對多B、一對一C、多對一D、多對多標準答案:D知識點解析:一個教師可以講授不同的課程,同一課程也可由不同教師講授,則實體教師與實體課程間的聯(lián)系是多對多。8、下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()。A、便于用戶,開發(fā)人員進行理解和交流B、反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據C、作為確認測試和驗收的依據D、便于開發(fā)人員進行需求分析標準答案:D知識點解析:軟件需求規(guī)格說明書有以下幾個方面的作用:①便于用戶、開發(fā)人員進行理解和交流;②反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據;③作為確認測試和驗收的依據。9、下面屬于黑盒測試方法的是()。A、邊界值分析法B、基本路徑測試C、條件覆蓋D、條件-分支覆蓋標準答案:A知識點解析:黑盒測試方法主要有等價類劃分法、邊界值分析法、錯誤推測法、因果圖等,答案選A。10、下列描述中正確的是A、軟件測試應該由程序開發(fā)者來完成B、程序經調試后一般不需要再測試C、軟件維護只包括對程序代碼的維護D、以上三種說法都不對標準答案:D知識點解析:為了達到好的測試效果,應該由獨立的第三方進行測試工作。因為從心理學角度講,程序人員或設計方在測試自己的程序時,要采取客觀的態(tài)度是會不同程度地存在障礙的,所以選項A)錯誤。在程序調試時,修改了一個錯誤的同時可能引入了新的錯誤,解決的辦法是在修改了錯誤之后,必須進行回歸測試,所以選項B)錯誤。所謂軟件維護,就是將交付的軟件投入運行,并在運行使用中不斷地維護,根據新提出的需求進行必要而且可能的擴充和刪改,所以選項C)錯誤。11、我們所寫的每條C語句,經過編譯最終都將轉換成二進制的機器指令。關于轉換以下說法錯誤的是()。A、一條C語句對應轉換成一條機器指令B、一條C語句可能會被轉換成多條機器指令C、一條C語句可能會被轉換成零條機器指令D、某種類型和格式的C語句被轉換成機器指令的條數是固定的標準答案:A知識點解析:每條可執(zhí)行的C語句會依據其類型和格式轉換成一條或者多條機器指令,非可執(zhí)行語句:注釋語句或者宏定義語句不會被轉換成機器指令,而且相同類型和格式的C語句轉換成機器指令的條數是相同的,所以答案選A。12、有以下程序:#include#includemain(){charstr[][20]={t.One*World”,”O(jiān)ne*Dream!”;,*P=str[1];prinff(“%d,”,strlen(P));prinff(“%s\n”,P);}程序的運行結果是()。A、10,One*Dream!B、9,One*Dream!C、9,One*WorldD、10,One*World標準答案:A知識點解析:p是指向二維字符數組第二行one*Dream!的數組指針,所以長度是10,打印輸出的也是該字符串。13、軟件測試的目的是A、發(fā)現程序中的錯誤B、發(fā)現并改正程序中的錯誤C、設計和執(zhí)行測試用例D、診斷程序中的錯誤標準答案:A知識點解析:軟件測試的目的是為了發(fā)現程序中的錯誤,而軟件調試是為了更正程序中的錯誤。14、若有定義語句charc=’\101’;則變量c在內存中占A、2個字節(jié)B、3個字節(jié)C、1個字節(jié)D、4個字節(jié)標準答案:C知識點解析:每個字符變量被分配一個字節(jié)的內存空間,因此只能存放一個字符。字符值是以ASCII碼的形式存放在變量的內存單元之中的。15、若變量已正確定義為int型,要通過語句scanf("%d,%d,%d",&a,&b,&c);給a賦值1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是(注:□代表一個空格符)A、□□□1,2,3B、1,□□□2,□□□3C、1,2,3D、1□2□3標準答案:D知識點解析:本題主要考查scanf函數的輸入格式問題。scanf函數的一般形式為:scanfi(格式控制字符串,地址1,地址2,...);格式控制字符串是由雙撇號括起來的字符串,它主要由兩種類型的字符組成:①格式說明符由“%”和格式字符組成,如%c,%d,%s,%f等。其作用是將輸入的數據轉換為指定的格式,賦給scanf的二個參量(是地址1)所指定的內存單元(可能一次使用多個)中。格式說明以“%”字符為標志。②普通字符,是需要用戶在輸入時原樣輸入的字符。在本題中格式控制字符串為“%d,%d,%d”,表示按十進制輸入三個數據。要求在輸入數據時,兩個數據間一定以一個逗號“,”作為間隔符。16、有以下程序#includemain(){inta1,a2;charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%d,%c,%d,%c",a1,c1,a2,c2);}若想通過鍵盤輸入,使得a1的值為12,a2的值為34,c1的值為字符a,c2的值為字符b,程序輸出結果是:12,a,34,b則正確的輸入格式是(以下□代表空格,代表回車)A、12□a□34□bB、12,a,34,bC、12a34bD、12□a34□b標準答案:C知識點解析:本題考查scanf語句。scanf()函數是格式化輸入函數,它從標準輸入設備(鍵盤)讀取輸入的信息。其調用格式為:scanf("<格式化字符串>",<地址表>)格式化字符串包括以下3類不同的字符。①格式化說明符:格式化說明符與前面用的printf()函數中的格式說明符基本相同。②空白字符:空白字符會使scanf()函數在讀操作中略去輸入中的一個或多個空白字符。③非空白字符:一個非空白字符會使scanf()函數在讀入時剔除掉與這個非空白字符相同的字符。由于在scanf函數中,幾個變量之間沒有任何問隔,所以輸入的時候,也同樣不應該有間隔。17、若有定義:inta,b;通過語句scanf("%d;%d",&a,&b);能把整數3賦給變量a,5賦給變量b的輸入數據是()。A、35B、3,5C、3;5D、35標準答案:C知識點解析:輸入數據的格式必須與scanf()的格式控制串完全匹配,所以輸入時必須在3和5之間輸入";"。18、以下敘述中正確的是A、continue語句的作用是:使程序的執(zhí)行流程跳出包含它的所有循環(huán)B、break語句只能用在循環(huán)體內和switch語句體內C、在循環(huán)體內使用break語句和continue語句的作用相同D、break語句只能用于switch語句體中標準答案:B知識點解析:只能在循環(huán)體內和switch語句體內使用break語句。continue語句的作用是結束本次循環(huán),即跳過本次循環(huán)體中continue語句后面的語句,立刻進行下一次的循環(huán)條件判斷,可以理解為僅結束本次循環(huán)。而break語句可以使程序流程跳出switch語句體,也可用break語句在循環(huán)結構中終止循環(huán)體。19、定義學生、教師和課程的關系模式S(S#,Sn,Sd,Dc,Sa)(其屬性分別為學號、姓名、所在系、所在系的系主任、年齡);C(C#,Cn,P#)(其屬性分別為課程號、課程名、先修課);SC(S#,C#,G)(其屬性分別為學號、課程號和成績),則該關系為A、第二范式B、第一范式C、第三范式D、BCNF范式標準答案:A知識點解析:在關系模式S(S#,Sn,Sd,Dc,Sa)中把學號S#設置為主鍵,則其它列姓名、所在系、所在系的系主任、年齡都依賴主鍵學號S#。在C(C#,Cn,P#)中將C#課程號設置為主鍵,則課程名、先修課都依賴主鍵C#。在SC(S#,C#,G)中,將S#,C#設置為主鍵,則G成績依賴于主鍵S#,C#。所以該關系模式是第二范式。選擇A選項。20、有以下程序(strcat函數用以連接兩個字符串)#include#includemain(){chara[20]="ABCD\0EFG\0",b[]="IJK";strcat(a,b);printf("%s\n",a);}程序運行后的輸出結果是()。A、ABCDIJKB、ABCDE\0FG\0IJKC、IJKD、EFGIJK標準答案:A知識點解析:strcat(字符數組,字符串)函數的功能是把"字符串內容"連接到"字符數組"中的字符串尾端,而字符串的尾端用結束標記?\0?標識,所以語句"strcat(a,b);"執(zhí)行完畢之后,在字符?D?后面連接數組b中的字符串。答案選A。21、以下敘述中正確的是A、打開一個已存在的文件并進行了寫操作后,原有文件中的全部數據必定被覆蓋B、在一個程序中當對文件進行了寫操作后,必須先關閉該文件然后再打開,才能讀到第1個數據C、C語言中的文件是流式文件,因此只能順序存取數據D、當對文件的讀(寫)操作完成之后,必須將它關閉,否則可能導致數據丟失標準答案:D知識點解析:在C語言中,有兩種對文件的存取方式;順序存取和直接存??;如果以“a”的方式對一個已打開的文件進行寫操作后,則原有文件中內容將保存,新的數據寫在原有內容之后。如果以“a+”的方式為讀和寫而打開一個文件,則既可以對文件進行讀,也可以對文件進行寫,而且在讀和寫操作之間不必關閉文件,可以從頭開始讀。當對文件的讀(寫)操作完成之后,必須將它關閉。22、若各選項中所用變量已正確定義,函數fun中通過return語句返回一個函數值,以下選項中錯誤的程序是()。A、main(){……x=fun(2,10);……}floatfun(inta,intb){……}B、floatfun(inta,intb){……}main(){……x=fun(i,j);……}C、floatfun(int,int);main(){……x=fun(2,10);……}floatfun(inta,intb){……}D、main(){floatfun(inti,intj);……x=fun(i,j);……}floatfun(inta,intb){……}標準答案:A知識點解析:被調函數的定義要在調用語句之前,若不是,則在調用語句之前要對被調函數進行聲明,選項A)缺少對被調函數fun()的聲明語句,答案選A)。23、下列條件語句中,輸出結果與其他語句不同的是A、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);標準答案:A知識點解析:選項B、C、D這三條語句都是在變量不等于0的情況下,輸出x;等于0的情況下輸出y,而選項A則正好相反。24、若有以下程序段charstr[4][12]={"aaa","bbbb","ccccc","dddddd"},*strp[4];inti;for(i=0;i<4;i++)strp[i]=str[i];則以下錯誤引用字符串的選項是(其中0≤k<4)()。A、strpB、str[k]C、strp[k]D、*strp標準答案:A知識點解析:指針strp為一個指針數組,str為一個二維數組名。語句"strp[i]=str[i];"將str數組中第i+1個字符串的首地址賦值給strp[i],所以str[i]與strp[i]、*(strp+i)、*(str+i)等價,選項B)、C)、D)正確,而strp為指針數組所占內存的首地址,不能引用字符串,所以答案選A)。25、下面不屬于軟件測試實施步驟的是A、集成測試B、回歸測試C、確認測試D、單元測試標準答案:B知識點解析:軟件測試主要包括單元測試、集成測試、確認測試和系統(tǒng)測試。國家二級C語言機試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、若變量都己正確說明,則以下程序段輸出結果為()。#includemain(){chara=’a’;intb=2:printf(a>b?"***a=%d":"###b=%d",a,b);}A、***a=3B、###b=3C、***a=3##b=5D、全部錯誤標準答案:D知識點解析:本題考查printf函數的格式和三目運算符“?:”的使用。printf函數中格式說明符之前插入的任何字符都原樣輸出。本題中“a>b”為真,所以返回“***a=97”。2、對于循環(huán)隊列,下列敘述中正確的是A、隊頭指針是固定不變的B、隊頭指針一定大于隊尾指針C、隊頭指針一定小于隊尾指針D、隊頭指針可以大于隊尾指針,也可以小于隊尾指針標準答案:D知識點解析:所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間,供隊列循環(huán)使用。在循環(huán)隊列中,用隊尾指針rear指向隊列中的隊尾元素,用隊頭指針front指向隊頭元素的前一個位置。循環(huán)隊列的主要操作是:入隊運算和退隊運算。每進行一次入隊運算,隊尾指針就進一。每進行一次退隊運算,隊頭指針就進一。當rear或front等于隊列的長度加1時,就把rear或front值置為1。所以在循環(huán)隊列中,隊頭指針可以大于隊尾指針,也可以小于隊尾指針。3、若有以下程序段:structst{intn;int*m;};inta=2,b=3,c=5;structsts[3]=({101,&a},{102,&c},{103,&b}};main(){structst*p;p=s;…}則以下表達式中值為5的是()。A、(p++)->mB、*(p++)->mC、(*p)-mD、*(H_p)->m標準答案:D知識點解析:本題考查如何通過指針引用數組元素。首先定義了一個結構體,然后定義了一個結構體變量s[3],并賦了初值。在主程序中,定義了一個指向結構體變量s的指針p,要使表達式的值為5,就應該引用s[1].m的值,使指針p指向s[1],++p可以實現將p指針加1,指向s[1]。4、下列敘述中正確的是()。A、在鏈表中,如果每個結點有兩個指針域,則該鏈表一定是非線性結構B、在鏈表中,如果有兩個結點的同一個指針域的值相等,則該鏈表一定是非線性結構C、在鏈表中,如果每個結點有兩個指針域,則該鏈表一定是線性結構D、在鏈表中,如果有兩個結點的同一個指針域的值相等,則該鏈表一定是線性結構標準答案:B知識點解析:判斷一個非空的數據結構是否為線性結構必須滿足以下兩個條件:①有且只有一個根結點;②每一個結點最多有一個前件,也最多有一個后件。選項B)中,如果有兩個結點的同一個指針域的值相等,則說明至少有一個結點有兩個前件,不符合線性結構的定義,所以答案選B)。5、下面屬于白盒測試方法的是()。A、等價類劃分法B、判定一條件覆蓋C、因果圖法D、錯誤推測法(猜錯法)標準答案:B知識點解析:白盒測試法主要有邏輯覆蓋、基本路徑測試等。其中,邏輯覆蓋又包括語句覆蓋、路徑覆蓋、判定覆蓋、條件覆蓋、判斷一條件覆蓋。黑盒測試方法主要有等價類劃分法、邊界值分析法、錯誤推測法和因果圖等。6、若有以下程序,編譯時出現錯誤,你認為出錯的是#includemain(){inta=0,b=0,c=0,d;c=(a+=b,,b+=a);/*第4行*/d=c;;/*第5行*/;/*第6行*/printf("%d,%d,%d\n",a,b,c);/*第7行*/}A、第4行B、第5行C、第6行D、第7行標準答案:A知識點解析:第4行出錯,在第4行括號中兩個逗號不可以為空。單獨的分號為C語言的空語句,是編譯程序可以識別并且編譯的,因此第5、6行都是正確的。7、在黑盒測試方法中,設計測試用例的主要根據是()。A、程序內部邏輯B、程序外部功能C、程序數據結構D、程序流程圖標準答案:B知識點解析:黑盒測試是對軟件已經實現的功能是否滿足需求進行測試和驗證,黑盒測試完全不考慮程序內部的邏輯結構和內部特性,只根據程序的需求和功能規(guī)格說明,檢查程序的功能是否符合它的功能說明,所以本題選擇B。8、設一棵樹的度為3,其中度為3,2,1的結點個數分別為4,1,3。則該棵樹中的葉子結點數為A、10B、11C、12D、不可能有這樣的樹標準答案:A知識點解析:因為任一棵樹中,結點總數=總分支數目+1,所以:n0+4+1+3=(n0*0+3*4+2*1+1*3)+1,計算結果n0=10。其中,n0表示葉子結點。所以選項A正確。9、學生和課程的關系模式定義為:S(S#,Sn,Sd,Dc,Sa)(其屬性分別為學號、姓名、所在系、所在系的系主任、年齡);C(C#,Cn,P#)(其屬性分別為課程號、課程名、先選課);SC(S#,C#,G)(其屬性分別學號、課程號和成績)。關系中包含對主屬性傳遞依賴的是()。A、S#→SdB、S#→Sd,(S#,C#)→GC、S#→Sd,Sd→DcD、C#→P#,(S#,C#)→G標準答案:C知識點解析:關系SC的主屬性為(S#、C#),但在SC中S#(學號)單獨就可以決定Sd(所在系),Sd(所在系)可決定Dc(所在系的系主任),故對主屬性傳遞依賴的是S#→Sd,Sd→Dc。10、sizeof(char)是()。A、一種函數調用B、一個整型表達式C、一個字符型表達式D、一個不合法的表達式標準答案:B知識點解析:“sizeof(char)”是一個C語言的關鍵字,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國慶節(jié)聯(lián)誼活動方案
- 現代經濟環(huán)境下的市場動態(tài)與趨勢分析
- 弱電施工方案范本
- 1 有余數的除法 第二課時(說課稿)-2023-2024學年二年級下冊數學蘇教版
- 2023三年級英語下冊 Unit 1 My Body第1課時說課稿 陜旅版(三起)
- 6 有多少浪費本可避免 第一課時 說課稿-2023-2024學年道德與法治四年級下冊統(tǒng)編版001
- 2024年八年級物理下冊 12.1杠桿說課稿 (新版)新人教版001
- 《14學習有方法》(說課稿)-部編版(五四制)道德與法治二年級下冊
- 2023九年級語文下冊 第三單元 11 送東陽馬生序說課稿 新人教版001
- Unit8 We're twins(說課稿)-2023-2024學年譯林版(三起)英語三年級下冊
- 智研咨詢發(fā)布:2024年中國MVR蒸汽機械行業(yè)市場全景調查及投資前景預測報告
- IF鋼物理冶金原理與關鍵工藝技術1
- 煙花爆竹重大危險源辨識AQ 4131-2023知識培訓
- 銷售提成對賭協(xié)議書范本 3篇
- 企業(yè)動火作業(yè)安全管理制度范文
- 六年級語文老師家長會
- EPC項目階段劃分及工作結構分解方案
- 《跨學科實踐活動4 基于特定需求設計和制作簡易供氧器》教學設計
- 2024-2030年汽車啟停電池市場運行態(tài)勢分析及競爭格局展望報告
- 術后病人燙傷不良事件PDCA循環(huán)分析
- 信息安全意識培訓課件
評論
0/150
提交評論