國家二級(C語言)筆試模擬試卷11(共558題)_第1頁
國家二級(C語言)筆試模擬試卷11(共558題)_第2頁
國家二級(C語言)筆試模擬試卷11(共558題)_第3頁
國家二級(C語言)筆試模擬試卷11(共558題)_第4頁
國家二級(C語言)筆試模擬試卷11(共558題)_第5頁
已閱讀5頁,還剩133頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級(C語言)筆試模擬試卷11(共9套)(共558題)國家二級(C語言)筆試模擬試卷第1套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、已知8個數(shù)據(jù)元素為(34,76,45,18,26,54,92,65),按照依次插入結(jié)點的方法生成一棵二叉排序樹后,最后2層上的結(jié)點總數(shù)為______。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:2知識點解析:暫無解析2、一個棧的輸入序列為1,2,3,4,下列選項中的______序列不可能是這個棧的輸出序列。A、1,3,2,4B、2,3,4,1C、4,3,1,2D、3,4,2,1標(biāo)準(zhǔn)答案:4知識點解析:暫無解析3、循環(huán)鏈表的主要優(yōu)點是______。A、不再需要頭指針了B、已知某個結(jié)點的位置后,能夠容易找到它的直接前驅(qū)C、在進(jìn)行插入、刪除運算時,能更好地保證鏈表不斷開D、從表中任一結(jié)點出發(fā)都能掃描到整個鏈表標(biāo)準(zhǔn)答案:8知識點解析:暫無解析4、軟件測試是軟件開發(fā)過程中重要且不可缺少的階段,測試過程中的______是基礎(chǔ)測試。A、系統(tǒng)測試B、有效性測試C、單元測試D、集成測試標(biāo)準(zhǔn)答案:4知識點解析:暫無解析5、在瀑布模型中,將軟件開發(fā)劃分為若干時期,而軟件的可行性研究一般被屬于______。A、計劃時期B、維護(hù)時期C、運行時期D、開發(fā)時期標(biāo)準(zhǔn)答案:1知識點解析:暫無解析6、在數(shù)據(jù)庫技術(shù)中,面向?qū)ο髷?shù)據(jù)模型是一種______。A、概念模型B、結(jié)構(gòu)模型C、物理模型D、形象模型標(biāo)準(zhǔn)答案:2知識點解析:暫無解析7、在C語言中提供的合法的關(guān)鍵字是______。A、swicthB、cherC、CaseD、default標(biāo)準(zhǔn)答案:8知識點解析:暫無解析8、若定義staticinta[2][2]={1,2,3,4},則a數(shù)組的各數(shù)組元素分別為______。A、a[0][0]=1、a[0][1]=2、at[1][0]=3、a[1][1]=4B、a[0][0]=1、a[0][1]=3、a[1][0]=2、a[1][1]=4C、a[0][0]=4、a[0][1]=3、a[1][0]=2、s[1][1]=1D、a[0][0]=4、a[0][1]=2、a[1][0]=3、a[1][1]=1標(biāo)準(zhǔn)答案:1知識點解析:暫無解析9、下列變量說明語句中,正確的是A、char:abc;B、chara;b;c;C、intx;z;D、intx,z;標(biāo)準(zhǔn)答案:8知識點解析:暫無解析10、若有以下定義和語句,則輸出的結(jié)果是______。charc1=’b’,c2=’e’;printf("%d,%c\n",c2-c1,c2-’a’+"A");A、2,MB、3,EC、2,ED、輸出結(jié)果不確定標(biāo)準(zhǔn)答案:2知識點解析:暫無解析二、選擇題(1分)(本題共10題,每題1.0分,共10分。)11、下列不正確的轉(zhuǎn)義字符是______。A、’\\’,B、’\’C、’074’D、’\0’標(biāo)準(zhǔn)答案:4知識點解析:暫無解析12、設(shè)有如下定義,則執(zhí)行表達(dá)式(nFa>b)&&(n=c>d)后,n的值為______。inta=1,b=2,c=3,d=4,m=2,n=2;A、1B、2C、3D、0標(biāo)準(zhǔn)答案:2知識點解析:暫無解析13、若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是______。A、’a’<=c<’z’B、(c>=’a’)||(c<=’z’)C、(’a’<’c’)and(’z’>=C)D、(c>=’a’)&&(c<=’z’)標(biāo)準(zhǔn)答案:8知識點解析:暫無解析14、在下列敘述中,正確的一條是______。A、if(表達(dá)式)語句中,表達(dá)式的類型只限于邏輯表達(dá)式B、語句“goto12;”是合法的C、for(;;)語句相當(dāng)于while(1)語句D、break語句可用于程序的任何地方,以終止程序的執(zhí)行標(biāo)準(zhǔn)答案:4知識點解析:暫無解析15、設(shè)i是int型變量,f是float型變量,用下面的語句給這2個變量輸入值。為了將,100和765.12分別賦給i和f,則正確的輸入為______。scanf("i=%d,f=%f”,&i,&f);A、100<空格>765.12<回車>B、i=100,f=765.12<回車>C、100<回車>765.12<回車>D、x=100<回車>y=765.12<回車>標(biāo)準(zhǔn)答案:2知識點解析:暫無解析16、下面程序執(zhí)行后的輸出結(jié)果是(小數(shù)點后只寫一位)______。main(){doubled;floatf;long1;inti;i=f=1=d=20/3;printf("%d%ld%f%f\n",i,l,f,d);}A、666.06.0B、666.76.7C、666.06.7D、666.76.0標(biāo)準(zhǔn)答案:1知識點解析:暫無解析17、當(dāng)下面的程序運行后,變量c的值為______。main(){inta=45,b=27,c=0;c=max(a,b);}intmax(x,y)intx,y;{intz;if(x>y)z=x;elsez=y;return(z);}A、45B、27C、0D、72標(biāo)準(zhǔn)答案:1知識點解析:暫無解析18、若有語句scanf("%d%c%f",&a,&b,&c),假設(shè)輸入序列為2223a123o.12,則a.b.c的值為______。A、無值B、2223,a,123o.12C、2223,a,無D、2223,a,123標(biāo)準(zhǔn)答案:8知識點解析:暫無解析19、若輸入"Iamaboy!",下列程序的運行結(jié)果為______。charconnect(string1,string2,string)charstring1[],string2[],string[];{inti,j;for(i=0;stringl[i]!=’\0’;i++)string[i]=stringl[i];for(j=0;string2[j]!=’\0’;j++)string[i+j]=string2[j];string[i+j]=’\0’;}main(){chars1[100],s2[100],s[100];printf("\n輸入string1:\n");scanf("%s",s1);printf("\n輸入string2:\n");scanf("%s",s2);connect(s1,s2,s);printf("%s\n",s);}A、Iamaboy!B、輸入string2:C、IamD、Iamaboy!標(biāo)準(zhǔn)答案:4知識點解析:暫無解析20、下面能正確進(jìn)行字符串賦值操作的語句是______。A、chars[5]={"ABCDE"};B、chars[5]={’a’,’b’,’c’,’d’,’e’};C、char*s;s="ABCDEF"D、char*s;scanf("%s",s);標(biāo)準(zhǔn)答案:4知識點解析:暫無解析三、選擇題(2分)(本題共20題,每題1.0分,共20分。)21、下列程序的輸出結(jié)果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);}A、123B、234C、223D、233標(biāo)準(zhǔn)答案:8知識點解析:本題考查自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“‖”。自增運算符“++”,出現(xiàn)在變量之前(如題中的中++n),表示先使變量的值加1,再使用變量的值進(jìn)行運算:出現(xiàn)在變量之后(如題中的n++),表示先使用變量的值進(jìn)行運算,再使變量的值加1。當(dāng)邏輯與運算符“&&”兩邊的運算對象都為真時,邏輯表達(dá)式的值才為真;當(dāng)邏輯或運算符“‖”左邊的運算對象為真時,其值就為真,不用計算其右邊的運算對象的值.所以根據(jù)運算符的優(yōu)先級,題中應(yīng)先計算內(nèi)層括號中的值。++j是先自加后運算,因此運算時j的值等于3,所以表達(dá)式++j=3成立,即表達(dá)式的值為1;由于1與任何數(shù)都為進(jìn)行或(‖)運算,結(jié)果都為1,因此k=3;最后計算“&&”之前的表達(dá)式,i++是先運算后自加,因此運算時i為1,所以i++=1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。22、下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}printf("%d",A);}A、19B、18C、6D、8標(biāo)準(zhǔn)答案:1知識點解析:本題考查switch語句。當(dāng)i=1時,執(zhí)行case1,因為沒有遇到break語句,所以依次往下運行,a=a+2=2,a=a+3=5;當(dāng)i=2時,執(zhí)行case2,因為沒有遇到break語句,所以依次往下運行,a=a+2=7,a=a+3=10;當(dāng)i=3時,執(zhí)行case3,a=a+1=11,因為沒有遇到break語句,所以依次往下運行,a=a+2=13,a=a+3=16;當(dāng)i=4時,執(zhí)行default,a=a+3=19,結(jié)束循環(huán)。23、在C語言中,while和do…while循環(huán)的主要區(qū)別是()。A、do…while的循環(huán)體不能是復(fù)合語句B、do…while允許從循環(huán)體外轉(zhuǎn)到循環(huán)體內(nèi)C、while的循環(huán)體至少被執(zhí)行一次D、do…while的循環(huán)體至少被執(zhí)行一次標(biāo)準(zhǔn)答案:8知識點解析:本題考查while和do…while循環(huán)的區(qū)別。while循環(huán)的控制出現(xiàn)在循環(huán)體之前,只有當(dāng)while后面的表達(dá)式的值為非零時,才可能執(zhí)行循環(huán)體:在do…while構(gòu)成的循環(huán)體中,總是先執(zhí)行一次循環(huán)體,然后再求表達(dá)式的值,因此無論表達(dá)式的值是否為零,循環(huán)體至少要被執(zhí)行一次。24、若各選項中所用變量已正確定義,fun()函數(shù)中通過return語句返回一個函數(shù)值,下列選項中錯誤的程序是()。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){……}標(biāo)準(zhǔn)答案:1知識點解析:C語言規(guī)定,函數(shù)必須先定義,后調(diào)用(函數(shù)的返回值類型為int或char時除外)。在選項A)中,調(diào)用的子函數(shù)在調(diào)用后面定義,所以不正確。在選項B)、C)中,被調(diào)用函數(shù)在主調(diào)函數(shù)之前定義,再在主函數(shù)中調(diào)用,所以是正確的:在選項D)中,在主調(diào)函數(shù)中先對于函數(shù)floatfun(inti,intj)進(jìn)行了定義,然后進(jìn)行調(diào)用。25、判斷char型變量c1是否為小寫字母的正確表達(dá)式為()。A、’a’<=c1<=’z’B、(c1>=A)‖(c1<=z)C、(’a’=>c1‖(’z’<=c1)D、(c1>=’a’)&&(c1<=’z’)標(biāo)準(zhǔn)答案:8知識點解析:C語言規(guī)定,字符常量在程序中要用單引號括起來。判斷c1是否為小寫字母的充要條件c1>=’a’和c1<=’z’,用邏輯與(&&)來表示。A選項的這種形式在C語言中沒有,所以選項D)正確.26、有下列程序:main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}執(zhí)行后的輸出結(jié)果是()。A、1B、2C、4D、死循環(huán)標(biāo)準(zhǔn)答案:1知識點解析:在程序語句中,k的初始值為5,進(jìn)行第1次while循環(huán)后,k自減1為4,非0,執(zhí)行循環(huán)體里的printf語句,輸出1,此時k的值變?yōu)?。程序執(zhí)行第2次循環(huán)時,k自減1變?yōu)?,為假,退出while循環(huán)語句。所以程序的最后結(jié)果為1。27、若函數(shù)調(diào)用時,參數(shù)為基本數(shù)據(jù)類型的變量,下列敘述中正確的是()。A、實參與其對應(yīng)的形參共占存儲單元B、只有當(dāng)實參與其對應(yīng)的形參同名時才共占存儲單元C、實參與其對應(yīng)的形參分別占用不同的存儲單元D、實參將數(shù)據(jù)傳遞給形參后,立即釋放原先占用的存儲單元標(biāo)準(zhǔn)答案:4知識點解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。函數(shù)的形參是函數(shù)定義時由用戶定義的形式上的變量,實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。在函數(shù)調(diào)用時,實參和其所對應(yīng)的形參分別占用不同的存儲單元,彼此之間不影響。28、在C語言程序中,下列說法正確的是()。A、函數(shù)的定義和函數(shù)的調(diào)用均可以嵌套B、函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套C、函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套D、函數(shù)的定義和函數(shù)的調(diào)用均不可以嵌套標(biāo)準(zhǔn)答案:2知識點解析:本題考查函數(shù)調(diào)用的基本概念。因為函數(shù)的結(jié)果是個未知量,而函數(shù)定義時不能使用未知量,所以函數(shù)定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套。29、下列說法中不正確的是()。A、指針是一個變量B、指針中存放的是數(shù)值C、指針可以進(jìn)行加、減等算術(shù)運算D、指針變量占用存儲空間標(biāo)準(zhǔn)答案:2知識點解析:指針中存放的是變量的地址,指針也可以進(jìn)行增減運算,這時指針移動的最小單位是—個存儲單元,而不是一個字節(jié)。30、若有定義和語句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);則輸出結(jié)果是()。A、20,10B、20,20C、10,20D、10,10標(biāo)準(zhǔn)答案:8知識點解析:本題考查指針變量的賦值。**pp是定義了一個指向指針的指針變量,語句pp=&p的意思是將pp指向指針p,*p和**pp都是指針p所指的內(nèi)存空間的內(nèi)容,即b的值。31、下列二維數(shù)組的說明中,不正確的是()。A、floata[][4]={0,1,8,5,9};B、inta[3][4];C、#defineN5D、inta[2][9.5];floata[N][3];標(biāo)準(zhǔn)答案:8知識點解析:C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達(dá)式,而不能省略第二個方括號中的常量表達(dá)式;二維數(shù)組的一般定義格式是:類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]。32、若有定義:“inta[2][3];”則對a數(shù)組的第i行第j列元素的正確引用為()。A、*(*(a+i)+j)B、(a+i)[j]C、*(a+i+j)D、*(a+i)+j標(biāo)準(zhǔn)答案:1知識點解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。33、下列能正確進(jìn)行字符串賦值的是()。A、chars[5]={"ABCDE"};B、chars[5]={’A’,’B’,’C’,’D’,’E’};C、char*s;s="ABCDE";D、char*s;printf("%s",s);標(biāo)準(zhǔn)答案:4知識點解析:字符串存儲要有結(jié)束符“\0”且要占用一個空間,選項A)、B的空間不夠:printf用來輸出字符,不能輸入字符串.34、若有說明chars1[30]="abc",s2[]="defghi";,則在使用函數(shù)strcat(s1,s2)后,結(jié)果是()。A、s1的內(nèi)容更新為abcdefghiB、s1的內(nèi)容更新為defghi\0C、s1的內(nèi)容更新為defghiabc\0D、s1的內(nèi)容更新為abcdefghi\0標(biāo)準(zhǔn)答案:8知識點解析:strcat(s1,s2)是把s2字符串連接到s1字符串的末尾,要保證s1能容納下連接后的字符串。35、設(shè)有變量說明int(*p)[m],其中的標(biāo)識符p是()。A、m個指向整型變量的指針B、指向m個整型變量的指針C、一個指向具有m個整型元素的一維數(shù)組的指針D、具有m個指針元素的一維指針數(shù)組,每個元素都指向整型變量標(biāo)準(zhǔn)答案:4知識點解析:本題考查指向數(shù)組的指針變量的聲明。這里的p表示一個指向數(shù)組的指針;*p表示指針p指向地址的內(nèi)容。36、下列描述中正確的是()。A、在C語言程序中預(yù)處理是指完成宏替換和文件包含指定的文件的調(diào)用B、預(yù)處理指令只能位于C源程序文件的首部C、預(yù)處理命令可以放在程序中的任何位置D、預(yù)處理命令結(jié)尾需要加分號標(biāo)準(zhǔn)答案:4知識點解析:本題考查預(yù)處理命令的特點,編譯預(yù)處理命令的特點:①為了區(qū)別一般的語句,預(yù)處理命令行都必須以“#”號開始,結(jié)尾不加分號;②預(yù)處理命令可以放在程序中的任何位置;③在程序中凡是以“#”號開始的語句行都是預(yù)處理命令行。37、若有結(jié)構(gòu)體定義:structstu{intnum;charsex;intage;}a1,a2;則下列語句中錯誤的是()。A、printf("%d,%c,%d",a1);B、a2.age=a1.age;C、a1.age++;D、a1.num=5;標(biāo)準(zhǔn)答案:1知識點解析:題中a1和a2兩個結(jié)構(gòu)體變量名所對應(yīng)的成員相同,可以與運算“++’相結(jié)合。結(jié)構(gòu)體變量的輸出格式為:printf("要輸出變量名;%d\t",結(jié)構(gòu)變量名.要輸出的成員變量名),38、C語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間()。A、所有成員一直駐留在內(nèi)存中B、沒有成員駐留在內(nèi)存中C、部分成員駐留在內(nèi)存中D、只有一個成員駐留在內(nèi)存中標(biāo)準(zhǔn)答案:1知識點解析:C語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間所有成員一直駐留在內(nèi)存中,39、在位運算中,操作數(shù)每右移兩位,其結(jié)果相當(dāng)于()。A、操作數(shù)乘以2B、操作數(shù)除以2C、操作數(shù)除以4D、操作數(shù)乘以4標(biāo)準(zhǔn)答案:4知識點解析:在位運算中,操作數(shù)每右移兩位,相當(dāng)于在操作數(shù)的左側(cè)添0,最右面的兩位被移出,即操作數(shù)除以4。40、在“文件包含”預(yù)處理語句的使用形式中,當(dāng)#include后面的文件名用"",(雙撇號)括起時,尋找被包含文件的方式是()。A、直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄B、先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索C、僅僅搜索源程序所在目錄D、僅僅搜索當(dāng)前目錄標(biāo)準(zhǔn)答案:2知識點解析:本題考查庫函數(shù)調(diào)用的知識點。格式1:#include(文件名),預(yù)處理程序在標(biāo)準(zhǔn)目錄下查找指定的文件:格式2:#include"文件名",預(yù)處理程序首先在引用被包含文件的源文件所在的目錄下搜索指定的文件,如沒找到,再按系統(tǒng)指定的標(biāo)準(zhǔn)目錄搜索。四、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)41、一棵二叉樹第六層(根結(jié)點為第一層)的結(jié)點數(shù)最多為【】個。標(biāo)準(zhǔn)答案:32知識點解析:根據(jù)二叉樹的性質(zhì):二叉樹第i(i≥1)層上至多有2i-1個結(jié)點,得到第六層的結(jié)點數(shù)最多是26-1=32。42、算法復(fù)雜度主要包括時間復(fù)雜度和【】復(fù)雜度。標(biāo)準(zhǔn)答案:空間知識點解析:程序在計算機上運行時所耗費的時間由程序運行時所需輸入的數(shù)據(jù)總量、對源程序進(jìn)行編譯所需時間、計算機執(zhí)行每條指令所需時間、程序中的指令重復(fù)執(zhí)行的次數(shù)等決定。習(xí)慣上常常把語句重復(fù)執(zhí)行的次數(shù)作為算法運行時間的相對量度,稱作算法的時間復(fù)雜度。算法在運行過程中需輔助存儲空間的大小稱為算法的空間復(fù)雜度。43、在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊),其中【】的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。標(biāo)準(zhǔn)答案:驅(qū)動模塊知識點解析:在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊)。其中,驅(qū)動模塊相當(dāng)于被測試模塊的主程序,它接收測試數(shù)據(jù),并傳給被測試模塊,輸出實際測試結(jié)果。承接模塊通常用于代替被測試模塊調(diào)用的其他模塊,其作用僅做少量的數(shù)據(jù)操作,是一個模擬子程序,不必將子模塊的所有功能帶入。44、數(shù)據(jù)管理技術(shù)的發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨立性最高的階段是【】。標(biāo)準(zhǔn)答案:數(shù)據(jù)庫系統(tǒng)階段知識點解析:在數(shù)據(jù)管理技術(shù)的發(fā)展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段,其中數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)階段。45、數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于【】結(jié)構(gòu)。標(biāo)準(zhǔn)答案:邏輯知識點解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是反映數(shù)據(jù)元素之間邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu),它在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅要存放各數(shù)據(jù)元素的信息,還需要存放各數(shù)據(jù)元素之間的前后件關(guān)系的信息。而循環(huán)隊列就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間,供隊列循環(huán)使用。所以循環(huán)隊列不需要存放元素之間的前后件關(guān)系,故它屬于邏輯結(jié)構(gòu)。五、填空題(本題共13題,每題1.0分,共13分。)46、以下程序運行時,若從鍵盤輸入:102030<回車>,輸出的結(jié)果是【】。#include<stdio.h>main(){inti=0,j=0,k=0;scanf("%d%*d%d",&i,&j,&k);prinff("%d%d%d\n",i,j,k);}標(biāo)準(zhǔn)答案:10300知識點解析:在scanf格式控制符中有一個“*”附加說明符,表示跳過它指定的列數(shù)。程序中"%d%*d%d"表示首先將10賦給i,然后遇%。d讀入整數(shù)但不賦給任何變量,最后將讀人的整數(shù)30賦給變量j,變量k并沒有重新賦值,仍為初始值0。所以輸出的結(jié)果為10300。47、以下程序運行后的輸出結(jié)果是【】。#include<stdio.h>#defineS(x)4*x*x+1main(){inti=6,j=8;prinff("%d\n",S(i+j));}標(biāo)準(zhǔn)答案:81知識點解析:帶參數(shù)的宏定義是按#define命令行中指定的字符串從左到右進(jìn)行替換。本題替換后得到:4*i+j*i+j+1,代入i,j的值得81。48、以下程序運行后的輸出結(jié)果是【】。#include<stdio,h>main(){inta=3,b=4,c=5,t=99;if(b<a&&a<c)t=a;a=c;c=t;if(a<e&&b<c)t=b;b=a;a=t;printf("%d%d%d\n",a,b,e);}標(biāo)準(zhǔn)答案:4599知識點解析:要注意每條證語句后面是三條語句,而不是一條語句。執(zhí)行第一條if語句時,條件表達(dá)式不成立,執(zhí)行a=c;c=t;,此時a=5,c=99;執(zhí)行第二條if語句時,條件表達(dá)式成立,執(zhí)行t=b;b=a;a=t;交換a,b的值,輸出結(jié)果為4,5和99。49、已知字符’A’的ASCII代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>,則輸出結(jié)果是【】。#include<stdio.h>main(){chara,b;a=getchar();seanf("%d",&b);a=a-’A’+’0’;b=b*2;prinff("%c%c\n",a,b);}標(biāo)準(zhǔn)答案:1B知識點解析:本題輸入B33,字符’B’被輸入給字符變量a,33賦給b,執(zhí)行a=a-’A’+’0’;得到a的值’1’;執(zhí)行b=b*2;得到b值66,最后以字符型輸出為1B。50、以下程序運行后的輸出結(jié)果是【】#include<stdio,h>fun(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}main()inti,a=5;for(i=0;i<3;i++)prinff("%d%d",i,fun(a));printf("\n");}標(biāo)準(zhǔn)答案:10111212知識點解析:用static關(guān)鍵字聲明的變量稱為靜態(tài)局部變量。靜態(tài)局部變量只在編譯時賦一次初值,以后再次調(diào)用函數(shù)時不再重新賦初值,而是保留上次函數(shù)調(diào)用結(jié)束時的值。程序中的變量c為靜態(tài)變量,當(dāng)再次調(diào)用fun函數(shù)時,變量c不再被賦初值,變量c的值為上次調(diào)用fun函數(shù)時所保留下來的值,具體在程序運行過程中的體現(xiàn)如下:當(dāng)i=0時,第一次調(diào)用fun(5),這時a=5,b=0,c=3,執(zhí)行b++,c++,得到b=1,c=4,則a+b+c=10,返回主函數(shù)輸出010;當(dāng)i=1時,第二次調(diào)用fun(5),這時a=5,b=0,c=4,執(zhí)行b++,c++,得到b=1,c=5,則a+b+c=11,返回主函數(shù)輸出111;當(dāng)i=2時,第三次調(diào)用fun(5),這時a=5,b=0,c=5,執(zhí)行b++,c++,得到b=1,c=6,則a+b+c=12,返回主函數(shù)輸出212;當(dāng)i=3時,循環(huán)結(jié)束,所以輸出結(jié)果為:010111212。51、以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值。請?zhí)羁铡?include<stdio,h>voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;fun(3,4,a,b);for(i=0;i<3;i++)printf("%4d",b[i]);prinff("\n");}voidfun(intm,intn,intar[][4],int*br){inti,j,x;for(i=0;i<m;i++){x=ar[i][0];’for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];【】=x;}}標(biāo)準(zhǔn)答案:br[i]或*(br+i)知識點解析:程序中的數(shù)組a是一個3行4列的二維數(shù)組,一維數(shù)組b用于存放每行的最大數(shù)。在函數(shù)fun中,通過二重for循環(huán)求每行的最大數(shù),外層for循環(huán)用于控制行數(shù),內(nèi)層for循環(huán)用于控制列數(shù),當(dāng)外層循環(huán)執(zhí)行一次時,內(nèi)層循環(huán)則從一行的4個數(shù)中找出最大數(shù)x,然后將最大值x賦給數(shù)組br,故空格處應(yīng)填br[i]或*(br+i)。52、有下面的程序:#include<stdio,h>main(){enumteam{my,your=4,his,her=his+10};prinff("%d%d%d%d\n",my,your,his,her);此程序的輸出結(jié)果是【】。A)0123B)04010C)04515D)14515標(biāo)準(zhǔn)答案:C知識點解析:枚舉的語法規(guī)定,當(dāng)枚舉元素沒有賦值時,如果前面沒有其他枚舉元素,其值為0;如果前面有其他枚舉元素,其值為前一個元素的值加1,所以his的值為5,her的值為15。53、以下程序運行后的輸出結(jié)果是【】。#include<stdio,h>#include<stating,h>voidfun(char*s,intp,intk){inti;for(i=p;i<k-1;i++)s[i]=s[i+2];}main(){chars[]="abedefg";fun(s,3,strlen(s));puts(s);}標(biāo)準(zhǔn)答案:abcfg知識點解析:fun函數(shù)中for循環(huán)語句的作用是將s所指的字符串中從第5個字符到第7個字符依次向前移動兩個位置。輸出結(jié)果為abcfg。54、以下程序運行后的輸出結(jié)果是【】。#include<stdio,h>#include<string,h>main(){charch[]="abc".,x[3][4]:inti:for(i=0;i<3:i++)strcpy(x[i],ch):for(i=0;i<3:i++)printf("%s",&x[i][i]);printf("\n")}標(biāo)準(zhǔn)答案:abcbcc知識點解析:for循環(huán)用strcpy函數(shù)將字符數(shù)組ch的值"abc",分別復(fù)制給二維數(shù)組x的每一行,然后通過for循環(huán)先后打印出以x[0][0],x[1][1],x[2][2]開頭的字符串"abe","bc","c",所以輸出結(jié)果為:abcbcc。55、以下程序運行后輸出結(jié)果是【】。#include<stdio,h>voidswap(inty){intt;t=x;x=y;y=t:printf("%d%d",x,y);}main(){ihta=3,b=4:swap(a,b);prinff("%d%d",a,b);}標(biāo)準(zhǔn)答案:4334知識點解析:程序?qū)⒆兞縜,b的值傳給函數(shù)swap的形參x,y,并在函數(shù)中對x,y的值進(jìn)行交換,所以在函數(shù)swap中輸出x,y的值4,3,由于c程序的函數(shù)是僧傳遞,實參a,b的值不會隨形參x,y的改變而改變,所以在主函數(shù)中輸出的a,b的值為3,4。56、以下程序運行后的輸出結(jié)果是【】。#include<stdio,h>main()charc1,c2;for(el=’0’,c2=’9’;e1<c2;c1++,c2--)printf("%c%c",c1,c2);printf("\n");}標(biāo)準(zhǔn)答案:918273645知識點解析:程序通過for循環(huán)將字符’0’~’9’從前向后,同時從后向前依次輸出,所以輸出結(jié)果為:0918273645。57、以下程序運行后輸出結(jié)果是【】。#include<stdio,h>main(){inta,b,c;a=10;b:20;c=(a%b<1)‖(a/b>1);printf("%d%d%d\n",a,b,c);}標(biāo)準(zhǔn)答案:10200知識點解析:程序中(a%b<1)||(a/b>1)的運算順序為先算括號→算術(shù)運算符→關(guān)系運算符→邏輯運算符。首先計算a%b=10,a/b=0,因為a%b<1為假(0),a/b>1也為假(0),所以整個表達(dá)式的結(jié)果為假(0),最后輸出a,b,c的值為10200。58、以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當(dāng)字符串是回文時,函數(shù)返回字符串“yes!”,否則函數(shù)返回字符串“no!”,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adsda。請?zhí)羁铡?include<stdio,h>#include<string,h>char*huiwen(char*str){char*p1,*p2;inti,t=0;p1=str;p2=【】;for(i=0;i<=strlen(str)/2;i++)if(*pl++!=*p2--){t=1;breakif(【】)return("yes!");elsereturn("no!");}main(){charstr[50];printf("Iaput:");scanf("%s",str);printf("%s\n",【】);標(biāo)準(zhǔn)答案:p1+(stfien(str)-1)或str+(strlen(str)-1)t==0或!thuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+str知識點解析:回文字符串是指正向與反向拼寫都一樣。由huiwen函數(shù)可知,第三處應(yīng)該填寫調(diào)用函數(shù)huiwen(str)。在函數(shù)huiwen中,執(zhí)行P1=str;使p1指向字符串str中第一個字符的地址,則第一處應(yīng)該使p2指向字符串str中最后一個字符的地址,故填p1+(stden(str)-1)或str+(strlen(str)-1)。本題要求如果是回文,則返回"yes!",否則,返回"no!",故當(dāng)t=0時,說明字符串str為回文,所以第二處應(yīng)填t==0或!t。國家二級(C語言)筆試模擬試卷第2套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、十進(jìn)制數(shù)555的十六進(jìn)制數(shù)表示形式為______。A、220B、22AC、22BD、22C標(biāo)準(zhǔn)答案:4知識點解析:本題考查不同進(jìn)制數(shù)間的轉(zhuǎn)換,(555)10=(1000101011)2=(22B)16。2、計算機的存儲器完整的應(yīng)包括______。A、內(nèi)存儲器與外存儲器B、磁盤、磁帶與光盤C、RAM與ROMD、軟盤與硬盤標(biāo)準(zhǔn)答案:1知識點解析:存儲器包括內(nèi)部存儲器和外部存儲器,而選項B、D只能統(tǒng)稱為外部存儲器,選項C屬于內(nèi)部存儲器。3、在具有n(n>1)個結(jié)點的完全二叉樹中,結(jié)點i(2i>n)的左孩子結(jié)點是______。A、2iB、2i+1C、不存在D、2i-1標(biāo)準(zhǔn)答案:4知識點解析:完全二叉樹中葉子結(jié)點一定在最后一層或兩層。n個結(jié)點的完全二叉樹中,其層數(shù)最多為log2n+1。結(jié)點i與雙親的關(guān)系是i≠1時,i的雙親是trunc(i/2)。結(jié)點i與子女的關(guān)系是:若2i≤n,則i的左孩子是標(biāo)號2i的結(jié)點,若2i>n,則不存在左孩子;若2i+1≤n,則i的右孩子是標(biāo)號2i+1的結(jié)點,若2i+1>n,則該結(jié)點不存在右孩子。4、結(jié)構(gòu)化程序流程圖中一般包含3種基本結(jié)構(gòu)。下述結(jié)構(gòu)中,______不屬于其基本結(jié)構(gòu)。A、順序結(jié)構(gòu)B、嵌套結(jié)構(gòu)C、循環(huán)結(jié)構(gòu)D、條件結(jié)構(gòu)標(biāo)準(zhǔn)答案:2知識點解析:結(jié)構(gòu)化程序流程圖中包括順序結(jié)構(gòu)、條件結(jié)構(gòu)和循環(huán)結(jié)構(gòu)3種基本結(jié)構(gòu),而不包含嵌套結(jié)構(gòu)。5、計算機中,能夠用來與外存交換信息的是______。A、鍵盤B、RAMC、顯示器D、ROM標(biāo)準(zhǔn)答案:2知識點解析:RAM中存儲著當(dāng)前使用的程序、數(shù)據(jù)、中間結(jié)果和與外存交換的數(shù)據(jù),CPU根據(jù)需要可以直接讀/寫RAM中的內(nèi)容。6、堆排序是一種______排序。A、插入B、選擇C、交換D、歸并標(biāo)準(zhǔn)答案:2知識點解析:堆排序是一種選擇排序。選擇排序有直接選擇排序和堆排序兩種。7、瀑布模型適合于______。A、大型軟件系統(tǒng)開發(fā)B、中型軟件系統(tǒng)開發(fā)C、小型軟件系統(tǒng)開發(fā)D、大、中、小型軟件系統(tǒng)開發(fā)標(biāo)準(zhǔn)答案:4知識點解析:根據(jù)瀑布模型的特點(連續(xù)無反饋)是對于每一個階段來說,前一個階段工作的正確無誤是至關(guān)重要的。因此,瀑布模型不能很好地適應(yīng)那些需求不易確定和多變的軟件項目的開發(fā)。由于大項目在軟件開發(fā)的前期階段,人們很難詳細(xì)地了解系統(tǒng)的許多細(xì)節(jié),從而在項目進(jìn)行過程中常會出現(xiàn)需求變化。因此,瀑布模型適用于小系統(tǒng)開發(fā)項目,而不適用于大、中型軟件系統(tǒng)開發(fā)。8、在多媒體計算機系統(tǒng)中,不能存儲多媒體信息的是______。A、光盤B、磁盤C、磁帶D、光纜標(biāo)準(zhǔn)答案:8知識點解析:光纜是多媒體信息的傳輸通道,不能存儲多媒體信息。9、對一個關(guān)系投影操作以后,新關(guān)系的元組個數(shù)______原來關(guān)系的元組個數(shù)。A、小于B、小于或等于C、等于D、大于標(biāo)準(zhǔn)答案:2知識點解析:投影操作是從關(guān)系中選擇某些列,投影后消去了某些屬性,就可能出現(xiàn)重復(fù)元組,根據(jù)關(guān)系的性質(zhì),應(yīng)消去這些完全相同的元組。這樣使得新關(guān)系的元組數(shù)小于或等于原來的元組數(shù)。10、下列關(guān)于“數(shù)據(jù)庫系統(tǒng)(DBS)”的敘述中,正確的一條是______。A、DBS是指在計算機系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成B、DBS是幫助用戶建立、使用和管理數(shù)據(jù)庫的一種計算機軟件C、DBS是用戶建立的若干數(shù)據(jù)庫文件的集合D、DBS是一種新穎的關(guān)系數(shù)據(jù)庫管理系統(tǒng)標(biāo)準(zhǔn)答案:1知識點解析:數(shù)據(jù)庫系統(tǒng)DBS是指在計算機系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成。數(shù)據(jù)庫系統(tǒng)是一種帶有數(shù)據(jù)庫的綜合系統(tǒng),它包括硬件、軟件(如操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、編譯系統(tǒng)及應(yīng)用開發(fā)工具軟件等)、數(shù)據(jù)庫以及開發(fā)者和使用者。二、選擇題(1分)(本題共10題,每題1.0分,共10分。)11、以下運算符中優(yōu)先級最高的運算符是______。A、++B、?:C、!=D、&&標(biāo)準(zhǔn)答案:1知識點解析:四個運算符的優(yōu)先級由高到低依次是:++,&&,?:,!=。12、下列4組選項中,均不是C語言關(guān)鍵字的選項是______。A、definesumtypeB、getccharprintfC、includescanfcaseD、whilegopow標(biāo)準(zhǔn)答案:1知識點解析:本題各選項中的關(guān)鍵字只有三個:char,case,while。13、已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=142;則以下不符合c語言語法的表達(dá)式是______。A、x%(-3)B、w+=-2C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)標(biāo)準(zhǔn)答案:1知識點解析:求余運算符“%”為雙目運算符,要求兩個操作數(shù)都是整型。14、表達(dá)式18/4*sqrt(4.0)/8值的數(shù)據(jù)類型為______。A、intB、floatC、doubleD、不確定標(biāo)準(zhǔn)答案:4知識點解析:根據(jù)數(shù)據(jù)類型轉(zhuǎn)換時的就長轉(zhuǎn)換規(guī)則,可以得到最后的結(jié)果應(yīng)是實型。15、設(shè)a=12,a定義為整型變量。表達(dá)式a+=a-=a*=a的值為______。A、12B、144C、0D、132標(biāo)準(zhǔn)答案:4知識點解析:表達(dá)式a+=a-=a*=a的運算方向是自右向左,即先計算a*=a,a值為a*a=144,再計算a-=a,a值為a-a=0,再計算計a+=a,故表達(dá)式和a的值都為a+a=0。16、在C語言中,合法的字符常量是______。A、’\081B、’\x43’C、’ab’D、\0標(biāo)準(zhǔn)答案:2知識點解析:選項A錯在表示轉(zhuǎn)義字符的三位八進(jìn)制數(shù)中不能出現(xiàn)8,選項C錯在字符串要用雙引號括起,選項D錯在單個字符應(yīng)用單引號括起。選項B表示用兩位16進(jìn)制數(shù)代表轉(zhuǎn)義字符。17、以下程序片段的輸出結(jié)果是______。charstr[]="abc\n\012\\\"";printf("%d",strlen(str));A、4B、5C、6D、7標(biāo)準(zhǔn)答案:8知識點解析:abc后的四個字符都是由反斜線引出的轉(zhuǎn)義字符,\n是換行符,\012也是換行符,\\表示反斜線本身,\"表示雙引號,因此,一共是7個字符。18、假定有以下變量定義,則能使值為3的表達(dá)式是______。intk=7,x=12;A、x%=(k%=5)B、x%=(k-k%5)C、x%=k-k%5D、(x%=k)-(k%=5)標(biāo)準(zhǔn)答案:8知識點解析:選項A,(k%=5)=2,(x%=2)=0;選項B,(k-k%5)=7-2=5,(x%=5)=2:選項C,(k%5)=2,k-2=7-2=5,(x%5)=2;選項D,(x%=7)=5,(k%=5)=2,5-2=3。19、下面程序運行的結(jié)果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}A、x=4B、x=0C、x=2D、x=3標(biāo)準(zhǔn)答案:4知識點解析:表達(dá)式“x+=-z---y”等價于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。20、下面語句中不能定義一個數(shù)組,元素值依次分別為1,1,1,0,0的是______。A、staticinta[5]={1,1,1,0,0};B、staticinta[5]={1,1,1};C、staticinta[]={1,1,1,0,0};D、staticinta[5]={1*2,0*3};標(biāo)準(zhǔn)答案:8知識點解析:不可能用表達(dá)式的方式來給數(shù)組元素一一賦值。三、選擇題(2分)(本題共30題,每題1.0分,共30分。)21、設(shè)a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達(dá)式(m=a>b)&&(n=c>d)運算后,n的值為______。A、0B、1C、2D、3標(biāo)準(zhǔn)答案:1知識點解析:C語言中比較表達(dá)式的運算結(jié)果為0或1。0代表不成立,1表示成立。22、以下程序的輸出結(jié)果是______。main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}A、1234B、123C、12D、1標(biāo)準(zhǔn)答案:2知識點解析:while的執(zhí)行過程是:先計算條件表達(dá)式的值,若成立則執(zhí)行循環(huán)體,重復(fù)上述過程,直到條件表達(dá)式的值為“假”(值為零)時,退出循環(huán),并轉(zhuǎn)下—語句去執(zhí)行。本題在輸出num的值為3之后,再判斷while的循環(huán)條件3<=2,不成立,所以不再輸出num的值,故本題的答案選B。23、下面的關(guān)鍵字中,不能夠從循環(huán)體中跳到循環(huán)體外的是______。A、gotoB、breakC、returnD、continue標(biāo)準(zhǔn)答案:2知識點解析:在C語言中,可以用break語句和continue語句跳出本層循環(huán)和結(jié)束本次循環(huán)。goto語句可跳出多層循環(huán),如果在函數(shù)的循環(huán)體內(nèi)使用return語句,就會直接結(jié)束循環(huán)返回函數(shù)值。24、以下各選項企圖說明一種新的類型名,其中正確的是______。A、typedefv1int;B、typedefv2=int;C、typedefintv3;D、typedefv4:int標(biāo)準(zhǔn)答案:4知識點解析:C語言中可以使用typedef來重新定義已有的數(shù)據(jù)類型,相當(dāng)于為數(shù)據(jù)類型取個別名。25、為了避免嵌套的if-else的二義性,C語言規(guī)定:else與______配對。A、縮排位置相同的ifB、其之前最近的ifC、其之后最近的ifD、同一行上的if標(biāo)準(zhǔn)答案:2知識點解析:在if語句中又包含—個或多個if語句稱為if語句的嵌套。應(yīng)當(dāng)注意if與else的配對關(guān)系,在C語言中,從最內(nèi)層開始,else總是與它上面最近的(未曾配對的)if配對。26、在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是______。A、地址傳遞B、單向值傳遞C、由實參傳紿形,再由形參傳回實參D、傳遞方式由用戶指定標(biāo)準(zhǔn)答案:2知識點解析:C語言函數(shù)中的參數(shù)傳遞方式有傳值與傳址兩種方式,傳值方式是指將實參的值復(fù)制一份傳遞給形參,而傳址方式是指將實參的變量地址傳遞給形參,也就是實參的引用。27、以下函數(shù)值的類型是______。fun(floatx){floaty;y=3*x-4;returny;}A、intB、不確定C、voidD、float標(biāo)準(zhǔn)答案:1知識點解析:C語言中如果函數(shù)前不加任何數(shù)據(jù)類型時,默認(rèn)函數(shù)的類型為整型,函數(shù)的類型就是函數(shù)返回值的類型。28、以下選項中,非法的字符常量是______。A、’\t’B、’\17’C、\nD、’\xaa’標(biāo)準(zhǔn)答案:4知識點解析:C語言中字符常量是以單引號括起來的單個字符,或為以“\”與三位八進(jìn)制數(shù)值或兩位十六進(jìn)制數(shù)值代替單個字符。29、以下程序的輸出結(jié)果是______。#include<stdio.h>main(){inta=200;#definea100printf("%dd",a);#undefaprintf("%d",a);}A、200100B、100100C、100200D、200200標(biāo)準(zhǔn)答案:4知識點解析:#define宏名的有效范圍為定義命令之后到本源文件結(jié)束,可以在程序中使用#undef命令終止宏定義的作用域。本題由于#undef的作用,使a的作用范圍在#definea100到#undefa之間,故答案為C。30、若有說明inti,j=2,*p=&i;,則能完成i=j賦值功能的語句是______。A、i=*p;B、*p=*&j;C、i=&j;D、i=**p;標(biāo)準(zhǔn)答案:2知識點解析:指針是一種用來存放變量地址的特殊變量。本題中指針變量p用于存放整型變量i的地址,改變*p的值即為改變i的值。又因為“&”和“*”兩個運算符的優(yōu)先級別相同,按自右而左的方向結(jié)合,所以*&j先進(jìn)行&j運算,得j的地址,再進(jìn)行*迄算,取所得地址里面的值,故*&j與j等價。31、假定int類型變量占用兩個字節(jié),若有定義:intx[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是______。A、3B、6C、10D、20標(biāo)準(zhǔn)答案:8知識點解析:當(dāng)數(shù)組定義后,系統(tǒng)就為其分配內(nèi)存空間,而不論其中有沒有內(nèi)容。因此,本題中數(shù)組x[10]不論是否為其元素初始化,它所分配的存儲空間仍為2*10=20個字節(jié)。32、執(zhí)行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},(4,5,6}};intm,*p;p=&a[0][0];m=p[4];A、4B、5C、3D、不確定標(biāo)準(zhǔn)答案:2知識點解析:程序中定義了一個指向整型變量的指針變量,并對其賦值為二維整型數(shù)組a的首元素的地址。P[4]等價于*(p+4),即二維數(shù)組a中第四個元素的值,而a是一個2*3的二維數(shù)組,其第四個元素為a[1][1],即5。33、以下程序的輸出結(jié)果是______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;printf("%d%d%d",a[2],a[5],a[8]);}A、258B、741C、852D、369標(biāo)準(zhǔn)答案:4知識點解析:在本題運行時主要注意的是當(dāng)i=9時,a[i]=10-9=1;i=8時,a[i]=10-8=2;i=7時,a[i]=10-7=3;……依此類推,直到i=0時,a[i]=10-0=10:此時,i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出a[2],a[5],a[8]分x偽8,5,2。34、下面程序的輸出結(jié)果為______。#include<string.h>main(){charp1[7]="abc",p2[]="ABC",str[50]="xyz";strcpy(str,strcat(p1,p2));printf("%s",str);}A、xyzabcABCB、abcABCC、xyzabcD、xyzABC標(biāo)準(zhǔn)答案:2知識點解析:strcpy(str1,s1):作用是將字符串s1拷貝到字符數(shù)組str1中去。strcat(字符數(shù)組1,字符數(shù)組2):把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中,函數(shù)調(diào)用后返回字符數(shù)組1的地址。本題定義了三個字符數(shù)組p1,p2,str,strcat(p1,p2)函數(shù)的作用是將字符串?dāng)?shù)組p2接到字符串p1的后面,結(jié)果放在字符數(shù)組p1,再通過strcpy()函數(shù)將該字符串拷貝到str數(shù)組中,原str數(shù)組中的字符串xyz被覆蓋,因此打印輸出字符串str即可得到abcABC。35、以下數(shù)組定義中不正確的是______。A、inta[2][3];B、intb[][3]={0,1,2};C、intc[100][100]={0};D、intd[3][]={{1,2},{1,2,3},{1,2,3,4}};標(biāo)準(zhǔn)答案:8知識點解析:一維數(shù)組的定義方式為:類型說明符數(shù)組名[常量表達(dá)式];選項A符合此定義形式,正確;C語言中多維數(shù)組賦初值時可以部分賦值,也可以不指定除第一維以外的其他維的大小,故選項C正確;另外,如果對全部數(shù)組元素都賦初值,則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省,所以選項B正確,而選項D是錯誤的。36、以下程序的輸出結(jié)果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}A、650B、1470C、5430D、輸出值不定標(biāo)準(zhǔn)答案:1知識點解析:對未給出初始值的整數(shù)數(shù)組元素,被默認(rèn)初始化為零。37、在說明語句int*f();中,標(biāo)識符f代表的是______。A、一個用于指向整型數(shù)據(jù)的指針變量B、—個用于指向—維數(shù)組的行指針C、—個用于指向函數(shù)的指針變量D、一個返回值為指針型的函數(shù)名標(biāo)準(zhǔn)答案:8知識點解析:帶回指針值的函數(shù),其—般定義形式為:類型標(biāo)識符*函數(shù)名(參數(shù)表);例如,int*f(x,y);其中,f是函數(shù)名,調(diào)用它以后能得到—個指向整型數(shù)據(jù)的指針(地址),x,y是函數(shù)f的形參。在f的兩側(cè)分別為*運算符和()預(yù)算符,而()優(yōu)先級高于*,因此f先與()結(jié)合,顯然是函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。前面的int表示返回的指針指向整型變量。38、以下程序的輸出結(jié)果是______。main(){charst[20]="hello\0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}A、99B、520C、1320D、2020標(biāo)準(zhǔn)答案:2知識點解析:C語言中字符串是以’\0’字符結(jié)束的,且strlen()函數(shù)計算的是’\0’字符前的所有字符的個數(shù)。本題中strlen(st)應(yīng)為5。數(shù)組定義以后系統(tǒng)就為其分配相應(yīng)大小的內(nèi)存空間,而不論其中有沒有內(nèi)容。sizeof()函數(shù)是計算變量或數(shù)組的所分配到的內(nèi)存空間的大小。所以本題的sizeof(st)為20。39、以下程序運行后的輸出結(jié)果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}A、699B、669C、61515D、6615標(biāo)準(zhǔn)答案:4知識點解析:靜態(tài)局部變量在編譯時賦初值,即只賦初值一次,在程序運行時它已有初值。以后每次調(diào)用時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值,而對自動變量賦初值,不是在編譯時進(jìn)行的,而在函數(shù)調(diào)用時進(jìn)行,每調(diào)用一次函數(shù)重新給一次初值,相當(dāng)于執(zhí)行一次賦值語句。本題在程序開頭定義了全局變量d并賦初值1,在被調(diào)函數(shù)fun()中,定義了靜態(tài)局部變量d,初值為5。在第一次調(diào)用函數(shù)fun時,d初值為5,p由主函數(shù)傳遞過來的值為1,則d=d+p=5+1=6,由于d是靜態(tài)局部變量,在函數(shù)調(diào)用結(jié)束后,它仍保留d=6。再次調(diào)用fun函數(shù),d的初值為6,而由主函數(shù)傳遞的p的值為9,則此時d=d+p=6+9=15,最后打印輸出d的值并返回主函數(shù)。40、以下選項中,不能確定賦值的是______。A、chars1[10];s1="chest";B、chars2[]={’C’,’t’,’e’,’s’,’t’};C、chars3[20]="Chest";D、char*s4="Ctest\n"標(biāo)準(zhǔn)答案:1知識點解析:C語言中不能將字符串常量直接賦給數(shù)組。但在賦初值時可以。41、以下程序輸出正確的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}A、56B、25C、34D、程序錯誤標(biāo)準(zhǔn)答案:1知識點解析:本題main函數(shù)中定義了指針p和二維數(shù)組a,通過函數(shù)amovep將數(shù)組的值存入指針p所指向的存儲單元中,a的各元素分別為:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通過mailoc()函數(shù)給指針分配內(nèi)存空間,free()函數(shù)用于釋放指針變量所用內(nèi)存空間。在主函數(shù)中通過amovep(p,a,3)調(diào)用函數(shù)amovep,使得實參p與形參p,實參數(shù)組a與形參中指向數(shù)組的指針變量共用同一存儲空間。最后輸出p[2],p[5]為56。42、下面程序的輸出結(jié)果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}A、121,0,4B、2,2,2C、0,2,4D、0,2,2標(biāo)準(zhǔn)答案:2知識點解析:sizeof函數(shù)是取變量所占的存儲空間的字節(jié)數(shù),標(biāo)識a代表常量121;constb=12;,其中數(shù)據(jù)類型可以缺省,默認(rèn)為整型;enumc{a1,a2};定義了—個枚舉類型enumc,a1,a2為枚舉元素,在C編譯時,對枚舉元素按常量處理,它們的值按定義順序依次為0,1。因此它們的字節(jié)數(shù)均為2,2,2。43、以下程序的輸出結(jié)果是______。structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);}A、12B、23C、14D、32標(biāo)準(zhǔn)答案:8知識點解析:本題中是一個含有兩個結(jié)點的循環(huán)鏈表。C語言中結(jié)構(gòu)體的定義為:struct結(jié)構(gòu)題類型名{成員項表;};44、變量a所占的內(nèi)存字節(jié)數(shù)是______。unionU{charst[4];inti;long1;};structA{intc;unionUu;}a;A、4B、5C、6D、8標(biāo)準(zhǔn)答案:4知識點解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占內(nèi)存長度之和,而共用體變量所占的內(nèi)存長度等于最長的成員的長度。本題結(jié)構(gòu)體變量a中成員c為整型占2個字節(jié),共用體變量u最大長度為4個字節(jié),故選C。45、以下程序的結(jié)果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5,b=7;fun();printf("%d%d\n",a,b);}A、100200B、57C、200100D、75標(biāo)準(zhǔn)答案:2知識點解析:全程變量是可以在于函數(shù)中對其值作改變,且它也可作為函數(shù)間的值傳遞。但當(dāng)函數(shù)或子函數(shù)中定義了與全程變量名稱相同的局部變量,則全程變量將被屏蔽。46、以下程序的輸出結(jié)果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}A、19B、17C、15D、12標(biāo)準(zhǔn)答案:8知識點解析:C語言的宏定義包括不帶參數(shù)的宏定義與帶參數(shù)的宏定義。本題為帶參數(shù)的宏定義,其形式為:#define宏名(形參表)字符串本題的M(a+,b+c,c+a)被字符串a(chǎn)+b*b+c+c+a代替。47、若有以下說明和語句:structst{intn;char*ch;};strucesta[3]={5,"abc",7,"def",9,"ghk"},*p=a;則值為6的表達(dá)式是______。A、p++->nB、p->n++C、(*p).n++D、++P->n標(biāo)準(zhǔn)答案:8知識點解析:根據(jù)結(jié)構(gòu)變量的存儲特點,p+1意味著增加地址值為結(jié)構(gòu)體數(shù)組a的一個元素所占的字節(jié)數(shù),即p++使p由a[0]指向a[1]起始地址。本題++p->n得到p指向的結(jié)構(gòu)伸變量中成員n的值使之加1。因為p指向數(shù)組a起始地址,p->n的值為5,再執(zhí)行自加1運行,結(jié)果為6。48、整型變量X和Y的值相等,且為非0值,則以下選項中結(jié)果為0的表達(dá)式是______。A、X||YB、X|YC、X&YD、XY標(biāo)準(zhǔn)答案:8知識點解析:“||”為或運算符,當(dāng)其左右表達(dá)式中只要一個為非零則整個表達(dá)式的值1。|是按位或,&是按位與,^是按位異或,這三位運算符是按值的二進(jìn)制位來比較的。49、C語言中,組成數(shù)據(jù)文件的成分是______。A、記錄B、數(shù)據(jù)行C、數(shù)據(jù)塊D、字符(字節(jié))序列標(biāo)準(zhǔn)答案:8知識點解析:C語言中的文件是流式文件。流式文件是一種無結(jié)構(gòu)文件,即整個文件是一串字符流或二進(jìn)制流。文件的存取以字符或字節(jié)為單位。50、下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}A、hello,B、newworldhelloC、newworldD、hello,rld標(biāo)準(zhǔn)答案:1知識點解析:C語言中文件有文本文件與二進(jìn)制文件,對文件的使用前必須先打開,打開方式有只讀、寫入、讀寫等方式。四、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)51、在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種:前序遍歷、【】遍歷和后序遍歷。標(biāo)準(zhǔn)答案:中序知識點解析:在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷。前序遍歷是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹:并且遍歷左、右子樹時,仍然先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。后序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子構(gòu)這三者中,首先遍歷右子樹,然后訪問根結(jié)點,最后遍歷左子樹;并且遍歷左、右子樹時,仍然先遍歷右子樹,然后訪問根結(jié)點,最后遍歷左子樹。52、結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、【】和限制使用goto語句。標(biāo)準(zhǔn)答案:模塊化知識點解析:結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、模塊化和限制使用goto語句。自頂向下:程序設(shè)計時,應(yīng)先考慮總體,后考慮細(xì)節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)。不要一開始就過多追求眾多的細(xì)節(jié),先從最上層總目標(biāo)開始設(shè)計,逐步使問題具體化。逐步求精:對復(fù)雜問題,應(yīng)設(shè)計—些子目標(biāo)作過度,逐步細(xì)化。模塊化:—個復(fù)雜問題,肯定是由若干稍簡單的問題構(gòu)成。模塊化是把程序要解決的總目標(biāo)分解為分目標(biāo),再進(jìn)—步分解為具體的小目標(biāo),把每個小目標(biāo)稱為—個模塊。限制使用goto語句。53、軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實現(xiàn)。標(biāo)準(zhǔn)答案:測試實例知識點解析:進(jìn)行軟件測試時,應(yīng)精心設(shè)計測試實例和選擇測試數(shù)據(jù),以對系統(tǒng)進(jìn)行全面測試。54、數(shù)據(jù)庫系統(tǒng)的三級模式分別為【】模式、內(nèi)部級模式與外部級模式。標(biāo)準(zhǔn)答案:概念或概念級知識點解析:數(shù)據(jù)庫系統(tǒng)在其內(nèi)部具有三級模式及二級映射,三級模式分別是概念級模式、內(nèi)部級模式和外部級模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶(應(yīng)用)公共數(shù)據(jù)視圖。內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,如數(shù)據(jù)存儲的文件結(jié)構(gòu)、索引、集簇及hash等存取方式與存取路徑,內(nèi)模式的物理性主要體現(xiàn)在操作系統(tǒng)及文件級上,它還未深入設(shè)備級上(如磁盤及磁盤操作)。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式,它由概念模式推導(dǎo)而出。55、數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、【】和處理過程。標(biāo)準(zhǔn)答案:數(shù)據(jù)存儲知識點解析:數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項,是數(shù)據(jù)的最小單位;數(shù)據(jù)結(jié)構(gòu),是若干數(shù)據(jù)項有意義的集合:數(shù)據(jù)流,可以是數(shù)據(jù)項,也可以是數(shù)據(jù)結(jié)構(gòu),表示某—處理過程的輸入或輸出;數(shù)據(jù)存儲,處理過程中存取的數(shù)據(jù),常常是手工憑證、手工文檔或計算機文件;處理過程。五、填空題(本題共14題,每題1.0分,共14分。)56、定義inta=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為【】。標(biāo)準(zhǔn)答案:25知識點解析:#NAME?57、函數(shù)count(head)統(tǒng)計鏈表的結(jié)點個數(shù),head為表頭指針,閱讀程序,要求將整個if語句改成while循環(huán)控制結(jié)構(gòu),其形式為【】。#include<stdio.h>intcount(NODE*head){intn=0;if(head!=NULL)do{n++;head=head->next;}while(head!=NULL);returnn;}標(biāo)準(zhǔn)答案:while(p!=NULL){n++;head=head→next;}知識點解析:do…while循環(huán)轉(zhuǎn)化為while循環(huán),循環(huán)體執(zhí)行的內(nèi)容應(yīng)該是一致的,不同的是do…while結(jié)構(gòu)是先執(zhí)行一次循環(huán)體,然后再判斷循環(huán)條件是否滿足,而while循環(huán)則是先判斷循環(huán)條件是否滿足,滿足則執(zhí)行循環(huán)體。所以do…while循環(huán)結(jié)構(gòu)若想轉(zhuǎn)換為while循環(huán)結(jié)構(gòu),必須在do…while循環(huán)之前先對循環(huán)條件進(jìn)行一個判斷,即此題中的if(head!=NULL)。注意:3種循環(huán)結(jié)構(gòu)的比較。58、語句printf("%f\n",13.0*(1/5));的輸出結(jié)果為【】。標(biāo)準(zhǔn)答案:0知識點解析:/表示整除,1/5為0,0乘以任何數(shù)都得零,但是與浮點型相乘,要轉(zhuǎn)化為浮點型,所以結(jié)果為0.000000。注意:在一個運算符的兩邊如果一個是字符型,一個是整型,則把字符型轉(zhuǎn)換為整型之后再進(jìn)行運算。59、下列程序的運行結(jié)果是【】。#include<stdio.h>voidmain(){ints=0,k;for(k=7;k>4;k--){switch(k){case1:case4:case7:s++;break;case2:case3:case6:break;case0:case5:s+=2;break;}}printf("s=%d",s);}標(biāo)準(zhǔn)答案:s=3知識點解析:當(dāng)k=7時,執(zhí)行case7,s++,s的值為1。當(dāng)k=6時,直接break出switch結(jié)構(gòu);當(dāng)k=5時,執(zhí)行case5,s+=2,s的值為3;當(dāng)k=4時由于不滿足for循環(huán)的條件,所以結(jié)束循環(huán),所以輸出的s的值為3。注意:循環(huán)語句和條件的嵌套使用。60、以下程序的功能是根據(jù)輸入的“y”(“Y”)與“n”(“N”),在屏幕上分別顯示出“ThisisYES.”與“ThisNO.”。空白處需要填入的內(nèi)容是#include<stdio.h>voidYesNo(charch){switch(ch){case’y’:case’Y’:printf("\nThisisYES,\n");case’n’:case’N’:printf("\nThisisNO.\n");}}main(){charch;printf("\nEnterachar’y’,’Y’or’n’,’N’:");ch=【】;printf("ch;%c",ch);YesNo(ch);}標(biāo)準(zhǔn)答案:getchar知識點解析:題中要求根據(jù)輸入的字符調(diào)用函數(shù)YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數(shù)getchar。函數(shù)YesNo用來判斷一個字符是y(Y)還是n(N),主要用了一個switch多分支結(jié)構(gòu)來比較輸入字符與字符’y’,’Y’、,’n’,’N’是否相等來實現(xiàn)的。注意:用于字符串處理的函數(shù)。61、以下程序調(diào)用函數(shù)swap_p將指針s和t所指單元(a和b)中的內(nèi)容交換,請?zhí)羁?。main(){inta=10,b=20,*s,*t;s=&a;t=&b;swap_p(【】);printf("%d%d,a,b");}swap_p(int**ss,int**tt){intterm;term=**ss;**ss=**tt;**tt=term;}標(biāo)準(zhǔn)答案:&s,&t知識點解析:指針做函數(shù)參數(shù)時,

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論