




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級(C語言)筆試模擬試卷18(共9套)(共549題)國家二級(C語言)筆試模擬試卷第1套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、使用白盒測試法時,確定測試數(shù)據(jù)應(yīng)該根據(jù)()和指定的覆蓋標準。A、程序的內(nèi)部邏輯B、程序的復(fù)雜結(jié)構(gòu)C、使用說明書D、程序的功能標準答案:A知識點解析:白盒測試是把測試對象看作是一個打開的盒子,允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及相關(guān)信息來設(shè)計或選擇測試用例,對程序所有的邏輯路徑進行測試。所以,白盒測試的對象基本上是源程序,以程序的內(nèi)部邏輯和指定的覆蓋標準測試數(shù)據(jù)。2、在下列關(guān)系運算中,不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是()。A、并B、交C、投影D、除標準答案:B知識點解析:關(guān)系R與S經(jīng)交運算后所得到的關(guān)系是由那些既在R內(nèi)又在s內(nèi)的有序組所組成,記為R∩S,交運算不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)。3、下列關(guān)于隊列的敘述中正確的是A、在隊列中只能插入數(shù)據(jù)B、在隊列中只能刪除數(shù)據(jù)C、隊列是先進先出的線性表D、隊列是先進后出的線性表標準答案:C知識點解析:隊列是一種操作受限的線性表。它只允許在線性表的一端進行插入操作,另一端進行刪除操作。其中,允許插入的一端稱為隊尾(rear),允許刪除的一端稱為隊首(front)。隊列具有先進先出的特點,它是按“先進先出”的原則組織數(shù)據(jù)的。4、下列關(guān)于隊列的敘述中正確的是A、在隊列中只能插入數(shù)據(jù)B、在隊列中只能刪除數(shù)據(jù)C、隊列是先進先出的線性表D、隊列是先進后出的線性表標準答案:C知識點解析:隊列是一種操作受限的線性表。它只允許在線性表的一端進行插入操作,另一端進行刪除操作。其中,允許插入的一端稱為隊尾(rear),允許刪除的一端稱為隊首(front)。隊列具有先進先出的特點,它是按"先進先出"的原則組織數(shù)據(jù)的。5、數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)的()。A、存儲問題B、共享問題C、安全問題D、保護問題標準答案:2知識點解析:數(shù)據(jù)庫產(chǎn)生的背景就是計算機的應(yīng)用范圍越來越廣泛,數(shù)據(jù)量急劇增加,對數(shù)據(jù)共享的要求越來越高。數(shù)據(jù)庫技術(shù)的根本目標就是解決數(shù)據(jù)的共享問題。6、下面不屬于軟件設(shè)計原則的是______。A、抽象B、模塊化C、自底向上D、信息隱蔽標準答案:4知識點解析:在軟件設(shè)計過程中,必須遵循軟件工程的基本原則:這些原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可靠性。7、在C語言中,以下一組運算符中,優(yōu)先級最高的運算符是______。A、<=B、=C、%D、&&標準答案:4知識點解析:暫無解析8、若有定義“char,*p2,*p3,*p4,ch;”,則不能正確賦值的程序語句為()A、p1=&ch;scanf("%c",p1);B、p2=(char*)malloc(1);scanf("%c",p2);C、p3=getchar();D、p4=&ch;*p4=getchar();標準答案:4知識點解析:暫無解析9、一棵二叉樹中共有70個葉子結(jié)點與80個度為1的結(jié)點,則該二叉樹中的總結(jié)點數(shù)為A、219B、221C、229D、231標準答案:A知識點解析:本題考查數(shù)據(jù)結(jié)構(gòu)中二叉樹的性質(zhì)。二叉樹滿足如下一條性質(zhì),即:對任意一棵二叉樹,若終端結(jié)點(即葉子結(jié)點)數(shù)為n0,而其度數(shù)為2的結(jié)點數(shù)為n2,則n0=n2+1。根據(jù)這條性質(zhì)可知,若二叉樹中有70個葉子結(jié)點,則其度為2的結(jié)點數(shù)為70-1,即69個。二叉樹的總結(jié)點數(shù)是度為2、度為1和葉子結(jié)點的總和,因此,題目中的二叉樹總結(jié)點數(shù)為69+80+70,即219。因此,本題的正確答案是選項A。10、在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是______。A、人工管理階段B、文件系統(tǒng)階段C、數(shù)據(jù)庫系統(tǒng)階段D、三個階段相同標準答案:C知識點解析:數(shù)據(jù)庫管理發(fā)展至今已經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。人工管理階段的特點:數(shù)據(jù)不保存、數(shù)據(jù)不獨立、數(shù)據(jù)不能共享、數(shù)據(jù)無結(jié)構(gòu),沒有專門的數(shù)據(jù)管理軟件。文件系統(tǒng)階段的特點:數(shù)據(jù)可以長期保存,有專門的數(shù)據(jù)管理軟件——文件系統(tǒng)。但是數(shù)據(jù)獨立性低,共享性差、冗余度大,數(shù)據(jù)記錄內(nèi)有結(jié)構(gòu),整體無結(jié)構(gòu)。數(shù)據(jù)庫系統(tǒng)階段的特點:數(shù)據(jù)結(jié)構(gòu)化,數(shù)據(jù)獨立性高,數(shù)據(jù)共享性高,冗余度小,易于擴充,數(shù)據(jù)庫管理系統(tǒng)提供統(tǒng)一的數(shù)控制功能,包括數(shù)據(jù)安全性、完整性、并發(fā)控制和數(shù)據(jù)恢復(fù)功能。二、選擇題(1分)(本題共11題,每題1.0分,共11分。)11、若有下列定義(設(shè)int類型變量占2個字節(jié)):inti=8,j=9;則下列語句:printf("i=%u,j=%x\n".i,j);輸出的結(jié)果是()。A、i=8,j=9B、8.9C、89D、i=8,i=8標準答案:A知識點解析:本題考查函數(shù)printf()的格式。“%x”表示以十六進制輸出整型數(shù)據(jù);“%u”表示以十進制無符號型輸出整型數(shù)據(jù)。printf函數(shù)中格式說明符之前插入的任何字符都原樣輸出。12、有下列程序:main(){inty=20;do{y--;}while(--y);printf("%d\n",y--);}當執(zhí)行程序時,輸出的結(jié)果是()。A、-1B、1C、4D、0標準答案:D知識點解析:本題考查do…while循環(huán)。當--y是0(即y是0)時結(jié)束循環(huán),輸出y--是先輸出y的值再將y的值減1。13、設(shè)a和b均為int型變量,且a:6、b=11、c=3,則能使值為3的表達式是()。A、b%(c%4)B、b%(c-a%5)C、b%a-a%5D、(b%a)-(a%4)標準答案:D知識點解析:本題首先判斷a>b,當a>b時結(jié)果等于a,否則等于“d>c?d:b”,因為a>b,所以直接輸出a的值,注:這里“a:d>c?d:b”是用來干擾考生的。14、______是構(gòu)成C語言程序的基本單位。A、函數(shù)B、過程C、子程序D、子例程標準答案:A知識點解析:C程序是由函數(shù)構(gòu)成的?!獋€C源程序至少包含—個main函數(shù),也可以包含—個main函數(shù)和若干個其他函數(shù),因此,函數(shù)是C程序的基本單位。15、對序線性表(23,29,34,55,60,70,78)用二分法查找值為60的元素時,需要比較次數(shù)為()。A、1B、2C、3D、4標準答案:C知識點解析:根據(jù)二分法查找法需要兩次:①首先將60與表中間的元素55進行比較,由于60大于55,所以在線性表的后半部分查找。②第二次比較的元素是后半部分的中間元素,將60與表中間的元素70進行比較,由于60小于70,所以在線性表的前半部分查找。③第三次比較的元素是前半部分的中間元素,即60,這時兩者相等。即查找成功。16、有以下計算公式:若程序前面已在命令行中包含math.h文件,不能夠正確計算上述公式的程序段是()。A、if(x>=0)y=sqrt(x);elsey=sqrt(-x);B、y=sqrt(x);if(x<0)y=sqrt(-x);C、if(x>=0)y=sqrt(x);if(x<0)=sqdrt(-x);D、y=sqrt(x>=0?x:-x);標準答案:2知識點解析:選項B一開始就調(diào)用了sqrt(x)而沒有判斷x的正負,所以是錯誤的。故應(yīng)該選B。17、下列屬于C語言語句的是______。A、printf("%d\n"a)B、#include<stdio.h>C、a=b;b=c;c=a;D、/*thisisaprogram*/標準答案:4知識點解析:在C語言中,—個完整的C語句必須在語句末尾出現(xiàn)分號,分號是C語句的必要組成部分。本題答案為C。18、C語言程序的基本單位是()A、函數(shù)B、過程C、字符D、語句標準答案:1知識點解析:暫無解析19、以下能正確表示x在-5到-1或5到1范圍(含5和1)內(nèi),值為“真”的表達式是()A、(x>=-5)||(x<=-1)&&(x<=5)&&(x>=1)B、!(x>=-5||x<=-1&&x<=5||x>=1)C、x<-5&&x>-1||x<1&&x>5D、(x<-5)||(x>-1&&x<1)||(x>5)標準答案:1知識點解析:暫無解析20、下列關(guān)于單目運算符++、--的敘述中正確的是A、它們的運算對象可以是任何變量和常量B、它們的運算對象可以是char型變量和int型變量,但不能是float型變量C、它們的運算對象可以是int型變量,但不能是double型變量和float型變量D、它們的運算對象可以是char型變量、int型變量和float型變量標準答案:8知識點解析:C語言中的++和——運算符,這兩種運算符是單目運算符,其運算對象可以是整型、字符型、float型和double型等基本數(shù)據(jù)類型。21、若有以下定義和語句:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a則值為3的表達式是_______。A、P+=2,*(p++)B、P+=2,*++pC、P+=3,*p++D、P+=2,++*p標準答案:1知識點解析:引用一個數(shù)組元素,可以用:(1)下標法,如a[i]形式;(2)指針法,如*(a+i)或*(p+i)。數(shù)組的下標從0開始,值為3的數(shù)組元素是a[2]。B、C的內(nèi)容為a[3],D將a[2]前自加,結(jié)果為4。三、選擇題(2分)(本題共20題,每題1.0分,共20分。)22、有以下程序#include<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i=n1j=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");}程序的運行結(jié)果是A、987654321B、4321098765C、5678901234D、987651234標準答案:C知識點解析:函數(shù)fun(int*s,intn1,intn2)的功能是對數(shù)組s中的元素進行首尾互相調(diào)換。所以在主函數(shù)中,當fun(a,0,3)執(zhí)行完后,數(shù)組a[12]={4,3,2,1,5.6,7,8,9,01;再執(zhí)行fun(a,4,9),數(shù)組a[12]={4,3,2,1,0,9,8,7,6,5};再執(zhí)行fun(a,0,9)后,數(shù)組a[12]={5,6,7,8,9,0,1,2,3,4}。23、下述程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta[5]={1,2,3,4,5};int*p=a,**q=&p;printf("%d,",*(p++));printf("%d",**q);}A、2,2B、1,1C、3,4D、1,2標準答案:D知識點解析:題干中,*(p++)就是數(shù)組元素a[0],輸出a[0],之后指針p的值加1,**q即是數(shù)組元素a[1]。24、下面for語句的循環(huán)次數(shù)為()。for(x=1,y=0;(y!=19)&&(x<6);x++);A、是無限循環(huán)B、循環(huán)次數(shù)不定C、最多執(zhí)行6次D、最多執(zhí)行5次標準答案:D知識點解析:本題考查for循環(huán)的使用。根據(jù)條件考慮x的取值變化,x從1取到5,可以循環(huán)5次,但并不知道y是如何變化的,有可能出現(xiàn)y=19提前跳出循環(huán)的情況,所以是最多執(zhí)行5次。25、fwrite函數(shù)的一般調(diào)用形式是A、fwrite(buffer,count,size,fp);B、fwrite(fp,size,count,buffer);C、fwrite(fp,count,size,buffer);D、fwrite(buffer,size,count,fp);標準答案:D知識點解析:fwrite的形式是fwrite(buffer,size,count,fp),buffer表示準備輸出的數(shù)據(jù)塊的起始地址,size表示每個數(shù)據(jù)塊的字節(jié)數(shù),count用來指定每寫一次或輸出的數(shù)據(jù)塊,fp為文件指針。26、已知i、j、k為int型變量,若要從鍵盤輸入2、3、4<CR>,使i、j、k的值分別為2、3、4,下列正確的輸入語句是()。A、scanf("%3d,%3d,%3d",&i,Aj,&k);B、scanf("%d,%d,%d",&i,&j,&k);C、scanf("%d%d%d",&i,&J,&k);D、scanf("i=%d,j=%d,k=%d",&i,&j,&k);標準答案:B知識點解析:scanf函數(shù)的調(diào)用形式是:scanf(格式字符串,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。若在格式符中插入了其他字符,則在輸入時要求按一一對應(yīng)的位置原樣輸入這些字符,其中的逗號也必須輸入。27、以下敘述中正確的是()。A、預(yù)處理命令行必須位于C源程序的起始位置B、在C語言中,預(yù)處理命令行都以“#”開頭C、每個C程序必須在開頭包含預(yù)處理命令行:#include<stdio.h>D、C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能標準答案:B知識點解析:暫無解析28、設(shè)有以下語句:typedefstreetS{intg;charh;}T;則下面敘述中正確的是()。A、可用S定義結(jié)構(gòu)體變量B、可以用T定義結(jié)構(gòu)體變量C、S是struct類型的變量D、T是structS類型的變量標準答案:2知識點解析:可以用typedef定義新的類型名來代替已有的類型名。T是所定義的新的類型名,它代表題中定義的一個結(jié)構(gòu)體類型,這樣就可以用T定義結(jié)構(gòu)體變量了。29、對以下說明語句的正確理解是()。inta[10]={6,7,8,9,10};A、將5個初值依次賦給a[1]至a[5]B、將5個初值依次賦給a[0]至a[4]C、將5個初值依次賦給a[6]至a[10]D、因為數(shù)組長度與初值的個數(shù)不相同,所以此語句不正確標準答案:2知識點解析:本題中,表達式將5個初值分別賦給a[0]至a[4],系統(tǒng)自動給后面的元素a[5]至a[9]賦0。30、有以下程序:#include<studio.h>#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}A、12B、15C、16D、20標準答案:1知識點解析:本題考核的知識點是宏與自增運算符的綜合運用.在程序中先用表達式將宏替換掉,則輸出語句中的表達式為(a++)*(b++),而a++的值為3,b++的值為4。因此最后的值為3*4=12。所以,4個選項中選項A符合題意。31、以下所列的各函數(shù)首部中,正確的是______。A、voidplay(var:Integer,varb:Integer)B、voidplay(inta,b)C、voidplay(inta,intb)D、Subplay(aasinteger,basinteger)標準答案:4知識點解析:暫無解析32、若有如下定義:ints[3][4];則下面表達式中能代表數(shù)組元素s[1][0]的值的是()A、*(s+1)B、s[1]C、s+1D、*(s[1])標準答案:8知識點解析:暫無解析33、交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列哪一個位運算符()A、~B、&C、^D、|標準答案:4知識點解析:暫無解析34、下面程序段的執(zhí)行結(jié)果是()。intx=10;for(;x;x--){if(x%3)continue;printf("%d",x);}A、875421B、963C、741D、852標準答案:2知識點解析:本題的for循環(huán)省略了第一個表達式,即for沒有任何初始化動作;第二個表達式x的意思是只要x非0,則循環(huán)繼續(xù);第三個表達式讓x在每次循環(huán)結(jié)束時減1。x初始為10,然后進入循環(huán)體,判斷x是否能被3整除,不能整除則執(zhí)行continue;語句進入下一次循環(huán),能整除則輸出x。故最終輸出的結(jié)果為從10遞減到1之中能被3整除的數(shù)9、6和3。所以正確答案是B。35、有以下程序main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k);}程序運行后的輸出結(jié)果是A、123B、234C、223D、233標準答案:8知識點解析:根據(jù)優(yōu)先級順序,先計算內(nèi)層括號的值。j自加1等于3,所以++j==3成立,表達式為1,由于1“|”任何數(shù)都為1,所以不用計算“||”后面的表達式,所以k=3,最后計算“&&”之前的表達式,i先進行判斷再自加1,所以i++==1成立,自加1后i=2。if語句的條件為“1”,所以輸出i、j、k的值分別是2,3,3。36、有以下程序main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序運行后輸出結(jié)果是A、8,7,8,7B、7,8,7,8C、8,7,7,8D、7,8;8,7標準答案:4知識點解析:程序中定義了兩個變量a和b,并分別賦初值為7和8,定義了三個指針變量p、q、r,并讓指針p指向變量a,讓q指向變量b,然后通過一個中間指針變量f,使指針變量p和q互換,互換后p指向q所指的內(nèi)容即b,q指向開始p所指向的內(nèi)容即a,因此最后輸出的*p,*q的值為8,7,a,b的值沒有改變?nèi)詾?,8。37、有如下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.Of\n",fun((int)fun(a+c,B),(a-C)))}程序運行后的輸出結(jié)果為_______。A、編譯出錯B、9C、21D、9標準答案:2知識點解析:本題中先執(zhí)行(int)fun(a+c,b)函數(shù)的調(diào)用,值為整型數(shù)值15;然后再執(zhí)行fun(15,(a-c))函數(shù)調(diào)用,值為單精度實型數(shù)值9.000000。輸出為%3.of,即有效數(shù)長度為3,沒有小數(shù)位數(shù),所以最后結(jié)果為9。38、設(shè)有以下語句chara=3,b=6,c;c=ab<<2;則c的二進制值是_______。A、11011B、10100C、11100D、11000標準答案:1知識點解析:“<<”是C語言中規(guī)定的左移運算符,^是異或運算符,所以,c的二進制值應(yīng)為00011011。39、下列函數(shù)值的類型是()。fun(doublex){floaty;y=3*x-4;returny;}A、intB、不確定C、voidD、float標準答案:1知識點解析:本題考查默認函數(shù)的函數(shù)值的類型。在函數(shù)調(diào)用時,盡管y的類型是float,x的類型是double,但是因為函數(shù)定義時省去類型說明,系統(tǒng)默認函數(shù)值的類型為int型,所以計算后的y的類型是int型。40、以下敘述中正確的是A、局部變量說明為static存儲數(shù),其生存期將得到延長B、全局變量說明為static存儲類,其作用域?qū)⒈粩U大C、任何存儲類的變量在未賦初值時,其值都是不確定的D、形參可以使用的存儲類說明符與局部變量完全相同標準答案:A知識點解析:全局變量說明為static存儲類,其生命周期將得到延長,但作用域不能被擴大;static存儲類變量在未賦初值時,是有默認值的,形參中的存儲類說明符與局部變量完全相同。41、已有定義:charc;,程序前面已在命令行中包含ctype.h文件。不能用于判斷c中的字符是否為大寫字母的表達式是A、isupper(c)B、’A’<=c<=’Z’C、’A’<=c&&c<=’Z’D、c<=(’z’-32)&&(’a’-32)<=c標準答案:B知識點解析:大寫字母從’A’~’Z’的ASCII碼是連續(xù)的,所以如果當一個字符大于等于’A’31小于等于’Z’時,那這個字符就一定是一個大寫字母,故選項C正確。C語言中的庫函數(shù)isupper()的作用也正是判斷一個字符是否為大寫字母的,故選項A正確。在ASCII碼中,小寫字母的編碼也是連續(xù)的,對應(yīng)的小寫字符比大寫字符的ASCII碼值大32,所以選項D經(jīng)過小寫字符-32后,換算成了對應(yīng)的大寫字母’z’和’A’,所得到結(jié)果和選項C是一致的,故也是正確的。選項B中,C語言的邏輯表達式不能直接連寫,而應(yīng)該寫成選項C那樣,故是錯誤的,應(yīng)該選擇B。四、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)42、按照“先進先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。標準答案:隊列知識點解析:隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進先出的原則組織數(shù)據(jù)的。43、在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機制稱為【】。標準答案:繼承知識點解析:繼承是類間的一種基本關(guān)系,是在某個類的層次關(guān)聯(lián)中不同的類共享屬性和操作的一種機制。在“is-a”的層次關(guān)聯(lián)中,一個父類可以有多個子類,這些子類都是父類的特側(cè),父類描述了這些子類的公共屬性和操作。一個子類可以繼承它的父類(或祖先類)中的屬性和操作。這些屬性和操作在子類中不必定義,子類中還可以定義它自己的屬性和操作。一個子類只有唯一的一個父類,這種繼承稱為單一繼承。一個子類也可以有多個父類,它可以從多個父類中繼承特性,這種繼承稱為多重繼承。例如,“水陸兩用交通工具”類既可繼承“陸上交通工具”類,又可繼承“水上交通工具”類的特性。44、對于長度為n的順序存儲的線性表,當隨機插入和刪除一個元素時,需平均移動元素的個數(shù)為【】。標準答案:n/2知識點解析:刪除一個元素,平均移動的元素個數(shù)為(n-1+n-2+-…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-l+n-2+…+1)/n=(n+1)/2;所以總體平均移動元素個數(shù)為n/2。45、按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。標準答案:線性結(jié)構(gòu)知識點解析:數(shù)據(jù)的邏輯結(jié)構(gòu),是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),常見的線性結(jié)構(gòu)有線性表、棧和隊列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。46、符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和【】。標準答案:順序結(jié)構(gòu)知識點解析:結(jié)構(gòu)化程序設(shè)計方法是程序設(shè)計的先進方法和工具。其中結(jié)構(gòu)化程序設(shè)計的三種基本控制構(gòu)是:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、順序結(jié)構(gòu)。五、填空題(本題共11題,每題1.0分,共11分。)47、以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當前文件位置指針的具體位置,從而確定文件長度,請?zhí)羁?。FILE*myf;longfl;myf=【】("test.t","rb");fseek(myf,(),SEEK_END)fl+ftell(myf);fclose(myf);printf("%ld\n",fl);標準答案:fopen知識點解析:C語言中的文件分為:ASCII文件與二進制文件。文件在使用前打開,使用后要關(guān)閉。打開文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen("文件名","使用文件方式");關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp),其中fp為文件指針。48、下列執(zhí)行后輸出的結(jié)果是【】。main(){intarr[10],i,k=0for(i=0;i<10;i++)atr[i]=ifor(i=1,i<4;i++)k+=arr[i]+i;printf("%d\n",k);}標準答案:12知識點解析:本題的第—個for循環(huán)用于始數(shù)組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。49、以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。#defineN2#defineMN+1#defineKM+1*M/2main(){inti;for(i=1;i<K;i++){...}...}標準答案:4知識點解析:本題考查宏定義。K=M+1*M/2=N+1+1*N+1/2=2+1+1*2+1/2=5,故for循環(huán)體執(zhí)行的次數(shù)是4。50、若按功能劃分,軟件測試的方法通常分為白盒測試方法和()測試方法。標準答案:黑盒知識點解析:軟件測試的方法和技術(shù)是多種多樣的,對于軟件測試方法和技術(shù),可以從不同角度加以分類。若從是否需要執(zhí)行被測試軟件的角度劃分,可分為靜態(tài)測試和動態(tài)測試,若從功能劃分,可以分為白盒測試和黑盒測試。51、有如下圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:structaa{intdata;【】}node;標準答案:structaa*lhead,*rchild;知識點解析:結(jié)構(gòu)體對鏈表的定義。52、下面程序的運行結(jié)果是:【】。fun(intt[],intn){inti,m;if(n==1)returnt[0];elseif(n>=2){m=fun(t,n-1);returnm;}}main(){inta[]={11,4,6,3,8,2,3,5,9,2};printf("%d\n",fun(a,10));}標準答案:11知識點解析:此題涉及函數(shù)的調(diào)用和if語句。程序先執(zhí)行第二個if語句,然后再執(zhí)行第一個if語句,最后用return返回數(shù)值。53、下面的語句要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁?。p=【】malloc(sizeof(double));標準答案:(double*)知識點解析:本題考查強制類型轉(zhuǎn)換。函數(shù)malloc的默認返回是void*,若要使指針指向double類型,必須進行類型轉(zhuǎn)換,類型轉(zhuǎn)換格式為:(數(shù)據(jù)類型*)。54、以下程序的輸出結(jié)果是【】。#include<stdio.h>#defineMAX(x,y)(x),(y)?(x):(y)main(){inta=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf("%d\n",t);}標準答案:7知識點解析:本題綜合考查帶參數(shù)的宏以及三目運算符的計算方法。三目運算符的一般形式是:<表達式1>?<表達式2>:<表達式3>?!?:”運算符的含義是:先求表達式1的值,如果為真,則求表達式2的值,并把它作為整個表達式的值;如果表達式1的值為假,則求表達式3的值,并把它作為整個表達式的值。注意,在本題中宏替換時可采用逐步求解,最終為7>6?7:6*10,即t=7>6?7:60,其值為t=7。55、以下程序的輸出結(jié)果是【】。#include<stdio.h>#deftneJFT(x)x*xmain(){inta,k=3;a=++JFT(k+1);printf("%d",a);}標準答案:9知識點解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實參k+1替換,其他字符不變,所以JFT(k+1)經(jīng)替換后為k+1,k+1,則a=++k+1*k+1。若k的值為3,則經(jīng)過運算為a=4+1*4+1=9。56、以下程序運行的結(jié)果是【】。#include<conio.h>#include<stdio.h>#defineM100voidfun(intm,int*a,int*n){inti,j=0;for(i=1;i<=m;i++)if(i%7==0‖i%11==0)a[j++]=i;*n=j;}main(){intaa[M],n,k;clrscr();fun(10,aa,&n);for(k=0;k<n;k++)if((k+1)%20==0)printf("\n");elseprintf("%4d",aa[k]);printf("\n");}標準答案:7知識點解析:解答本題的關(guān)鍵是要讀懂程序,要找出能被7或11整除的所有整數(shù),注意數(shù)學中的“或”和C語言中的“或”的區(qū)別,但在此處,if條件語句中用了“‖”運算符,若要找能同時被7和11整除的所有整數(shù)則在if的條件中應(yīng)使用“&&”運算符。當然,如果m的值輸入50,即表達式fun(10,aa,&n);為fun(50,aa,&n);時輸入結(jié)果為:711142122283335424449。57、以下程序運行后的輸出結(jié)果是【】。main(){chara[]="Language",b[]="Pragrame";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}標準答案:gae知識點解析:主函數(shù)中定義了字符數(shù)組a和b,其初值分別為Language和Programe,然后定義了兩個指針變量p1和p2,并讓它們指向a和b。通過分析可知下面的for循環(huán)中,每循環(huán)一次就將p1+k和p2+k所指向的字符進行比較,如果相等,輸出該字符,循環(huán)共執(zhí)行8次,顯然Language和Programe中只有字符gae相等,所以最后轄出為gae。國家二級(C語言)筆試模擬試卷第2套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、下列敘述中錯誤的是()。A、一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)B、數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率無關(guān)C、數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)D、數(shù)據(jù)的存儲結(jié)構(gòu)在計算機中所占的空間不一定是連續(xù)的標準答案:B知識點解析:數(shù)據(jù)的存儲結(jié)構(gòu)分順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu),一個數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)。順序結(jié)構(gòu)中數(shù)據(jù)元素所占的存儲空間是連續(xù)的,而鏈式存儲結(jié)構(gòu)中,數(shù)據(jù)元素通過指針就聯(lián)系在一起了,所以所占的存儲空間不一定是連續(xù)的。2、下列關(guān)于棧的描述中錯誤的是()。A、棧是先進先出的線性表B、棧只能順序存儲C、棧具有記憶作用D、對棧的插入刪除操作中,不需要改變棧底指針標準答案:B知識點解析:棧是線性表的一種,它的特點是先進后出,并且只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,因此具有記憶作用。棧可以采用順序存儲,也可以采用鏈式存儲。3、對長度為n的線性表進行順序查找,在最壞情況下需要比較的次數(shù)為()。A、125B、n/2C、nD、n+1標準答案:C知識點解析:對長度為n的線性表進行順序查找時,從表中的第一個元素開始,給定的值與表中逐個元素的關(guān)鍵字進行比較,直到兩者相符,查找完成。在最壞情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素中的所有元素進行比較,因此比較次數(shù)為n。4、下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。A、多態(tài)性B、繼承C、封裝性D、模塊化標準答案:D知識點解析:面向?qū)ο笤O(shè)計方法是使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。其特點包括分類性、多態(tài)性、封裝性、模塊獨立性、繼承和多態(tài)性等。模塊化是結(jié)構(gòu)化程序設(shè)計的特點。5、設(shè)計軟件結(jié)構(gòu)是軟件生命周期的()。A、軟件定義期B、軟件開發(fā)期C、軟件維護期D、以上3個都不是標準答案:B知識點解析:本題是對軟件設(shè)計結(jié)構(gòu)的考查。設(shè)計軟件結(jié)構(gòu)是軟件概要設(shè)計階段進行的,而概要設(shè)計屬于軟件開發(fā)期。6、下列工具中為需求分析常用工具的是()。A、PADB、BFDC、N-SD、DFD標準答案:D知識點解析:需求分析常用的工具有4種:數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判斷樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N—S(盒式圖)都是詳細設(shè)計的常用工具,不是需求分析的工具。7、下列敘述中不正確的是()。A、在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參B、在C的函數(shù)中,最好使用全局變量C、外部變量可以在函數(shù)之間傳遞數(shù)據(jù)D、自動變量實質(zhì)上足一個函數(shù)內(nèi)部的局部變量標準答案:B知識點解析:程序運行時局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要臨時分配內(nèi)存,調(diào)用結(jié)束空間解放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運行的自始至終都占用固定的單元。在考慮內(nèi)存未知的情況下,最好不要使用全局變量。8、下列選項不符合良好程序設(shè)計風格的是()。A、源程序要文檔化B、數(shù)據(jù)說明的次序要規(guī)范化C、避免濫用goto語句D、模塊設(shè)計原則是高耦合、高內(nèi)聚標準答案:D知識點解析:在程序設(shè)計中對于軟件設(shè)計中的模塊設(shè)計要保證高內(nèi)聚和低耦合,源程序要有文檔說明,同時對程序中+;”,將m加1,遇到break語句跳出switch語句,結(jié)束循環(huán)。不執(zhí)行下面的switch。9、有下列程序:#includemain(){inta=6,b=7,m=1;switch(a%2){case0:m++.break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf(”%d\n”,m);}程序的運行結(jié)果是()。A、3B、2C、4D、1標準答案:B知識點解析:本題考查switch語句以及break的用法,第一個switch語句,因為a=6,a%2=0,所以執(zhí)行“case0,m++;”,將m+1遇到,break語句跳出switch語句,結(jié)束循環(huán),不執(zhí)行下面的switch。10、下列程序的運行結(jié)果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A、2,3,2B、2,3,1C、1,3,3D、3,1,2標準答案:D知識點解析:本題考查whlle循環(huán)。第一次循環(huán),y=y-1,y=2,循環(huán)條件成立,x=1,x++后值為1,x自加變成2,進入循環(huán),a=a+1=1,判斷if語句條件是否成立,y<x不成立,接著執(zhí)行下一次循環(huán)。第二次循環(huán),x=2,y-1=1,循環(huán)條件成立,進入循環(huán),a=a+1=2,判斷if語句的控制條件是否成立,y<x成立,執(zhí)行break語句,退出循環(huán)。結(jié)果為D。二、選擇題(1分)(本題共10題,每題1.0分,共10分。)11、數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。A、DB包含DBS和DBMSB、DBMS包含DB和DBSC、DBS包含DB和DBMSD、沒有任何關(guān)系標準答案:C知識點解析:數(shù)據(jù)庫系統(tǒng)由如下5個部分組成:數(shù)據(jù)庫(DB)、數(shù)據(jù)庫管理系統(tǒng)(DBMS)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。其中DB(DataBase)即數(shù)據(jù)庫,是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用完程序提供訪問DB的方法。由以上可知.選C為正確答案。12、下列合法的聲明語句是()。A、int_abc=50;B、doubleint=3+5e2.5;C、longdo=1L;D、float3_asd=3e-3;標準答案:A知識點解析:標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。B選項int不是表達變量類型的標識符,它不能再用做變量名和函數(shù)名。C選項do是C語言的…個關(guān)鍵字。D選項標識符只能以字母或下劃線開始。13、設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。A、x&&yB、x<=yC、x‖y+z&&y—zD、!((x<y)&&!z||1)標準答案:D知識點解析:本題考查邏輯運算符的使用。當“&&”的兩個運算對象都是邏輯1時,表達式返回值才是1;“||”的兩個運算對象至少有一個是邏輯1時,表達式返回值也是1,x<y為1,!z為0.1&&0為1,0||為1,因此,!1為0。14、若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語句后輸出的結(jié)果為()。ch=’b’;k=10;printf(""%x,%o,"",ch,ch,k);printf(""k=%%d\n"",k);"A、因變量類型與格式描述符的類型不匹配,輸出無定值B、輸出項與格式描述符個數(shù)不符,輸出為0值或不定值C、62,142,k=%dD、62,142,k=%10標準答案:C知識點解析:第1個printf函數(shù),格式說明的個數(shù)是2,而輸出項的個數(shù)是3,所以對于多余的輸出項k不予輸出;第2個printf函數(shù),有兩個%說明,第1個%后面的字符要原樣輸出。本題考查printf函數(shù)的格式。①“%x”和“%o”分別表示以十六進制和八進制無符合型輸出整型數(shù)據(jù)(不帶前導ox或0);②prjntf函數(shù)中格式說明符之前插入的任何字符都原樣輸出;③格式說明與輸出項的個數(shù)也要相等,如果格式說明的個數(shù)少于輸出項的個數(shù),則對予多余的輸出項不予輸出。15、有下列程序:fun(intx,inty){return(x+y);)main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}執(zhí)行后的輸出結(jié)果是()。A、6B、7C、8D、9標準答案:C知識點解析:函數(shù)fun(intx,inty)的功能是返回x+y的值。在主函數(shù)中,變量a,b,c的初始值分別為1,2.3。因此逗號表達式“a++,b++,a+b”的值等于5,表達式c++的值為3,調(diào)用于函數(shù)的表達式為“fun(5,3);”,其返回值等于8。16、假定x和y為double型,則表達式x=2,y=x+3/2的值是()。A、3.500000B、3C、2.000000D、3.000000標準答案:D知識點解析:在x=2,y=x+3/2中,3/2=1,2+1=3,因此表達式的值為3,因為x,y為double型變量,故選擇D選項。17、如下程序:main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。A、a=2,b=1B、a=1,b=1C、a=1,b=0D、a=2,b=2標準答案:A知識點解析:當x為1時,執(zhí)行case1,a自加等于1,因為case1后沒有break,接著執(zhí)行case2,此時a的值為2,b自加為1,故選擇A選項。18、下列程序的輸出結(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標準答案:D知識點解析:本題考查自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“||”。自增運算符“++”出現(xiàn)在變量之前,表示先使用變量的值加1,再使用變量的值進行運算;出現(xiàn)在變量之后,表示先使用變量的值進行運算,再使用變量的值加1。當邏輯與運算符“&&”兩邊的運算對象都為真時,邏輯表達式的值才為真;當邏輯或運算符“||”只要一個值為1,值就為1。根據(jù)運算符的優(yōu)先級,題中應(yīng)先計算內(nèi)層括號中的值。++j是先自加后運算。因此運算時j的值等于3,所以表達式++j=3成立,即表達式的值為1;1與任何數(shù)都為進行或(||)運算,結(jié)果都為1.因此k=3的表達式i++是先運算后自加,因此運算時i為1,所以i++=1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。19、下列程序的輸出結(jié)果是()。#includemain(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}}printf("%d",i);}A、19B、1C、6D、8標準答案:A知識點解析:本題考查switch語句。當i=1時,執(zhí)行case1,因為沒有遇到break語句,所以依次往下運行,“a=a+2=2,a=a+3=5”;當i=2時,執(zhí)行case2,因為沒有遇到break語句,所以依次往下執(zhí)行,“a=a+2=7,a=a+3=10”;當i=3時,執(zhí)行case3,a=a+1=11,因為沒有遇到break語句.所以依次往下運行,a=a+2=13,a=a+3=i6;當i=4時,執(zhí)行default,a=a+3=19,結(jié)束循環(huán)。20、有以下程序:main(){intx,1;for(i=1;i<=50;i++){x=i;if(x%2=0)if(x%3=0)if(x%7=0)printf("%d,i)";}}輸出結(jié)果是()。A、28B、27C、42D、41標準答案:C知識點解析:只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42.故選擇C選項。三、選擇題(2分)(本題共18題,每題1.0分,共18分。)21、以下程序的輸出結(jié)果是()。voidprt(int*m,intn){int1;for(i=0;i<n;i++)m[i]++;}main(){inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf("%d,",a[i]);}A、1,2,3,4,5B、2,3,4,5,6C、3,4,5,6,7D、2,3,4,5,1標準答案:B知識點解析:函數(shù)調(diào)用時,prt函數(shù)的作用是為使m數(shù)組中的數(shù)自增1,因此數(shù)組下標從0開始,每個元素都自加1。22、有以下程序:voidfunl(char*p){char*q;q=p;while(*q!=’\0’){(*q)++;q++;}}main(){chara[]={"Program"),*p;p=&a[3];funl(p);printf("%s\n",a);}程序執(zhí)行后的輸出結(jié)果是()。A、ProhsbnB、PrphsbnC、ProgsbnD、Program標準答案:A知識點解析:本題中使用了函數(shù)的調(diào)用,由funl函數(shù)中的while循環(huán)可知,循環(huán)的作用是為了把q所指向的內(nèi)容增加1,而從主函數(shù)傳到函數(shù)時是從下標為3開始傳,因此當調(diào)用函數(shù)執(zhí)行完后,傳過去的字符串為’hsbn’,前面不變。23、若有以下的說明和語句,則在執(zhí)行for語句后,*(*(pt+1)+2)表示的數(shù)組元素是()。intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];A、t[2][0]B、t[2][2]C、t[1]E2]D、t[2][1]標準答案:C知識點解析:從for循環(huán)可知pt是指向行的首地址的指針變量,因此由指針的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。24、有以下程序:main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是()。A、21,43B、43,21C、43,00D、21,00標準答案:A知識點解析:s是一個公用體,d的值分別與ch中的兩個元素的值相同,d的高位放在ch[1]中、低位放在ch[0]中,因此輸出的結(jié)果為21,43。25、以下程序的輸出結(jié)果是()。main(){inta=1,b;for(b=1’b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a=3;}printf("%d\n",b);A、3B、4C、5D、6標準答案:B知識點解析:當b=1時,a=1,第二個if語句成立,此時a=6,返回for循環(huán);當b=2,兩個if語句都為假,此時a=3,再返回循環(huán);當b=3,第二個if成立,此時a=8,繼續(xù)循環(huán);當b=4.第一個if成立,退出for循環(huán)體時b為4,a為8。26、設(shè)有以下定義和語句:charstr[20]="Program",*p:p=str;則以下敘述中正確的是()。A、*p與str[0]的值相等B、str與p的類型完全相同C、str數(shù)組長度和p所指向的字符串長度相等D、數(shù)組str中存放的內(nèi)容和指針變量p中存放的內(nèi)容相同標準答案:A知識點解析:本題中的str為一個字符型數(shù)組,p為字符型指針變量.其指向str的首地址,*p的值為str[0]中的字符,其類型、長度不同,但字符第一個相同。故答案選擇A。27、有下列程序:#includemain(){intx=0;inty=0;while(x<7&&++y){y--;x++;}printf("%d,%d”,y,x);}程序的輸出結(jié)果是()。A、0,7B、7,7C、0,6D、1,6標準答案:A知識點解析:本題考查while循環(huán)。在while循環(huán)申,y自加每次循環(huán)都加1,在循環(huán)體內(nèi)y--每次減1,所以總的y值不變,當x自加到7時,不滿足循環(huán)條件,循環(huán)結(jié)束。28、下列程序的運行結(jié)果是()。#includemain(){inta=2,b=3,c=4;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);}A、2B、3C、5D、4標準答案:C知識點解析:本題考查if…else語句。第一個if語句,先判斷條件,發(fā)現(xiàn)a<b條件成立,則執(zhí)行第二個if語句,再判斷條件,發(fā)現(xiàn)b<0條件不成立。則執(zhí)行與其配對的else語句c++,c自加1.得c=5。29、#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數(shù)f,正確的宏定義語句為()。A、#definef(x)5*x*x+5*x+5B、#definef5*x*x+5*x+5C、#definef(a)(5*a*a+5*a+5)D、#define(5*x*x+5*x+5)f(x)標準答案:C知識點解析:本題考查帶參數(shù)宏的格式:#define標識符(彤參表)形參表達式。其功能是:把預(yù)處理程序中出現(xiàn)的所有帶實參的宏名,展開形成由實參組成的表達式。敵C正確。30、函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。A、將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后B、將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后C、將字符串str2復(fù)制到字符串str1之后再將字符串str3連接到字符串str1之后D、將字符串str2連接到字符串str1之后再將字符串str1復(fù)制到字符串str3中標準答案:C知識點解析:strcat(s1,s2)甬數(shù)的功能是把s2字符串連接到s1字符串末昆,strcpy(s1.s2)是把s2字符串復(fù)制到s1字符串,要保證s1的容量。31、若有定義“doublea;”,則正確的輸入語句是()。A、seanf("%1f",a);B、scanf("%f",&a);C、scanf("%1f",&a)D、scanf("%le",&a);標準答案:D知識點解析:本題考查scanf函數(shù)的調(diào)用形式:scanf(格式字符串,輸入項地址表)。題中定義變量a為雙精度型變量,雙精度變量的格式符為“l(fā)e”;變量的地垃用取地址符“&”加變量名表示,所以選項D正確。32、下列程序的輸出結(jié)果是()。#includemain(){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標準答案:A知識點解析:本題考查switchcase開關(guān)語句.default退出繼續(xù)循環(huán)。當i=1時.執(zhí)行case1,因為沒有break語句,所以依次往下運行,a=a+2=2,a=a+3=5;當i=2時,執(zhí)行case2,沒有break語句,所以依次往下運行,a=a+2=7,a=a+3=10;當i=3時,執(zhí)行case3,當a=a+1=11,沒有break語句,所以依次往下運行,a=a+2=13,a=a+3=16;當i=4時。沒有case語句,則執(zhí)行default,a=a+3=19,i=5不成立,循環(huán)結(jié)束。表達式的右邊出現(xiàn)變量本身,選項D中字母E后面的數(shù)應(yīng)該為整數(shù),所以不對。33、下列能正確定義且賦初值的語句是()。A、intn1=n2=1;B、charc=99:C、floatf=f+1;D、doublex=1.2E5.6;標準答案:B知識點解析:在C語言規(guī)定中,可以在定義變量的同時給變量賦初值,選項A中n2沒有定義;選項C中不能賦值表達式的右邊出現(xiàn)變量本身,選項D中字母E后面的數(shù)應(yīng)該為整數(shù),所以不對。34、下列程序的輸出結(jié)果是()。main(){inta=6,b=3,c;if(a<b){c=a*b;printf("%d%d,%d\n",b,a,c);}else}A、3,6,18B、3,6,2C、6,3,18D、6,3,2標準答案:B知識點解析:本題考查if…else語句。如果if條件成立.則執(zhí)行if下面的語句.不成立則執(zhí)行else,判斷條件。發(fā)現(xiàn)a<b不成立,則執(zhí)行else后面的語句,得c=b/a=2。35、若有定義和語句: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標準答案:D知識點解析:本題考查指針變雖的賦值。**pp是定義一個指針變量,語句pp=&p是將pp指向指針p,*p和**pp都是指針p所指的內(nèi)存空問的內(nèi)容,即b的值。36、下列程序的運行結(jié)果是()。#includevoidfun(int*s,int*p){staticintt=3;*p=s[t];t--:}voidmain(){inta[]={2,3,4,5},k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A、5,4,3,2B、2,3,4,5C、2,2,2,2D、5,5,5,5標準答案:A知識點解析:依據(jù)fun函數(shù),可知其要實現(xiàn)的功能是將s中第(t+1)個元素以前的元素逆置賦給數(shù)組p。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main()函數(shù)中調(diào)用函數(shù)fun(a.&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)x,最后輸出x數(shù)組。37、下列程序的輸出結(jié)果是()。#includemain(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un)};}A、6,2B、6,4C、8,4D、8。6標準答案:B知識點解析:本題主要考查結(jié)構(gòu)和聯(lián)合內(nèi)存使用的一些區(qū)別:結(jié)構(gòu)中每個成員相互獨立,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和;聯(lián)合所占用內(nèi)存空間是指最長的成員占用的空間。38、標準庫函數(shù)fgets(s,n,file)的功能是()。A、從文件file中讀取長度為n的字符串存入字符數(shù)組s中B、從文件file中讀取長度不超過n-1個字符的字符串放到字符數(shù)組S中C、從文件file中讀到n個字符串存入字符數(shù)組s中D、從文件file中讀取長度為n-1個字符的字符串存入字符數(shù)組s中標準答案:B知識點解析:本題考查fgets()函數(shù)的使用調(diào)用形式:fgets(s,n,fp)。fgets函數(shù)參數(shù)說明:“s”可以是一個字符數(shù)組名,也可以是指向字符串的指針;“n”為要讀取的最多的字符個數(shù);“fp”是指向該文件型指針。fgets函數(shù)的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串放到字符數(shù)組s中,讀入字符串后會自動在字符串末尾加入"\0"結(jié)束符,表示字符串結(jié)束。四、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)39、長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,插入一個元素所需移動的元素的平均個數(shù)為________。標準答案:n/2。知識點解析:在線性表的任何位置插入一個元素概率相等,為p=1/(n+1),則插入一個元素時所需移動元素的平均次數(shù)為[*]。40、軟件設(shè)計模塊化的目的是________程序設(shè)計的復(fù)雜性。標準答案:降低。知識點解析:模塊化是指解決一個復(fù)雜問題時,自項向下逐層把軟件系統(tǒng)劃分成若干模塊的過程,由此分解來降低程序設(shè)計的復(fù)雜性。41、在算法的4個特性中,算法必須能執(zhí)行有限個步驟之后終止指的是算法的特性________。標準答案:有窮性。知識點解析:本題考查算法的4個基本特性;可靠性、確定性、有窮性和擁有足夠的情報,其中,算法的有窮性是指算法必須在有限的時間內(nèi)完成,即算法必須執(zhí)行有限個步驟之后終止。42、設(shè)一棵完全二叉樹共有500個結(jié)點,則在該二叉樹中有________個葉子結(jié)點。標準答案:250。知識點解析:根據(jù)二叉樹的性質(zhì):具有n個結(jié)點的完全二叉樹,其父結(jié)點數(shù)為int(n/2),而葉子結(jié)點數(shù)等于總結(jié)點數(shù)減去父結(jié)點數(shù)。43、下列表達式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁眨篲_______。標準答案:(y%4==0)&&(y%100!=0)||(y%400==0)。知識點解析:本題考查閏年的計算方法。年號能被整除(y%4==0)但不能被100整陳(y%100!=0)兩者都是與的關(guān)系。年號能被400整除即y%400==0,與前兩項是或的關(guān)系。五、填空題(本題共8題,每題1.0分,共8分。)44、若要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁?。p=__________malloe(sizeof(double));標準答案:double*。知識點解析:p是個指向double變量的指針,因此填double*。45、結(jié)構(gòu)化分析方法是面向__________進行分析的方法。標準答案:數(shù)據(jù)流知識點解析:本題考查對結(jié)構(gòu)化分析的理解,結(jié)構(gòu)化分析方法的實質(zhì)著眼于數(shù)據(jù)流,自上面下,逐層分解,建立系統(tǒng)的處理流程.以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。46、以下程序的功能是打印以下楊輝三角形,請?zhí)羁铡?1112113311464115101051main(){staticintm,n,k,b[10][10]={10};b[0][1]=1;for(m=1;m<10;m++);{for(n=1;n<=m;n++){b[m][n]=________;printf("%-5d",b[m][n]);}printf("\n");}}標準答案:b[m-1][n-1]+b[m-1][n]。知識點解析:楊輝三角形第3行開始非邊緣的元素值是其上一行斜上方元素和正上方元素之和。所以填b[m][n]=b[m-1][n-1]+b[m-1][n]。47、下面函數(shù)的功能是將一個字符串的內(nèi)容顛倒過來,請?zhí)羁?。voidfun(charstr[]){inti,j,k;for(i=0,j=________;i<j;i++,j--){k=str[i];str[i]=str[i];str[j]=k;}}標準答案:strlen(str)-1。知識點解析:for循環(huán)的作用是再來完成字符串的遍歷,應(yīng)該先對循環(huán)條件初始化,所以應(yīng)填strlen(str)-1。48、若x為int類型,請寫出與!x等價的C語言表達式_________。標準答案:x=0。知識點解析:x為真,!x的邏輯意思就是x為假,幫x=0,本題中x為int型,也就是整型數(shù)值,所以!x為0。49、下列程序的運行結(jié)果是_________。main(){inta=1,b=10;do{b-=a;a++}while(b--<0);printf("%d,%d\n",a,b);}標準答案:2,8。知識點解析:本題考查do—while語句的功能:先執(zhí)行循環(huán)俸,再判斷循環(huán)條件是否成立,若為真,則重復(fù)執(zhí)行循環(huán)體,否則退出循環(huán)。程序開始時a=1,b=10,經(jīng)過操作b-=a;a++后b=9,a=2,判斷條件b--<0不成立,則退出循環(huán),但b的菹被減1,因此結(jié)果為a=2,b=8。50、下列程序的運行結(jié)果是_________。main(){intj,a[10];a[0]=a[1]=1:for(i=2;i<5;i++)a[i]=a[i-2]+a[i-1];for(i=0;i<5;i++){if(i%2==0)printf("\n");printf("%d",a[i]);}}標準答案:11235(知識點解析:本題專查for循環(huán),第一個for循環(huán)“for(i=2;i<5;i++)”a[i]=a[i-2]+a[i—1];是將數(shù)組中前面兩項的和賦值給數(shù)組當前元素,可知a的值應(yīng)為{1,1,2,3,5}。語句if(i%2==0)printf("\n")是將數(shù)組中的元素以每行2個的形式輸出。51、下列程序的輸出結(jié)果是_________。#includeintfun(intx){intp;if(x==0‖x==1)return3;elsep=x-fun(x-2);returnp;}voidmain(){printf("\n%d",fun(11));}標準答案:4。知識點解析:本題考查函數(shù)的遞歸調(diào)用。在主函數(shù)中第1坎調(diào)用fun(1),如果x等于0或者x等于1剛返回3,否則返回11—fun(9);第2次調(diào)用函數(shù)fun(9),返回9-fum(7);第3次是fun(7),返回7-fun(5);第4次是調(diào)用fun(5),返回5-fun(3);第5次調(diào)用fun(3),返回3-fun(1);第6次調(diào)用fun(1),返回3??偟姆祷刂凳牵?1-(9-(7-(5-(3-3))))=1。六、填空題(含2小題)(本題共2題,每題1.0分,共2分。)52、以下程序中,函數(shù)fun的功能是計算x2-2x+6,主函數(shù)中將調(diào)用fun函數(shù)計算:y1=(x十8)2-(x+8)+6y2=sin2(x)-2sin(x)+6請?zhí)羁铡?includedoublefun(doublex){return(x*x-2*x+6);}main(){doublex,y1,y2;printf("Enterx:");scanf("%If",&x);y1=fun(_________)y2=fun(_________)printf("y1=%1f,y2=1f\n",y1,y2);}標準答案:(x+8)sin(x)。知識點解析:fun函數(shù)的功能是求x2-2x+6的值,所以只要填(x+8),sin(x)即可。注意優(yōu)先級,所以要加上括號。53、下面程序把從終端讀入的文本(用@作為文本結(jié)束標志)復(fù)制到一個名為bi.dat的新文件中,請?zhí)羁铡?includeFILE*fp;main(){charch;if((fp=fopen(________))==NULL)exit(0);while((ch=getchar())!=’@’)fputc(ch,fp);________;}標準答案:"bi.dat","w"fclose(fp)。知識點解析:本題要求從終端讀入文本到bi.dat文件中,故填"bi.dat","w",輸入完成國家二級(C語言)筆試模擬試卷第3套一、選擇題(1分)(本題共10題,每題1.0分,共10分。)1、算法的空間復(fù)雜度是指()。A、算法程序的長度B、算法程序中的指令條數(shù)C、算法程序所占的存儲空間D、算法執(zhí)行過程中所需要的存儲空間標準答案:D知識點解析:算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術(shù),以便盡量減少不必要的額外空間。2、下列敘述中正確的是()。A、一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)B、邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)C、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率D、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率標準答案:D知識點解析:數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式,一種數(shù)據(jù)結(jié)構(gòu)可以根據(jù)需要采用不同的存儲結(jié)構(gòu),常用的存儲結(jié)構(gòu)有順序和鏈式結(jié)構(gòu)。采用不同的存儲結(jié)構(gòu),其處理的效率是不同的。3、下列關(guān)于類、對象、屬性和方法的敘述中,錯誤的是()。A、類是對一類具有相同的屬性和方法對象的描述B、屬性用于描述對象的狀態(tài)C、方法用于表示對象的行為D、基于同一個類產(chǎn)生的兩個對象不可以分別設(shè)置自己的屬性值標準答案:D知識點解析:類是對一類具有相同的屬性和方法對象的描述,屬性用于描述對象的狀態(tài),方法用于表示對象的行為,基于同一個類產(chǎn)生的兩個對象是可以分別設(shè)置自己的屬性值的。4、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、數(shù)據(jù)字典B、詳細設(shè)計說明書C、數(shù)據(jù)流圖說明書D、軟件需求規(guī)格說明書標準答案:D知識點解析:需求分析的最終結(jié)果是生成軟件需要規(guī)格說明書,可以為用戶、分析人員和設(shè)計人員之間的交流提供方便。5、數(shù)據(jù)庫設(shè)計的四個階段是:需求分析、概念設(shè)計、邏輯設(shè)計和()。A、編碼設(shè)計B、測試階段C、運行階段D、物理設(shè)計標準答案:D知識點解析:數(shù)據(jù)庫設(shè)計目前一段采用生命周期法,即將整個數(shù)據(jù)庫應(yīng)用系統(tǒng)的開分解成目標獨立的若干階段,它們是:需要分析階段、概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段、編碼階段、測試階段、運行階段、進一步修改階段。在數(shù)據(jù)庫設(shè)計中采用上面幾個階段中的前四個階段,并且重點以數(shù)據(jù)結(jié)構(gòu)和模型設(shè)計為主線。6、在下列關(guān)系運算中,不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是()。A、并B、交C、投影D、除標準答案:B知識點解析:關(guān)系R與S經(jīng)交運算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的有序組所組成,記為R∩S,交運算不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)。7、下列敘述中,正確的是()。A、軟件交付使用后還需要進行維護B、軟件一旦交付使用就不需要再進行維護C、軟件交付使用后其生命周期就結(jié)束D、軟件維護是指修復(fù)程序中被破壞的指令標準答案:A知識點解析:軟件的運行和維護是指將已交付的軟件投入運行,并在運行使用中不斷地維護,根據(jù)新提出的需求進行必要而且可能的擴充和刪改。而軟件生命周期是指軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程。8、設(shè)一棵滿二叉樹共有15個結(jié)點,則在該滿二叉樹中的葉子結(jié)點數(shù)為()。A、7B、8C、9D、10標準答案:B知識點解析:在具有n個結(jié)點的滿二叉樹,其非葉子結(jié)點數(shù)為int(n/2),而葉子結(jié)點數(shù)等于總結(jié)點數(shù)減去非葉子結(jié)點數(shù)。本題n=15,故非葉子結(jié)點數(shù)等于int(15/2)=7,葉子結(jié)點數(shù)等于15.7=8。9、設(shè)R是一個2元關(guān)系,有3個元組,S是一個3元關(guān)系,有3個元組。如T=R×S,則T的元組的個數(shù)為()。A、6B、8C、9D、12標準答案:C知識點解析:R為n元關(guān)系,有P個元組S為m元關(guān)系,有q個元組。兩個關(guān)系笛卡兒積是一個n+m元的關(guān)系,元組個數(shù)是q×p。所以T的元組的個數(shù)為9個。10、下列選項中,不屬于數(shù)據(jù)庫管理的是()。A、數(shù)據(jù)庫的建立B、數(shù)據(jù)庫的調(diào)整C、數(shù)據(jù)庫的監(jiān)控D、數(shù)據(jù)庫的校對標準答案:D知識點解析:數(shù)據(jù)庫管理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村板車出售合同范例
- 公司注銷業(yè)務(wù)合同范本
- 中醫(yī)診所招聘合同范本
- 單位出售土地合同范本
- 公司車定維修合同范本
- 共享出租場地合同范本
- 勞務(wù)聯(lián)營合同范例
- 加油站出租合同范本
- 企業(yè)賦能合同范本
- 二手房房東出租合同范例
- (2024年)中國傳統(tǒng)文化介紹課件
- 糖尿病患者飲食指導課件
- 人工智能數(shù)據(jù)標注百億產(chǎn)業(yè)詳細介紹
- 2023年高考真題-地理(天津卷) 含答案
- 2024年10月自考02160流體力學試題及答案含評分參考
- 2025年公務(wù)員考試《行測》模擬題及答案(詳細解析)
- 2024年黑龍江省牡丹江市中考歷史試卷
- 滬科版八年級物理知識點總結(jié)
- 孫權(quán)勸學(原卷版)-2024年中考語文之文言文對比閱讀
- 高速公路日常清掃與養(yǎng)護方案
- 風電epc合同模板
評論
0/150
提交評論