版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
國家二級(C語言)機試模擬試卷24(共9套)(共345題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、設某二叉樹的后序序列為CBA,中序序列為ABC,則該二叉樹的前序序列為()。A、BCAB、CBAC、ABCD、CAB標準答案:C知識點解析:后序序列為CBA,中序序列為ABC,則說明,A為根結點,并且B和C均在A的右子樹上;結點B和C中,后序序列為CB,中序序列為BC,則說明結點C在結點B的右子樹上,根據(jù)分析可得,該二叉樹的前序序列為ABC,答案選C。2、設一棵滿二叉樹共有15個結點,則在該滿二叉樹中的葉子結點數(shù)為()。A、7B、8C、9D、10標準答案:B知識點解析:在具有n個結點的滿二叉樹,其非葉子結點數(shù)為int(n/2),而葉子結點數(shù)等于總結點數(shù)減去非葉子結點數(shù)。本題n=15,故非葉子結點數(shù)等于int(15/2)=7,葉子結點數(shù)等于15-7=8。3、以下程序的輸出結果是()。#includemain(){inta=4,b=3,c=2,d=1;printf("%d",aA、1B、3C、2D、4標準答案:A知識點解析:條件表達式的格式為:"a?b:c",它的功能是:當a為真時,表達式的值等于b的值;當a為假時,表達式的值等于c的值。因為條件運算符的結合方向為“自右向左”。因此,當表達式中嵌套使用條件表達式時,應先計算右邊的條件表達式,再計算左邊的條件表達式。題中應先計算“d4、以下數(shù)組定義中錯誤的是()。A、intx[2][3]={1,2,3,4,5,6};B、intx[][3]={0};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={{1,2},{3,4},{5,6}};標準答案:D知識點解析:D選項中x[2][3]定義的是一個兩行三列的二維數(shù)組,而在給數(shù)組元素賦值時卻賦成了三行,所以錯誤。5、有以下程序:#include<stdio.h>voidf(int*q){imi=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知識點解析:本題考查的是函數(shù)的地址調(diào)用,將數(shù)組名作為數(shù)組首地址進行傳遞,然后取首個數(shù)組元素值進行加1運算,循環(huán)5次。因此A選項正確。6、有以下程序:#include<stdio.h>voidfun(intn){staticintx[3]={1,2,3};intk;for(k=0;k<3;k++)x[k]+=x[k]-n;for(k=0;k<3;k++)printf("%d,",x[k]);}main(){fun(0);fun(1);}程序運行后的輸出結果是()。A、1,2,3,0,2,4,B、2,4,6,3,7,11,C、2,4,6,1,3,5,D、1,2,3,4,5,6,標準答案:B知識點解析:第一次調(diào)用fun()函數(shù),此時n=0,數(shù)組x是靜態(tài)的,因此,只在第一次時初始化,由x[k]+=x[k]-n計算可知,x[]={2,4,6},第二次調(diào)用fun(),此時n=1,x[]={2,4,6},經(jīng)計算得x[]={3,7,11},故輸出結果為2,4,6,3,7,11,。7、以下敘述中不正確的是()。A、在不同的函數(shù)中可以使用相同的名字的變量B、函數(shù)中的形式參數(shù)是局部變量C、在一個函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效D、在一個函數(shù)內(nèi)的復合語句中定義的變量在本函數(shù)范圍內(nèi)有效標準答案:D知識點解析:此題考查的是變量的作用范圍。選項D)中,在一個函數(shù)的復合語句中定義的變量是局部變量,只在定義此變量的復合語句內(nèi)有效,并不是在整個函數(shù)體內(nèi)都有效。8、判斷char型變量c1是否為小寫字母的正確表達式為()。A、’a’<=c1<=’z’B、(c1>=a)&&(c1<=z)C、(’a’>=c1||(’z’<=c1)D、(c1>=’a’)&&(c1<=’z’)標準答案:D知識點解析:C語言規(guī)定,字符常量在程序中要用單引號括起來。首先判斷c1是否為小寫字母的主要條件“c1>=’ap’和“c1<=’z’”是邏輯與關系,其次選項A的這種形式C語言中沒有,所以選項D正確。9、下列合法的標識符是()。A、123B、#256C、a.55D、abhj1_2_3標準答案:D知識點解析:C語言規(guī)定,標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線?!?”、“.”不允許出現(xiàn)在標識符中。10、有以下程序:#include<stdio.h>main(){intx;scanf("%d",&x):if(x<=3);elseif(x!=10)printf("%d\n",x);}程序運行時,輸入的值在哪個范圍才會有輸出結果()。A、小于3的整數(shù)B、不等于10的整數(shù)C、大于3或等于10的整數(shù)D、大于3且不等10的整數(shù)標準答案:D知識點解析:根據(jù)代碼可知如果x的值小于等于3,執(zhí)行空語句,不進行打印操作。如果x的值大于3,再判斷x的值是否不等于10,如果不等于10就打印x的值,所以選擇D選項。11、以下不構成無限循環(huán)的語句或語句組是()。A、n=0;do{++n;}while(n<=0);B、n=0;while(1){n++;}C、n=10;while(n);{n--;}D、for(n=0,i=1;;i++)n+=i;標準答案:A知識點解析:選項A中do后面的語句只執(zhí)行了一次便結束了循環(huán);B選項中條件while(1)永遠成立,所以是死循環(huán);C選項中n的值為10,而循環(huán)體為空語句,所以while(n)永遠為真,進入死循環(huán);D選項中for語句第二個表達式為空,所以沒有判別條件,進入死循環(huán)。12、有以下程序:#include<stdio.h>main(){inti,j,x=0;for(i=0;i<2;i++){x++:for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序執(zhí)行后的輸出結果是()。A、x=4B、x=8C、x=6D、x=12標準答案:B知識點解析:coutinue的作用是跳出循環(huán)體中剩余的語句而進行下一次循環(huán)。第一次執(zhí)行外循環(huán)i的值為0,執(zhí)行x++,x的值變?yōu)?,第一次執(zhí)行內(nèi)層循環(huán)j的值為0,不滿足if條件,執(zhí)行x++,x的值變?yōu)?,第二次內(nèi)循環(huán)j的值為1,if條件成立,跳出本次循環(huán),第三次執(zhí)行內(nèi)循環(huán)j的值為2,不滿足if條件,x的值變?yōu)?,第四次執(zhí)行內(nèi)循環(huán)j的值為3滿足條件跳出本次內(nèi)循環(huán),x的值加1,即為4,第一次外循環(huán)結束。第二次執(zhí)行外循環(huán)時,同理,i的值被加了,4次,變?yōu)?,所以選擇B選項。13、如果進棧序列為A,B,C,D,則可能的出棧序列是()。A、C,A,D,BB、B,D,C,AC、C,D,A,BD、任意順序標準答案:B知識點解析:棧的操作原則為后進先出。選項B中出棧順序可按“A進,B進,B出,C進,D進,D出,C出,A出”實現(xiàn)。14、有以下程序:#include<stdio.h>main(){inta,b;for(a=0;a<3;a++){scanf("%d",&b);switch(b){default:printf("%d",++b);case1:printf("%d",++b);case2:printf("%d",++b);}}}執(zhí)行時輸入:123<回車>,則輸出結果是()。A、233456B、234C、223444D、234344標準答案:A知識點解析:這是一個循環(huán)結構嵌套選擇結構,按照外層循環(huán),內(nèi)層選擇一步一步處理即可。本題重點注意,switch語句中并沒有出現(xiàn)break語句,所以內(nèi)層循環(huán)是不會跳出的。15、有以下程序#includemain(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運行結果是()。A、852B、963C、741D、875421標準答案:A知識點解析:該函數(shù)的邏輯是:若數(shù)組a中元素下標為偶數(shù)并且該元素也為偶數(shù)則該元素自加1,若元素下標為偶數(shù)并且該元素為奇數(shù)則該元素自減1,若該元素下標為奇數(shù)則設定該元素為0,所以結果輸出為選項A)。16、有以下程序:#includemain(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(“%d\n”,s);}程序執(zhí)行后的輸出結果是()。A、20B、25C、45D、36標準答案:B知識點解析:統(tǒng)計1~9九個數(shù)中的奇數(shù)和,此題考察指向數(shù)組的指針。C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。因此*(t+i)代表數(shù)組的第i+1個元素。程序運行的結果是1+3+5+7+9=25。17、軟件生命周期中的活動不包括()。A、市場調(diào)研B、需求分析C、軟件測試D、軟件維護標準答案:A知識點解析:軟件生命周期可以分為軟件定義、軟件開發(fā)與軟件運行維護三個階段。主要活動階段是:可行性研究與計劃階段,需求分析,軟件設計,軟件實現(xiàn),軟件測試,運行和維護,所以選擇A。18、若x=4,y=5,則x&y的結果是()。A、0B、4C、3D、5標準答案:B知識點解析:本題主要考查按位與運算的知識點。按位與是對兩個運算量相應的位進行邏輯與,“&”的規(guī)則和邏輯與“&&”相同。x=4的二進制為00000100,y=5的二進制為00000101,x&y=00000100,轉化為十進制即為4。19、有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列敘述中正確的是()。A、以上的說明形式非法B、NODE是一個結構體類型C、OLD是一個結構體類型D、OLD是一個結構體變量標準答案:C知識點解析:C語言允許用typedef說明一種新類型名,其一般形式為:typedef類型名標識符。typedef語句的作用僅僅是使“標識符”來代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型。原有類型名依然有效。此題中,用typedef定義了新的類型OLD結構,所以OLD為結構體類型。20、設數(shù)據(jù)元素的集合D={1,2,3,4,5},則滿足下列關系R的數(shù)據(jù)結構中為線性結構的是()。A、R={(1,2),(3,4),(5,1)}B、R={(1,3),(4,1),(3,2),(5,4)}C、R={(1,2),(2,3),(4,5)}D、R={(1,3),(2,4),(3,5)}標準答案:B知識點解析:一個非空的數(shù)據(jù)結構如果滿足以下兩個條件:有且只有一個根結點;每一個結點最多有一個前件,也最多有一個后件,稱為線性結構。A項中有兩個根結點3和5,錯誤;B項根結點為5,之后的結點除最后一個結點外都只有一個前件和后件,正確;C項有兩個根結點1和4,錯誤;D項有兩個根結點1和2,錯誤。21、若變量已正確定義,則以下for循環(huán)():for(x=0,y=0;(y!=123)&&(x<4);x++);A、執(zhí)行4次B、執(zhí)行3次C、執(zhí)行次數(shù)不確定D、執(zhí)行123次標準答案:A知識點解析:循環(huán)判斷語句為"(y!=123)&&(x<4)”,必須同時滿足"y!=123"和"x<4"這兩個表達式,循環(huán)才會繼續(xù)。因此,當x=4時,循環(huán)終止,for循環(huán)共執(zhí)行4次。22、有以下程序#include<stdio.h>main(){structSTU{charname[9];charsex;doublescore[2];};structSTUa={"Zhao",’m’,85.0,90.0},b={"Qian",’f’,95.0,92.0};b=a;printf("%s,%c,%2.0f,%2.0f\n",,b.sex,b.score[0],b.score[1]);}程序的運行結果是A、Qian,m,85,90B、Zhao,m,85,90C、Zhao,f,95,92D、Qian,f,95,92標準答案:B知識點解析:本題考查結構體初始化操作,本題中可以直接將結構體a賦值給b,所以輸出的結果和a一樣,選項B正確。23、有3個關系R、S和T如下:則由關系R和S得到關系T的操作是()。A、投影B、選擇C、交D、差標準答案:D知識點解析:投影是指從關系模式中指定若干個屬性組成新的關系。從關系中找出滿足給定條件的元組的操作稱為選擇。這兩種操作運算均是對單個關系進行,不是兩個關系之間的運算,故A、B選項錯誤。交:R∩S結果是既屬于R又屬于S的記錄組成的集合,R∩S得到一個元組,按照屬性ABC的順序是c32,故C選項錯誤。差:R—S結果是屬于R但不屬于s的記錄組成的集合,R—S得到3個元組,按照屬性ABc的順序是a34、b21、ed2,故D選項正確。24、有三個關系表R、S和T,其內(nèi)容如下:其中關系T由關系R和S通過某種操作得到,該操作為()。A、選擇B、求差C、求交D、并標準答案:D知識點解析:關系T中包含了R和S中的所有元素,所以是并操作。25、有以下程序#includeintm1(intx,inty){returnx<=y?x:y;}intm2(intx,inty){returnx<=y?y:x;}intfun(inta,intb){returna+b;}main(){intx=2,y=3,z=1;printf("%d\n",fun(m1(x,y),m2(y,z)));}程序的運行結果是()。A、5B、6C、4D、3標準答案:A知識點解析:暫無解析26、對于以下函數(shù)聲明voidfun(intarray[4],int*ptr);以下敘述中正確的是()。A、array,ptr都是指針變量B、調(diào)用fun函數(shù)時,實參的值將逐一復制給arrayC、調(diào)用fun函數(shù)時,array按值傳送,ptr按地址傳送D、array是數(shù)組,ptr是指針,它們的性質不同標準答案:A知識點解析:voidfun(intarmy[4],int*ptr);第一個參數(shù)雖然是數(shù)組類型,但是會退化為指針,并且形參數(shù)組的個數(shù)沒有用。第二個參數(shù)是指針,因此實際上二個形參都是指針,傳遞的都是地址,而不是值。可知選項B、c、D錯誤。答案為A選項。27、有以下程序:#includemain(){inta[4][4]={{1,2,3,4},{1,6,5,9},{3,7,2,5},{4,2,4,l}},i,k,t;for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++)printf(’’%d,’’,a[0][i]);}程序運行后的輸出結果是()。A、9,1,2,6B、6,2,3,4C、6,4,3,2D、9,3,4,6標準答案:B知識點解析:雙重for循環(huán)和if條件語句結合實現(xiàn)對二維數(shù)組對角線上的元素[1,6,2,1]進行從大到小的排序,輸出結果只是第一行的內(nèi)容,所以結果是6,2,3,4。28、有以下程序:#neludemain(){inta=0,b=0,C=0,d=0;if(a=1)b=1;c=2;elsed=3;pfintf(’’%d,%d,%d,%d\n’’,a,b,c,d);}程序運行后的輸出結果是()。A、1,1,2,0B、0,0,0,3C、編譯有錯D、0,1,2,0標準答案:C知識點解析:if語句只執(zhí)行后面的一個語句或一個用大括號包括的程序段。本題中if語句中的條件若為真,則只執(zhí)行b=1;這一條語句,后面的c=2是一個和if分支結構無關的語句,因此,再后面的else語句便成為一個獨立的語句,因為前面沒有if分支與其對應,因此會在編譯過程中出錯。如果改成if(a=1){b=1;c=2}elsed=3:則編譯正確。29、若實體A和B是一對多的聯(lián)系,實體B和C是一對一的聯(lián)系,則實體A和C的聯(lián)系是A、一對一B、一對多C、多對一D、多對多標準答案:B知識點解析:A和B為一對多的聯(lián)系,則對于A中的每一個實體,B中有多個實體與之聯(lián)系,而B與C為一對一聯(lián)系,則對于B中的每一個實體,C中之多有一個實體與之聯(lián)系,則可推出對于A中的每一個實體,C中有多個實體與聯(lián)系,所以為一對多聯(lián)系。30、下列敘述中正確的是A、有且只有一個根結點的數(shù)據(jù)結構一定是線性結構B、每一個結點最多有一個前件也最多有一個后件的數(shù)據(jù)結構一定是線性結構C、有且只有一個根結點的數(shù)據(jù)結構一定是非線性結構D、有且只有一個根結點的數(shù)據(jù)結構可能是線性結構,也可能是非線性結構標準答案:D知識點解析:一個非空的數(shù)據(jù)結構如果滿足以下兩個條件:有且只有一個根結點;每一個結點最多有一個前件,也最多有一個后件,稱為線性結構,故A、B和C選項都錯誤;不同時滿足以上兩個條件的數(shù)據(jù)結構就稱為非線性結構,其中樹形結構只有一個根結點,D選項正確。31、為了對有序表進行對分查找,則要求有序表A、只能順序存儲B、只能鏈式存儲C、可以順序存儲也可以鏈式存儲D、任何存儲方式標準答案:A知識點解析:二分法查找也稱拆半查找,是一種高效的查找方法。能使用二分法查找的線性表必須滿足兩個條件:用順序存儲結構;線性表是有序表。A選項正確。32、以下對聯(lián)合類型敘述正確的是()。A、可以對聯(lián)合變量名直接賦值B、使用聯(lián)合變量的目的是為了節(jié)省內(nèi)存C、任何一個聯(lián)合變量可以同時引用聯(lián)合中的不同成員D、聯(lián)合類型定義中不能同時出現(xiàn)結構類型的成員標準答案:B知識點解析:由于聯(lián)合體是同一存儲區(qū)域由不同類型的變量共事,所以不可以直接對聯(lián)合體變量名進行賦值,且聯(lián)合體中的空間在某一時刻只能保持萊一成員的數(shù)據(jù);另外合體中可以出現(xiàn)結構類型的成員。33、需求分析階段的任務是()。A、軟件開發(fā)方法B、軟件開發(fā)工具C、軟件開發(fā)費用D、軟件系統(tǒng)功能標準答案:D知識點解析:需求分析縣軟件定義時期的最后一個階段,它的基本任務就是詳細調(diào)查現(xiàn)實世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后存這些基礎上確定新系統(tǒng)的功能。34、設a,b,c是整型變量且均已賦值,則以下選項中錯誤的賦值語句是A、a=(b=3)=1;B、a=(b=2)+c;C、a=b=c+10;D、a=1+(b=c=2);標準答案:A知識點解析:賦值運算結合性為由右向左結合,賦值運算符左值為變量,右值為變量或常量,且左右兩邊數(shù)據(jù)類型相同才能實現(xiàn)賦值。A選項中,賦值運算(b=3)=1,左值為表達式,不是變量不能被賦值,A選項錯誤,所以選擇A選項。B選項運算過程為,先賦值b=2,再計算b+c,將結果賦給a,是正確的賦值語句。C選項運算過程為,先計算c+10將結果賦給b,再將b賦給a,是正確的賦值語句。D選項運算過程為,先將2賦給c,再將c賦給b,然后計算1+b,將結果賦給a,是正確的賦值語句。35、下列敘述中正確的是A、所有數(shù)據(jù)結構必須有根結點B、所有數(shù)據(jù)結構必須有終端結點(即葉子結點)C、只有一個根結點,且只有一個葉子結點的數(shù)據(jù)結構一定是線性結構D、沒有根結點或沒有葉子結點的數(shù)據(jù)結構一定是非線性結構標準答案:D知識點解析:一個非空的數(shù)據(jù)結構如果滿足以下兩個條件:有且只有一個根結點;每一個結點最多有一個前件,也最多有一個后件,稱為線性結構,在數(shù)據(jù)結構中習慣稱為線性表,D選項正確。圖是可能不包含根結點或葉子結點的數(shù)據(jù)結構,AB選項錯誤。數(shù)據(jù)結構中若有中間結點不滿足只有一個前件或者后件條件,則不屬于線性結構,C選項錯誤。36、若有定義語句:doublex,y,*px,*py;執(zhí)行px=&x;py=&y;正確的輸入語句是A、scanf("%lf%lf",x,y);B、scanf("%f%f"&x,&y);C、scanf("%f%f",x,y);D、scanf("%lf%le",px,py);標準答案:D知識點解析:%lf,%le是針對double的,如果僅用%f,輸入的數(shù)據(jù)可能不能被完全接收,數(shù)據(jù)的精度可能不足。%f主要針對float類型的變量的輸入,選項B錯誤。根據(jù)scanf(格式,變量地址),選擇A,C錯誤。因此,選擇D37、若有定義:charc;doubled;程序運行時輸入:12<回車>,能把字符1輸入給變量c、數(shù)值2輸入給變量d的輸入語句是A、scanf("%d%lf",&c,&d);B、scanf("%c%lf",&c,&d);C、scanf("%c%f",&c,&d);D、scanf("%d%f",&c,&d);標準答案:B知識點解析:%lf是針對double的,如果僅用%f,輸入的數(shù)據(jù)可能沒有被完全接收,數(shù)據(jù)的精度可能不足,選項C,D錯誤。%f主要針對float類型的變量的輸入。%d主要針對整型數(shù)據(jù)的輸入,%c主要針對字符類型的數(shù)據(jù)的輸入,選項A錯誤。故答案為B選項38、有以下程序:#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)));}程序運行后的輸出結果是()。A、3B、6C、8D、12標準答案:B知識點解析:fun(b,c)即fun(5,6),5!=6,所以返回6;fun(2*a,6)即fun(8,6),8!=6,所以返回6。39、有以下程序:#include<stdio-h>#include"string.h"voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的運行結果是()。A、xy,aaaaccB、aaaacc,xyC、bcc,aabccD、aabcc,bcc標準答案:A知識點解析:從main函數(shù)入手,定義了一個一維數(shù)組并賦初值,接著調(diào)用函數(shù)fun(),函數(shù)的功能是:比較數(shù)組中各元素的長度,按元素長度從小到大的順序排列元素,所以執(zhí)行“fun(ss,5)”函數(shù)后,“*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"}”,所以調(diào)用printf函數(shù)輸出ss[0],ss[4]的值分別為xy,aaaacc。二、程序填空題(本題共1題,每題1.0分,共1分。)40、下列給定程序中,函數(shù)fun的功能是:在形參ss所指字符串數(shù)組中查找與形參t所指字符串相同的串,找到后返回該串在字符串數(shù)組中的位置(即下標值),若未找到則返回一I。ss所指字符串數(shù)組中共有N個內(nèi)容不同的字符串,且串長小于M。清在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<string.h>#defineN5#defineM8intfun(char(*SS)[M],char*t){inti;/**********found***********/for(i=0;i<—【1】;i++)/**********found***********/if(strcmp(SS[i],t)==0)return【2】;return(一1);}main(){charch[N][M]={“if”,“while”,“switch”,“int”,“for”},t[M];intn,i;printf(“\nTheoriginalstring\n\n”);for(i=0;i<N;i++)puts(ch[i]);printf(“\n”);printf(“\nEnterastringforsearch:”),gets(t);n=fun(ch,t);/**********found***********/if(n==【3】)printf(“\nDon’tfound!\n”);elseprintf(“\nThepositionis%d\n”,n);}標準答案:(1)N(2)i(3)一1知識點解析:填空1:變量j是循環(huán)變世,它的取值范圍足0—N。填空2:如果ss所指字符串數(shù)組中的字符串與t所指字符串相同,則返回其下標值,即returni;,否則返回一1,即return一1;。填空3:在main函數(shù)中輸出最后結果,判斷函數(shù)返回值n,如果n=一1,說明沒有找到,否則輸出n。三、程序修改題(本題共1題,每題1.0分,共1分。)41、下列給定程序中函數(shù)fun的功能是:將字符串中的字符逆序輸出,但不改變字符串中的內(nèi)容。例如,若字符串為“abed”,則應輸出:“deba”。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>/**********found***********/voidfun(chara){if(*a){fun(a+1);/**********found***********/printf(“%c”*a);}}main(){chars[10]=“abcd”;printf(“處理前字符串=%s\n,處理后字符串=”,s);fun(s);printf(“\n”);}標準答案:(1)voidfun(char*a)(2)prinff(“%c”,*a);知識點解析:(1)定義函數(shù)時形參的類型要與凋用函數(shù)中實參的類型一致,主函數(shù)中fun傳遞的是字符串s的首地址,所以此處形參應為指針類型。(2)根據(jù)prinff函數(shù)格式,很容易找到錯誤之處。四、程序設計題(本題共1題,每題1.0分,共1分。)42、請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值:例如,在主函數(shù)中從鍵盤給n輸入15,則輸出為:s=2.718282。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includedoublefun(intn){}main(){intn;doubles;printf("Inputn:");scanf("%d",&n);s=fun(n);printf("s=%f\n",s);NONO();}NONO(){/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關閉文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++)(fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%lf\n",s);}fclose(rf);fclose(wf);}標準答案:doubles=1;longt=1;inti;for(i=1;i<=n;i++){t=t*i;/*計算階乘*/s+=1./t;/*計算每項的值并累加至變量s中*/}returns;/*返回多項式的值。/知識點解析:(1)根據(jù)題干中給出的數(shù)列,推出每一項是階乘的倒數(shù),所以首先在循環(huán)中求得每一項的階乘。其中階乘的計算公式定義為:公式分為參數(shù)n是1和大于1的兩種情況,例如,1的階乘1!=1;5的階乘5!=5×4×3×2×1。(2)然后求得階乘分之一的累加和。國家二級(C語言)機試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將形參n所指變量中,各位上為偶數(shù)的數(shù)去掉,剩余的數(shù)按原來從高位到低位的順序組成一個新數(shù),并通過形參指針n傳回所指變量。例如,若輸入一個數(shù)27638496,則新數(shù)為739。請在程序的下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>voidfun(unsignedlong*n){unsignedlongx=0,i;intt;i=1;while(*n)/*********found*********/{t=*n%【1】;/*********found*********/if(t%2!=【2】){x=x+t*i;i=i*10;}*n=*n/10:}/*********found*********/*n=【3】;}main(){unsignedlongn=-1;while(n>99999999||n<0){printf("Pleaseinput(0<n<100000000):");scanf("%1d",&n);}fun(&n);printf("\nTheresultis:%1d\n",n);}標準答案:(1)10(2)0(3)x知識點解析:填空1:通過t對10求余,取出該數(shù)值的各個位。填空2:通過if條件語句實現(xiàn)奇偶數(shù)的判定。如果條件表達式對2求余為O即為偶數(shù),反之則為奇數(shù)。填空3:最后將剩余的數(shù)賦給n所指向的元素。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.C。在此程序中,函數(shù)fun的功能是:計算n!。例如,給13輸入5,則輸出120.000000。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<conio.h>doublefun(intn){doubleresult=1.0;/*********found*********/ifn==0return1.0;while(n>1&&n<170)/*********found*********/result=n--:returnresult;}main(){intn;printf("InputN:");scanf("%d",&n);printf("\n\n%d!=%1f\n\n",n,fun(n));}標準答案:(1)if(n==0)(2)result*=n--;或{result*=n;n--;}知識點解析:(1)這里是一個簡單的格式錯誤,if條件判斷語句應該加括號。(2)根據(jù)階乘的概念,從n開始,n!=n*(n-1)!,直到1,所以應該為result*=n--;。三、程序設計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun,其功能是:將一個數(shù)字字符串轉換為一個整數(shù)(不得調(diào)用c語言提供的將字符串轉換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉換為整數(shù)值-1234。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容。僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<string.h>longfun(char*p){}voidmain(){chars[6];longn;printf("Enterastring:\n");gets(s);n=fun(s);printf("%1d\n",n);}標準答案:longfun(char*p){longn=0;intflag=1;if(*p==’-’)/*負數(shù)時置flag為-1*/{p++;flag=-1;}elseif(*p==’+’)/*正數(shù)時置flag為1*/p++;while(*p!=’\0’){n=n★10+*p-‘0’;/*將字符串轉成相應的整數(shù)*/p++;}returnn*flag;}知識點解析:if語句的作用是判斷該字符串為正數(shù)還是負數(shù),while循環(huán)的作用是將字符串轉成相應的整數(shù)。注意:*p是一個字符(例如‘9’、‘4’),并不是一個數(shù),要將其轉成相應的數(shù)字需令其減去’0’(不是’\0’),即*p-’0’就得到*p這個字符的相應數(shù)字,例如’0’-’0’=0、’8’-’0’=8等。必須在程序的前面加#include,函數(shù)atol的作用是將字符串轉換成長整型數(shù),它是一個庫函數(shù)。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共39題,每題1.0分,共39分。)1、下列敘述中正確的是()。A、棧是一種先進先出的線性表B、隊列是一種后進先出的線性表C、棧與隊列都是非線性結構D、以上三種說法都不對標準答案:D知識點解析:棧是一種先進后出的線性表,隊列是一種先進先出的線性表,棧與隊列都是線性結構。2、設某二叉樹的后序序列為CBA,中序序列為ABC,則該二叉樹的前序序列為()。A、BCAB、CBAC、ABCD、CAB標準答案:C知識點解析:后序序列為CBA,中序序列為ABC,則說明,A為根結點,并且B和C均在A的右子樹上;結點B和C中,后序序列為CB,中序序列為BC,則說明結點C在結點B的右子樹上,根據(jù)分析可得,該二叉樹的前序序列為ABC,答案選C。3、有下列程序段:typedefstructNODE{intnum:structNODE*next;}OLD:下列敘述中正確的是()。A、以上的說明形式非法B、NODE是一個結構體類型C、OLD是一個結構體類型D、OLD是一個結構體變量標準答案:C知識點解析:C語言允許用typedef說明一種新類型名,其一般形式為:tvpedef類型名標識符。typedef語句的作用僅僅是使“標識符”來代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型。原有類型名依然有效。此題中,用使tvpedef定義了新的類型OLD結構,所以OLD為結構體類型。4、有以下程序:#include<stdio.h>intb=2;intfun(int*k){b=*k+b;return(b);}voidmain(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){b=fun(&a[i])+b;printf("%d",b);}printf("\n");}程序運行后的輸出結果是()。A、1012B、810C、1028D、1016標準答案:C知識點解析:因為b是全局變量,所以它的值在整個程序結束才會消失。for循環(huán)中,第一次循環(huán),i=2,a[2]=3,所以fun(&a[i]=3+2=5,b=5,所以b=fun(&a[i])+b=5+5=10;第二次循環(huán),b=10,然后fun(&a[i])代入a[3]=4,這時fun(&a[i]=10+4=14,所以b=fun(&a[i])+b=14+14=28。5、以下敘述錯誤的是()。A、變量的作用域取決于變量定義語句的位置B、全局變量可以在函數(shù)以外的任何部位進行定義C、局部變量的作用域可用于其他函數(shù)的調(diào)用D、一個變量說明為static存儲類型是為了限制其他編譯單元的引用標準答案:D知識點解析:本題考查函數(shù)調(diào)用的變量作用域。全局變量不在任何函數(shù)體內(nèi)定義,作用域為整個文件;局部變量在函數(shù)體內(nèi)定義,作用域僅為本次函數(shù);static類型是靜態(tài)變量,為了方便其他編譯單元的引用,不能隨意改變。一個函數(shù)包含兩部分:函數(shù)首和函數(shù)體,函數(shù)體包括花括號內(nèi)的所有語句。6、以下選項中,合法的一組C語言數(shù)值常量是()。A、028.5e-3-0nxfB、12OXa23-0nxfC、.1774c1.5-0nxfD、0x8A10,000-0nxf標準答案:B知識點解析:八進制數(shù)開頭必須是數(shù)字“0”,其數(shù)字包括0~7,而在選項A中,028是錯誤的。浮點數(shù)據(jù)的指數(shù)形式表示常量中,C語言規(guī)定字母e或E之前必須要有數(shù)字,且e或E之后的指數(shù)必須為整數(shù),而選項C中4e1.5是錯誤的。在選項D中,整型數(shù)據(jù)10,000的表示形式是錯誤的。所以本題的答案為選項B。7、若語句“t=fun(fun(x,y,a),(a+b,a+c),x+y+z);”對fun函數(shù)的調(diào)用正確,則fun函數(shù)的形參個數(shù)為()。A、3B、4C、5D、6標準答案:A知識點解析:本題考查函數(shù)調(diào)用時的參數(shù)個數(shù)。在函數(shù)調(diào)用時,實參必須和形參的個數(shù)、類型一一對應。但函數(shù)的計算結果只有一個值,因而fun函數(shù)的參數(shù)個數(shù)為3。8、以下語句中存在語法錯誤的是()。A、charss[6][20];ss[1]="right?";B、charss()[20]={"right?"};C、char*ss[6];ss[1]="right?";D、char*ss():{"right?"};標準答案:A知識點解析:數(shù)組定義后,不可以對數(shù)組整體賦值,s是二維數(shù)組,因ss[1]是一維字符數(shù)組,即字符串,字符串賦值可以使用stmpy(ss[1],"right");這樣的形式,而選項A中對二維數(shù)組中的第“1”維(相當于一個一維數(shù)組)賦值,是不可以的。選項B和D是定義時對數(shù)組初始化,這是可以的。選項C中,將字符串在內(nèi)存中的首地址賦給指針數(shù)組的一個元素,這是可以的。9、在C語言中,變量的隱含存儲類別是()。A、autoB、staticC、externD、無存儲類別標準答案:A知識點解析:C語言中,變量的隱含存儲類型為auto。10、C源程序中不能表示的數(shù)制是()。A、十六進制B、八進制C、十進制D、二進制標準答案:D知識點解析:在C語言中整型常量可以用十進制、八進制和十六進制等形式表示,但不包括二進制,所以選擇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知識點解析:因為一個教師可講授多門課程,而一門課程又能由多個教師講授,所以它們之間是多對多的關系,可以表示為m:n。12、以下程序的運行結果是()。#include<stdio.h>main(){inta=3,b=4,C=8,d=4,m=1,n=3;printf("%d\n",(m=a>b)&&(n=c>d));}A、0B、1C、2D、3標準答案:A知識點解析:邏輯與(&&)運算符的功能是:當“&&”運算符兩邊的運算對象均為1時,整個表達式的值為1,否則為0。因為a=3<b=4,即m=0,所以整個表達式的值為0。13、下面選項中不是關系數(shù)據(jù)庫基本特征的是()。A、不同的列應有不同的數(shù)據(jù)類型B、不同的列應有不同的列名C、與行的次序無關D、與列的次序無關標準答案:A知識點解析:在關系數(shù)據(jù)庫中,二維表由行數(shù)據(jù)組成,每行數(shù)據(jù)包含若干屬性值,每個屬性都有指定的類型和取值范圍。數(shù)據(jù)行數(shù)是有限的,每行數(shù)據(jù)互不相同(元組唯一性),每行的次序可以任意交換(元組的次序無關性);表中屬性名(列各)各不相同即字段名不重復,屬性名(列名)次序可任意交換。故本題答案為A選項。14、以下定義語句中正確的是()。A、inta=b=0;B、charA=65+1’b=‘b’;C、floata=1,*b=&a,*c=&b;D、doublea=0.0;b=1.1:標準答案:B知識點解析:A選項語句中b變量還沒有定義不能直接用于給a變量賦值。C選項語句中*、*c表示的是一個實型變量的地址,不能再將&b賦值給指針型變量c。D選項語句中a=0.0后面應該為逗號,不能是分號。15、若x=2,y=3,則x&y的結果是()。A、0B、2C、3D、5標準答案:B知識點解析:本題主要考查按位與(&)運算的知識點?!?”是對兩個運算量相應的位進行邏輯與,“&”的規(guī)則與邏輯與“&&”相同。x=2的二進制為00000010,y=3的二進制為00000011,x&y=00000010,轉化為十進制即為2。16、一個工作人員可以使用多臺計算機,而一臺計算機可被多個人使用,則實體工作人員與實體計算機之間的聯(lián)系是()。A、一對一B、一對多C、多對多D、多對一標準答案:C知識點解析:因為一個人可以操作多個計算機,而一臺計算機又可以被多個人使用,所以兩個實體之間是多對多的關系。17、以下選項中正確的定義語句是()。A、double,a,b;B、doublea=b=7;C、doublea;b;D、doublea=7,b=7;標準答案:D知識點解析:A選項中變量類型符double后面不能有逗號。B選項中變量b不能先使用再定義,應該寫成選項D中的格式。C選項中變量a后面應該是逗號而不是分號。18、有以下程序:#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知識點解析:本題考查的是函數(shù)的地址調(diào)用,將數(shù)組名作為數(shù)組首地址進行傳遞,然后取首個數(shù)組元素值進行加1運算,循環(huán)5次。因此A選項正確。19、下列敘述中正確的是()。A、算法就是程序B、設計算法時只需要考慮數(shù)據(jù)結構的設計C、設計算法時只需要考慮結果的可靠性D、以上三種說法都不對標準答案:D知識點解析:算法是指解題方案的準確而完整的描述,算法不等于程序,也不等于計算方法,所以A錯誤。設計算法時不僅要考慮對數(shù)據(jù)對象的運算和操作,還要考慮算法的控制結構。20、有以下程序#inc1udemain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0;for(i=0;i<3;i++)for(j=2j>=i;j——)=—b[i]D];printf("%d\n",t);}程序運行后的輸出結果是()。A、4B、3C、8D、9標準答案:C知識點解析:這道題主要考查的是二維數(shù)組的有關知識。在兩層for循環(huán)語句中,累加上三角元素,所以程序執(zhí)行的過程為“t=b[0][0]+b[0][1]+b[0][2]+b[1][1]+b[1][2]+b[2][2]=8”。21、程序流程圖中帶有箭頭的線段表示的是()。A、圖元關系B、數(shù)據(jù)流C、控制流D、調(diào)用關系標準答案:C知識點解析:在數(shù)據(jù)流圖中,用標有名字的箭頭表示數(shù)據(jù)流。在程序流程圖中,用標有名字的箭頭表示控制流。所以選擇C)。22、有以下程序:#include<stdio.h>main(){inti,j,x=0;for(i=0;i<2;i++){x++:for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序執(zhí)行后的輸出結果是()。A、x=4B、x=8C、x=6D、x=12標準答案:B知識點解析:toutinue的作用是跳出循環(huán)體中剩余的語句而進行下一次循環(huán)。第一次執(zhí)行外循環(huán)i的值為0,執(zhí)行x++,x的值變?yōu)?,第一次執(zhí)行內(nèi)層循環(huán)j的值為0,不滿足if條件,執(zhí)行x++,x的值變?yōu)?,第二次內(nèi)循環(huán)j的值為1,if條件成立,跳出本次循環(huán),第三次執(zhí)行內(nèi)循環(huán)j的值為2,不滿足if條件,x的值變?yōu)?,第四次執(zhí)行內(nèi)循環(huán)j的值為3滿足條件跳出本次內(nèi)循環(huán),x的值加1,即為4,第一次外循環(huán)結束。第二次執(zhí)行外循環(huán)時,同理,i的值被加了,4次,變?yōu)?,所以選擇B選項。23、有以下程序:#include<stdio.h>voidfull(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<J){t=s[i];s[i]=s[J];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");}程序運行后的輸出結果是()。A、4321098765B、5678901234C、0987654321D、0987651234標準答案:B知識點解析:該程序首先給一維數(shù)組賦值,然后三次調(diào)用fun函數(shù),其中fun(a,0,3);功能是將一維數(shù)組中笫1,個元素和第4個元素互換,第2個元素和第3個元素互換;其中fun(a,4,9);功能是將一維數(shù)組中第5個元素和第10個元素互換,第6個和第9個元素互換,第7個元素和第8個元素互換;其中fun(a,0,9);功能是將將一維數(shù)組中第1個元素和第10個元素互換,第2個元素和第9個元素互換……依此類推。因此B選項正確。24、有以下程序#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=2;i++)s=fun();printf("%d\n",s);}程序運行后的輸出結果是A、0B、1C、4D、8標準答案:C知識點解析:fun函數(shù)中的x為靜態(tài)局部變量,占用固定的內(nèi)存單元,下一次調(diào)用時仍可保留上次調(diào)用時的值。也就是說,如果多次調(diào)用fun函數(shù),x的定義只在第一次調(diào)用時有效,從第二次調(diào)用開始,x的定義相當于不存在,直接使用x的值。主函數(shù)中調(diào)用兩次fun函數(shù):第一次調(diào)用:x=1,x=x*2=2,s=2;第二次調(diào)用:(直接用上次x的值)x=x*2=4,s=4。因此C選項正確。25、以下能正確表述算式sin(2πr+30°)的C語言表達式是()。A、sin(2*3.14*r+3.14*30/180.0)B、sin(2*π*r+30)C、sin(2*3.14*r+30)D、sin(2*3.14*r+30*3.14/360.0)標準答案:A知識點解析:考查算術表達式的寫法,C中沒有π,需要用數(shù)值3.14代替,C中sin函數(shù)的參數(shù)為弧度,角度30轉成弧度應為3.14*30/180。故而選A)。26、有以下程序#includemain(){inta[3]={0},i,j,k=2;for(i=0;iA、3B、2C、1D、0標準答案:A知識點解析:暫無解析27、有以下程序:#include<stdio.h>main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf(’’%d’’,t[2-i][i]);程序執(zhí)行后的輸出結果是()。A、357B、753C、369D、751標準答案:A知識點解析:二維數(shù)組t[][3]實際上指t[3][3]={{9,8,7},{6,5,4},{3,2,1}},通過循環(huán)語句for語句可以得到i=0,t[2][0]=3、i=1,t[1][1]=5、i=2,t[0][2]=7、i=3時循環(huán)結束即t[2][0]=3、t[1][1]=5、t[0][2]=7。因此A選項正確。28、有以下程序:#include<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i_nl;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf(’’%d’’,a[k]);printf(’’\n’’);}程序運行后的輸出結果是()。A、1,1,2,6,B、6,2,1,l,C、6,4,3,2,D、2,3,4,6,標準答案:C知識點解析:首先對二維數(shù)組進行賦值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值為1、4、…、6、1。通過for嵌套循環(huán)語句和if條件語句,對二維數(shù)組對角線元素進行由大到小的排序操作,程序最后通過for語句輸出二維數(shù)組第1行的4個元素。因此C選項正確。29、若有以下程序#include<stdio.h>#include<string.h>typedefstructstu{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ū)別,該題中調(diào)用f函數(shù)后,b的name會重新賦值為Qian,選項A正確。30、有以下程序:#includemain(){intx=1;for(;x<8;x++){if(x%3){printf(’’%d,’’,x++);continue;}printf(’’%d,’’,++x);}}程序運行后的輸出結果是()。A、1,4,5,7B、1,3,5,7C、2,4,5,8D、8,5,4,2標準答案:A知識點解析:注意循環(huán)變量在循環(huán)體中有個加1的運算,所以循環(huán)變量x=1,3,5,7;當x是3的整數(shù)倍時,輸出++x,當x不是3的整數(shù)倍時輸出x++,所以結果是1,4,5,7。31、下面關于位運算符的敘述,正確的是A、||表示"按位或"的運算B、#表示"按位異或"的運算C、&表示"按位與"的運算D、~表示"按位異或"的運算標準答案:C知識點解析:本題考查位運算。^為按位異或,|為按位或,~表示按位取反。所以C選項正確。32、C語言主要是借助以下哪種手段來實現(xiàn)程序模塊化A、定義函數(shù)B、定義常量和外部變量C、使用豐富的數(shù)據(jù)類型D、使用三種基本結構語句標準答案:A知識點解析:C語言程序的模塊化通過函數(shù)來體現(xiàn),所以選擇A。33、C語言中分支結構中的if(表達式)語句中,關于“表達式’’值的敘述中正確的是()。A、必須是邏輯值B、必須是整數(shù)值C、不能為零D、可以是任意合法的數(shù)值標準答案:D知識點解析:if語句中的值可以是任意合法的數(shù)值或表達式,其他選項均不正確。34、有以下程序:#includevoidmain(){inti=5,s=0;do{switch(i){case1:case3:s+=1;i--;break;default:s=0;i一一;case2:case4:s+=2;i一一;break;}printf(’’%d’’,s);}while(i>0&&s<5);}程序運行后的輸出結果是()。A、235B、2350C、0235D、2356標準答案:A知識點解析:注意兩點。一是case分支語句后面若沒有break則會執(zhí)行其后的所有語句,直到有break跳出或switch()語句結束,do一while循環(huán)第1次執(zhí)行時,i=5,在switch中執(zhí)行default分支,但其后沒有break,所以后面的分支也會被執(zhí)行,執(zhí)行完后s=2,i=3;第2次執(zhí)行do一while循環(huán)時,會執(zhí)行case3后面的語句,直到有break跳出,執(zhí)行完后s=3,i=2;第3次執(zhí)行后s=5,i=1,此時注意while中的條件是s<5,所以循環(huán)結束,打印的結果是235。35、以下敘述正確的是A、不能在數(shù)組說明符的一對方括號中使用表達式B、charc1,*c2,**c3,c4[2];是C語言的合法語句C、數(shù)組下標的最小值可以是負值D、若有數(shù)組定義intarray[5];則語句printf("%d",array[1.23]);是合法的標準答案:B知識點解析:在B選項中,c1是字符型變量,c2是字符型指針變量,c3是指向字符型指針的指針變量,c4[2]是一個一維字符數(shù)組,這些都是C語言的合法語句,因此答案為B選項。36、以下非法的字符常量是A、’\\n’B、’\101’C、’\x21’D、’\0’標準答案:A知識點解析:C語言允許使用一種以特殊形式出現(xiàn)的字符常量,,使用"\n"來表示換行,"\n"實際上是一個字符,它的ASCII碼值為10,不存在’\\n’用法,故答案為A選項。37、有以下程序#include<stdio.h>typedefstructstu{charname[10];chargender;intscore;}STU;voidf(STUa,STU*b){a=*b;printf("%s,%c,%d,",,a.gender,a.score);}main(){STUa={"Zhao",’m’,290},b={"Qian",’f’,350};f(a,&b);printf("%s,%c,%d\n",,a.gender,a.score);}程序運行后的輸出結果是A、Qian,f,350,Qian,f,350B、Zhao,m,290,Qian,f,350C、Qian,f,350,Zhao,m,290D、Zhao,m,290,Zhao,m,290標準答案:C知識點解析:main函數(shù)中,首先定義兩個結構體STU類型的變量a,b,并對a,b初始化,f函數(shù)的功能是:用形參結構體指針b指向的結構體對形參a賦值,此時形參結構體a的值為指針b指向的值,輸出a即輸出指針b指向的結構體,返回到main函數(shù)后,在輸出實參a的值,答案為C選項,注:形參a,b不要和實參a,b混淆。38、數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)獨立性是指A、不會因為系統(tǒng)數(shù)據(jù)存儲結構與數(shù)據(jù)邏輯結構的變化而影響應用程序B、不會因為數(shù)據(jù)的變化而影響應用程序C、不會因為存儲策略的變化而影響存儲結構D、不會因為某些存儲結構的變化而影響其他的存儲結構標準答案:A知識點解析:數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)獨立性,是指數(shù)據(jù)庫中數(shù)據(jù)獨立于應用程序且不依賴于應用程序,即數(shù)據(jù)的邏輯結構、存儲結構與存取方式的改變不會影響應用程序。故選A選項。39、以下關于C語言的敘述中正確的是()。A、預處理命令通常位于函數(shù)體外面,但也可以位于函數(shù)體中間B、C語言中的變量定義須在其他語句之前C、在C語言程序的書寫中,一個語句必須單占一行D、一個C語言源程序可以由一個或多個源文件組成,每個源文件可由自己的main函數(shù)標準答案:A知識點解析:源程序中可以有預處理命令(include命令僅為其中的一種)。C語言中的變量可以在使用之前的任何位置進行定義。C語言程序的書寫中,多個語句可以位于一行,但為了增強可讀性,一般每行只有一條語句。一個C語言源程序可以由一個或多個源文件組成,但僅可以有一個main函數(shù).二、程序填空題(本題共1題,每題1.0分,共1分。)40、程序通過定義學生結構體變量,存儲了學生的學號、姓名和3門課的成績。所有學生數(shù)據(jù)均以二進制方式輸出到文件中。函數(shù)fun的功能是重寫形參filename所指文件中最后一個學生的數(shù)據(jù),即用新的學生數(shù)據(jù)覆蓋該學生原來的數(shù)據(jù),其他學生的數(shù)據(jù)不變。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結構!#include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;/**********found**********/fp=fopen(_____1_____,"rb+");/**********found**********/fseek(_____2_____,一(long)sizeof(STU),SEEKEND);/**********found**********/fwrite(&n,sizeof(STU),1,_____3_____);fclose(fp);}main(){STUt[N]=f{10001,"MaChao",91,92,77),{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88}};STUn={10006,"ZhaoSi",55,70,68},ss[N];inti,j;FILE*fp;fp=fopen("student.dat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("\nTheoriginaldata:\n\n");for(j=0;j標準答案:(1)filename(2)fp(3)fp知識點解析:第一空:“fp=fopen(__1__,"rb+");”補充fopen的參數(shù),fopen的調(diào)用形式是:fp=fopen(文件名,文件使用方式),因此第一空處應填文件名“filename”。第二空:此處是補充fseek函數(shù)的參數(shù),fseek的調(diào)用形式是:fseek(fp,offset,position),其中第一個參數(shù)是文件型指針,故第二空處應填文件型指針變量“fp”。第三空:fwrite的調(diào)用形式是(buffer,size,count,fb),最后一個參數(shù)是文件型指針,故第三空處應填“fp”,將新的學生數(shù)據(jù)寫在最后一個學生數(shù)據(jù)位置。三、程序修改題(本題共1題,每題1.0分,共1分。)41、給定程序MODI1.C中的函數(shù)Creatlink的功能是創(chuàng)建帶頭結點的單向鏈表,并為各結點數(shù)據(jù)域賦0到m-1的值。請改正函數(shù)Creatlink中指定部位的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!#include#includetypedefstructaa{intdata;structaa*next;}NODE;NODE*Creatiink(intn,intm){NODE*h=NULL,*p,*s;inti;/**********found***********/p=(NODE)malloc(sizeof(NODE));h=p;p->next=NULL;for(i=1;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%m;s->next=p->next;p->next。s;p=p->next;}/**********found**********/returnp;}outlink(NODE*h){NODE*p;p=h->next;printf("\n\nTHELIST:\n\nHEAD");while(P){printf("->%d”,p->data);p=p->next;}printf("\n");}main(){NODE*head;head=Creatlink(8,22);outlink(head);}標準答案:(1)p=(NODE*)malloc(sizeof(NODE));(2)returnh;知識點解析:(1)第一標識下“p=(NODE)malloc(sizeof(NODE));”,maclloc函數(shù)的返回類型是void*類型,表示未確定類型的指針,因此需要指針類型轉換,而“(NODE)”不是指針類型,故第一標識下應改成“p=(NODE*)mailoc(sizeof(NODE));”。(2)第二個標識下,最后將單鏈表返回,應該是返回頭指針h指向的鏈表,而不是其中的一個節(jié)點p,所以“returnp;”應該改為“returnh;”。四、程序設計題(本題共1題,每題1.0分,共1分。)42、請編寫函數(shù)fun,函數(shù)的功能是:統(tǒng)計一行字符串中單詞的個數(shù),作為函數(shù)值返回。一行字符串在主函數(shù)中輸入,規(guī)定所有單詞由小寫字母組成,單詞之間由若干個空格隔開,一行的開始沒有空格。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#innclude#include#defineN80intfun(char*s){}main(){charline[N];intnum=0;voidNONO();printf("Enterastring:\n");gets(line);num=fun(line);printf("Thenumberofwordis:%d\n\n",num);NONO();}voidNONO(){/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關閉文件。*/FTLE*rf,*wf;inti,num;charline[N],*p;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fgets(line,N,rf);p=strchr(line,’\n’);if(p!=NULL)*p=0;num=fun(line);fprintf(wf,"%d\n",num);}fclose(rf);fclose(wf);}標準答案:inti,n=0;//字符統(tǒng)計初始值設置為0for(i=0;i=’a’&&s[i]<=’z’&&s[i+1]=’’||s[i+1]==’\0’)//單詞判斷條件n++;//單詞統(tǒng)計計數(shù)器加1}returnn;//返回統(tǒng)計值知識點解析:(1)首先,求得字符串的長度。(2)只要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國苧麻紗線行業(yè)發(fā)展監(jiān)測及投資前景預測報告
- 連接管路項目可行性研究報告
- 2025年中國線性驅動系統(tǒng)行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y方向研究報告
- 表面活性劑新建項目可行性研究報告建議書申請格式范文
- 汽油發(fā)動機項目可行性研究報告
- 智能酸堿濃度計行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 2024-2029全球及中國豪華門行業(yè)市場調(diào)研及投資前景分析報告
- 童外貿(mào)鞋行業(yè)深度研究報告
- 中國透明墻紙膠行業(yè)市場深度分析及投資戰(zhàn)略研究報告
- 浙江省嘉興市平湖市2024年中考模擬語文試卷含答案
- 2024春季中鐵三局集團校園招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 出版社圖書編輯出版流程規(guī)范
- 地貌與第四紀地質學習通超星期末考試答案章節(jié)答案2024年
- GB/T 6003.2-2024試驗篩技術要求和檢驗第2部分:金屬穿孔板試驗篩
- 一汽在線綜合能力測評題
- 2024年焊工職業(yè)技能競賽理論知識考試題庫500題(含答案)
- 云南師大附中2025屆生物高二上期末教學質量檢測試題含解析
- 重慶市九龍坡區(qū)2023-2024學年高二年級上冊1月期末考試物理試題
- 風能發(fā)電對養(yǎng)殖場溫濕度變化的影響
- 計算機應用基礎
- 廠內(nèi)電動車安全管理制度
評論
0/150
提交評論