




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
國家二級(C語言)筆試模擬試卷第1
套
一、公共基礎選擇題(本題共10題,每題7.0分,共
10分。)
1、下列模式中,能夠給出數據庫物理存儲結構與物理存取方法的是()。
A、內模式
B、外模式
C、概念模式
D、邏輯模式
標準答案:A
知識點解析:數據庫管理系統的三級模式結構由外模式、模式和內模式組成。外
模式,或子模式,或用戶模式,是指數據庫用戶所看到的數據結構,是用戶看到的
數據視圖。模式,或邏輯模式,是數據庫中對全體數據的邏輯結構和特性的描述,
是所有用戶所見到的數據視圖的總和。外模式是模式的一部分。內模式,或存儲模
式,或物理模式,是指數據在數據庫系統內的存儲介質上的表示,即對數據的物理
結構和存取方式的描述。
2、在關系代數運算中,有5種基本運算,它們是()。
A、并(U)、差(?)、交(。)、除(:)和笛卡兒積(x)
B、并(U)、差(-)、交⑺)、投影(兀)和選擇(0)
C、并(U)、交S)、投影(兀)、選擇(o)和笛卡兒積(X)
D、并(U)、差(-)、投影(兀)、選擇(6和笛卡兒積(X)
標準答案:A
知識點解析:數據庫有兩層映像,即外模式/模式和模式/內模式映像。模式/內
模式映像定義數據庫全局邏輯結構與存儲結構之間的對應關系。
3、以下敘述中錯誤的是o
A、用戶所定義的標識符允許使用關鍵字
B、用戶所定義的標識符應盡量做到“見名知意”
C、用戶所定義的標識符必須以字母或下劃線開頭
D、用戶所定義的標識符中,大、小寫字母代表不同標識
標準答案:A
知識點解析:在C語言中,用戶所定義的標識符不能使用關鍵字。
4、在結構化分析方法中,數據字典的作用是()。
A、存放所有需要處理的原始數據
B、存放所有處理的結果
C、存放所有程序文件
D、描述系統中所用到的全部數據和文件的有關信息
標準答案:D
知識點解析:在C語言中,結構化分析方法中的數據字典的作用是描跡系統中所
用到的全部數據和文件的有關信息。
5、下面選項中不屬于面向對象程序設計特征的是()。
A、繼承性
B、多態性
C、類比性
D、封閉性
標準答案:C
知識點解析?:面向對象程序設計的特征有以下幾點:分類性、繼承性、封裝性、多
態性、模塊性等。
6、在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數為()。
A、63
B、64
C、6
D、7
標準答案:2
知識點解析:在長度為n的線性表中進行順序查找,如果表中第一個元素就是被查
找元素,則只需做一次比較就查找成功,這是順序查找的最好情況;如果被查找的
元素是線性表中的最后一個元素或者不在線性表中,則需要進行n次比較,這是順
序查找的最壞情況。所以選項B)正確。
7、下列SQL語句中,用于修改表結構的是()。
A、ALTER
B、CREATE
C、UPDATE
D、INSERT
標準答案:1
知識點解析:在SQL語句中,倉ij建用CREATE,刪除用DROP,改變用ALTER,
后面跟類型和名字,附加子句。
8、下列敘述中正確的是
A、一個邏輯數據結構只能有一-種存儲結構
B、數據的邏輯結構屬于線性結構,存儲結構屬于非線性結構
C、一個邏輯數據結構可以有多種存儲結構,且各種存儲結構不影響數據處理的效
率
D、一個邏輯數據結構可以有多種存儲結構,且各種存儲結構影響數據處理的效率
標準答案:8
知識點解析:一?般來說,一種數據的邏輯結構根據需要可以表示成多種存儲結構,
常用的存儲結構有順序、鏈接、索引等存儲結構。而采用不同的存儲結構,其數據
處理的效率是不同的。由此可見,選項D的說法正確。
9、結構化程序設計主要強調的是_____o
A、程序的規模
B、程序的易讀性
C、程序的執行效率
D、程序的可移植性
標準答案:2
知識點解析:結構化程序設計主要強調的是結構化程序清晰易讀,可理解性好,程
序員能夠進行逐步求精、程序證明和測試,以保證程序的正確性。
10、在面向對象方法中,不屬于“對象”基本特點的是_____o
A、一致性
B、分類性
C、多態性
D、標識唯一性
標準答案:A
知識點解析:面向對象方法中最基本的概念是對象,它的基本特點有:標識唯-
性、分類性、多態性、封裝性和模塊獨立性好。
二、選擇題(1分)(本題共〃題,每題1.0分,共〃
分。)
II、數據庫技術的根本目標是要解決數據的()。
A、存儲問題
B、共享問題
C、安全問題
D、保護問題
標準答案:B
知識點解析:數據庫技術的根本目標是解決數據的共享問題。
12、關于C語言中數的表示,以下敘述中正確的是
A、只要在允許范圍內整型數和實型數都能精確的表示
B、只有整型數在允許范圍內能精確無誤的表示,實型數會有誤差
C、只有實型數在允許范圍內能精確無誤的表示,整型數會有誤差
D、只有用八進制表示的數才不會有誤差
標準答案:B
知識點解析:在C語言中,整型數值是以補碼表示的。正整數的補碼與原碼相同,負
數的補碼是將該數的絕對值的二進制形式按位取反再加lo這樣,在整型數的允許范
圍內能夠精確的表示整數。與整型數據的存儲方式不同,浮點型數據是按照指數形
式存放的。系統把一個浮點型數據分成小數部分和指數部分,分別存放。由于浮點
型數據是由有限的存儲單元組成的,因此能提供的有效數字總是有限的,在有效數字
以外的數字將被舍去,由此可能會產生一些誤差。
13、能正確表“當x的取值在[1,10]和[100,110|范圍內為真,否則為假”的表述式
是()。
A、(x>=l)&&(x<=W)&&(x>=100)&&(x<=l10)
B、(x>=l)II(x<=IO)II(x>=100)II(x<=110)
C、(x>=l)&&(x<=10)II(x>=100)&&(x<=110)
D、(x>=l)II(x<=10)&&(x>=100)II(x<=110)
標準答案:4
知識點解析:本題考查邏輯與(&&)和邏輯或(II)運算符的使用。x>=l和x<=10
是邏輯與的關系,因此C語言表達式應寫成“(x>=l)&&(xV=10)”,x>=100和x
<二110也是邏輯與的關系,因此C語言表達式應寫成“(x>=100)&&(x〈=110)”;
[1,10]和[100,110]是邏輯或的關系,因此只要將前兩個表達式用邏輯或運算符連
接起來即可,所以最后的表達式:(x>=l)&&(X<=10)II(x>=100)&&(x<=l10)o
14、若以下選項中的變量已正確定義,則正確的賦值語句是()。
A^xl=26.8%3;
B、l+2=x2;
C、x3=0xl2;
D^x4=1+2=3;
標準答案:4
知識點解析:正確的賦值語句的左值不能為常量或表達式。選項A)中右值的表達
式錯:選項R)的左值為表達式,錯誤:選項D)的表達式x4=1+2=3,是先執行賦值
表達式1+2=3,這本身就是錯誤的,1+2不是變量,不能賦值。
15、若變量已正確說明為float型,要通過scanf("%f%f%F,&a,&b,&c);給a
賦值10.0,b賦值22.0,c賦值33.0,下列不正確的輸入形式是()。
A、10V回車>22V回車>33V回車》
B、10.0,22.0,33.0V回車)
C、C.0V回車>22.033.0V回車》
D、1022V回車>33V回車》
標準答案:2
知識點解析:在scanf("%f%f%f,&a,&b,&c);中,格式描述為“當輸
入數據時,數據之間可用空格、制表符和回車符作為間隔符,而逗號不是合法的間
隔符。
16、下面四個選項中,均是不正確的8進制數或16進制數的選項是
A、0I60x8f018
Oabc017Oxa
C、010-0x110x16
D、0al27ff-123
標準答案:8
知識點解析:8進制中,不可能包括8以上的數字,它的范圍只在。?7之間,以0
開頭。同樣,十六進制是以Ox開頭,數字在0?9和a?f之間。
17、以下語句的輸出結果是()printf("%d,%d,%u\n",016,16,-16);
A、16,16,6542。
B、14,16,6542
C、16,16,-16
D、14,16,-16
標準答案:2
知識點解析:暫無解析
18、有以下程序:main(){intm=0256,n=256;printf("%o%o\n\m,n);}程序運行后
的輸出結果是()。
A、02560400
B、0256256
C、256400
D、400400
標準答案:4
知識點解析:程序中定義了兩個整型變量,一個用八進制表示,一個用十進制表
示,輸出語句中要求m、n都為八進制輸出,顯然m原樣輸出為256,n的值轉換
為八進制輸出(256的八進制為400),故輸出400。所以,4個選項中選項C符合題
意°
19、以下選項中可作為C語言合法常量的是
A、-80
B、-80
C、-8el.O
D、-80.0e
標準答案:1
知識點解析?:選項B中,以0開頭表示是一個八進制數,而八進制數的取值范圍
是0-7,所以-080是不合法的;選項C和D中,e后面的指數必須是整數,所以
也不合法。
20、以下選項中屬于C語言的數據類型是o
A、復數型
B、邏輯型
C、雙精度型
D、集合型
標準答案:4
知識之解析:C語言的數據類型分為基本類型、構苴類型、指針類型、空類型四大
類。其中,基本類型分為整型、字符型、實型三類。實型又稱浮點型,包括單精度
型和雙精度型兩種類型。
21、下列程序的輸出結果是()。main(){chara[7]="a0\0a0\0";intij;i=sizeof(a);
j=strlen(a);printf("%d%d\n",i,j);)
A、22
B、76
C、72
D、62
標準答案:4
知識點解析:函數sizeof(a)的功能是求出字符串a中的字符占用存儲空間的大小,
由于字符數組a有長度為7,所以i=7;函數slrlen(a)的功能是:求出字符串a的長
度。而每個字符串都以'(T為字符串的結束標記,所以j的值等于2。
三、選擇題(2分)(本題共20題,每題1.0分,共20
分。)
22>下列程序的輸出結果是#include"stdio.h""main(){inti,a=0,b=0;
for(i=l;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,
b=%d",a,b);)
A^a=4,b=4
B、a=4,b=5
C^a=5,b=4
D、a=5,b=5
標準答案:B
知識點解析:continue語句的作用是跳過本次循環體中余下尚未執行的語句,接著
再一次進行循環條件的判定。當能被2整除時,a就會增1,之后執行continue語
句,直接執行到for循環體的結尾,進行i++,判斷循環條件。
23、有以下程序:main(){inty=1,x=2,z=3;printf("%d,%d\n",(++x,y++),z+2);}執
行后的輸出結果是()。
A、3,5
B、2,5
C、3,3
D、1,5
標準答案:D
知識點解析:本題考查逗號表達式。逗號表達武的求解步驟是先求解表達式1,然
后依次求解表達式2,直到表達式N的值。整個逗號表達式的值就足最后一個表達
式N的值。(++x,y++)這個表達式的返回值是y++,先使用y的債,然后將y加
1,所以輸出第一個值為1。第二個輸出的值為z+2=3+2=5。
24、函數fseek。的正確調用形式是()。
A、fseek(位移量,起始點,文件類型指針);
B、fseek(文件類型指針,位移量,起始點);
C、fseek(文件類型指針,起始點,位移量);
D、fseek(起始點,位移量,文件類型指針);
標準答案:B
知識點解析:改變文件位置的指針函數fscck()的調用形式:
fseek(fp,offset,position);cfseek函數參數說明:“fp”是指向該文件的文件型指針;
“offset”為位移量,指從起始點position到要確定的新位置的字節數。也就是以起點
為基準,向前移動的字節數。“position”為起始點,指出以文件的什么位置為基準
進行移動,position的值用整型常數表示,“0”表示文件的開頭,“1”表示文件的當
前位置,“2”表示文件的末尾。
25、有以下程序//includemain(){charp[20]={,a\,b\,c\,d,},q[]=nabc",r[l-'abcdc';
strcat(p,r);strcpy(p+slrlen(q),q);printf("%d\n",strlen(p));)程序運行后的輸出結果是
A、9
B、6
C、11
D、7
標準答案:B
知識點解析:strcpy()函數的功能是將字符串q復制到從pl3]位置開始的存儲單
元,同時復制字符串結束標志'\0'到p[6]中。函數shien()返回的是字符串中不包
括、(T在內的實際長度,敢本題答案為B)。
26、與“y=(x>0?l:x<0?-l:Of;的功能相同的if語句是O。
A^if(x>0)v=l;elseif(x<0)y=l;elsey=0;
B、if(x)if(x>0)y=l;elseif(x<0)y=-l;elsey=0;
C、y=-lif(x)if(x>0)y=l;elseif(x==0)y=0;elsey=-1;
D^y=0:if(x>=0)if(x>=0)y=l;elsey=-I;
標準答案:B
知識點解析:y=(x>0?l:x<0?-l:0)中有兩個三目運算符,因此按右到左的順序
運算,可寫成y=(x>0?l:(xV0?-l:0)),故選擇B選項。
27、執行語句“for(i=l;i++V4;);”后,變量i的值是()。
A、3
B、4
C、5
D、不定
標準答案:C
知識點解析:for循環結束時,i++的值應為4,i自加后此時應為5,故選擇C選
項。
28>有以下程序:#includevoidWriteStr(char*fn,char*str){FILE*fp:
fp=fopen(fn,"w");fputs(str,fp);fclose(fp);main()(WriteStrC'tl.dat","start'1);
WriteStrC'tl.dat'7'end");)程序運行后,文件tl.dat中的內容是()。
A^start
B、end
C、startend
D、cndrt
標準答案:B
知識點解析:暫無解析
29、數據結構作為計算機的一門學科,主要研究數據的邏輯結構、對各種數據結構
進行的運算以及。
A、數據的存儲結構
B、計算方法
C、數據映像
D、邏輯存儲
標準答案:A
知識點解析:暫無解析
30、設有如下函數定義,則輸出結果為ochar*fun(char*str)
{char*p=str;\vhile(*p){if(*p>,d,)continue;p++;}returnp;)
main(){printf("%s\n1,,fun("welcome!"));}
A、welcome!
B、come!
C、w
D、程序陷入死循環中
標準答案:D
知識點解析:暫無解析
31、有如下定義:structperson{charname[9];intage;};structperson
class[10]={nJohnn,l7,"paul",l9,“Mary”,18,“Adam”,16};根據上述定義,能輸出字母
M的語句是()。
A、printf("%c\n",class[3].name);
B、printf(n%c\n",class[3].name[1]);
C、printf(,'%c\n,,,class[2].name[1]);
D、printf("%c\n",class[2].name[0]);
標準答案:8
知識點解析:本題的關鍵是弄清楚給結構體數組賦初值的問題。初始值將按數組的
各個元素在內存中的存放次序逐個地賦給各元素。結構體數組的各個元素在內存中
的存放次序是:class[O\name,class[O].age,class[l].name,class[l].age,...,由此可知,
包含字符“M”的字符串“Mary”賦值給了元素class⑵.name,則與字符相對應的
表達式是class[2].name[0]o
32、有以卜程序:#defmeP3voidP(intx){return(p*x*x);}main()
{pritnf("%d\n';F(3+5);)程序運行后的輸出結果是(),
A、192
B、29
C、25
D、編譯出錯
標準答案:8
知識點解析:本題是一道陷阱題,考生如果沒注意到F()函數被定義為void類型的
話,很容易錯選為選項A,其實應該選擇選項D,編譯出錯。
33、若有下面的程序片段:int[12]={0},*p[3],**pp,i;for(i=0;i<3;i)
p[i]=&a[i*4];pp=p則對數組元素的錯誤引用是
A、pp[O][l]
B、a|10]
C、p[3][l]
D^*(*(p+2)+2)
標準答案:4
知識點解析:本題綜合考查一維數組和多維數組指針變量的表示方法。在C語言
中,引用數組元素的方法有兩種,即:下標法和指針法。下標法如a[i]形式;指針
法如*(a+i)或*(p+l)。其中a是數組名,p是指向數組的指針變量,其初值p=a。再
如氣木(p+2)+2)是a⑵⑵的值,注意語句中指針型數組的書寫格式,不能寫成“(*數
組名)[長度]”,因為這是定義指向含有“長度”個元素的一維數組的指針變量。例如
有定義語句“inta,b,c,c,*P[3]={&a,&b,&c};",它定義了一個名為p的指
針型數組.其3個元素p[0],p[1],p[2]分別指向B個整型變量a.b.c?注意:
數組元素的引用方法。
34、若有如下程序:main(){intx=l,n;for(n=0;n<5;n++){switch(n){case
n
3:x+=3;case2:x+=2:case1:case0:default:x+=4;}}printf("%d\n?
x);}則程序執行后的輸出結果是()
A、10
B、18
C、28
D、30
標準答案:4
知識點解析:暫無解析
35、以下程序的輸出結果是()#includeVstdio.h>main(){unionun{inti;long
k:charc;};structbyte{inta;longb;unionunc;)r;printf("%d\n",
sizeof(r));}
A、10
B、13
C、7
D、8
標準答案:1
知識點解析:暫無解析
36、有以卜.程序:main(){unsignedchara,b,c;a=0x3;b=a|0x8;c=b<<1;
printf("%d%d\n",b,C);}程序運行后的輸出結果是()。
A、-1112
B、-6-13
C、1224
D、1122
標準答案:8
知識點解析:將a的值用二進制表示:00000011。a與0x8(二進制表示為
00001000)按位或,得到結果00001011賦值給b,b的值為11。再將b左移一位得
到:00010110,賦值給c,c的值為22。所以最后輸出的b,c的值為11,22。
37、請讀程序:#inckide<stdio.h>main(){inta=5,b=7,c=9;
pintf(n%d,%d,"a,b,C);printf(H%d,%d",a,D);}上面程序的輸出結果是。
A、579,5,7
B、5,7,5,7
C、5,7,不定7,9
D、5,7,5,7,不定
標準答案:8
知識點解析:printf函數按格式控制符的個數輸出表列中對應的數據,若輸出表列
的個數大于格式控制符個數,則輸出與格式控制符對應的輸出表列的數據,輸出表
列中多的則省略;若格式控制符個數大于輸出表列的個數,則輸出與格式控制符對
應的輸出表列的數據,格式控制符多的部分輸出的數據是隨機的。
38、以下函數值的類型是()fun(floatx){floaty;y=3*x-4;
returny;)
A、int
B、不確定
C^void
D、float
標準答案:1
知識點解析:暫無解析
39、下面程序段中C的二進制值是ochara=3,b=6.c:c=ab<<1;
A、1011
B、1111
C、11110
D、11100
標準答案:2
知識點解析:C語言提供六種位運算符,按優先級由高到低的順序分別為:取反
(?)、左移(VV)和右移(>>)、按位與(&)、按位異或(A)、按位或(|)。所以表達式
?=^<<1先運算1><<1得二進制為00001100,再運算aAOOOOUOO,最后得二進
制值00001111o
40、有以下函數定義:voidfun(intn,doublex){......}若以下選項中的變量都已
正確定義并賦值,則對函數fun的正確調用語句是
A^fun(inty,doublem);
k=fun(10,12.5);
C^fun(x,n);
D^voidfun(n,x);
標準答案:C
知識"解析:選項A)中的實參不能在調用時聲明;選項B)錯誤,因為無返回值的
函數不能出現在表達式中;選項D)錯誤,其調用格式不正確。
41、以下程序的功能是進行位運算:main(){unsignedchara,b;a=7A3;b=?4&
3;printf("%d%d\n",a,B);}程序運行后的輸出結果是。
A、43
B、73
C、70
D、40
標準答案;A
知識點解析:C語言提供六種位運算符,按優先級由高到低的順序分別為:取反
(-)一左移(VV)和右移(>>)T按位與(&)一按位異或(A)T按位或(I)。是按位異
或運算,當對應位上的二進制數值相同時,異或的結果為0,對應位上的二進制數
值不同時,異或的結果為1,本題“7A3”相當于01UA0011,所以a的值為4;
是按位與運算符,只有當所有對應位上的數值都為1時,結果才為1;是按位取
反。題中“-4&3”相當于1011&0011=0011,所以b的值為3。
四、公共基礎填空題(本題共4題,每題1.0分,共4
分。)
42、長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,
插入一個元素所需移動元素的平均個數為o
A、n/2
標準牝索.
知識之解析:哲無解析
43、下列程序的功能是對輸入的一行字符中的數字字符的字面值累加,輸出此累加
和,請填空。#include#includemain(){chare;inta,s=0;while()
if(isdigit(c)){a=s-,O,;s+=a:}printf(',s=%d,\s);}
標準答案:(c=getchar())!=’\n\
知識點解析:由題可知,用函數c=gelchar()從鍵盤上讀取一行的字符(即沒有換
行)所以條件為(c=gctchar())L\n\
44、在面向對象方法中,信息隱蔽是通過對象的【】性來實現的。
標準答案:封裝
知識點解析:封裝是一種信息隱蔽技術,目的在于將對象的使用者和對象的設計者
分開。用戶只能見到對象封裝界面上的信息,不必知道實現的細節。
45、軟件測試按功能劃分的方法劃分,通常分為【】測試方法和黑盒測試方法。
標準答案:白盒
知識點解析:軟件測試的方法分為白盒測試方法和黑盒測試方法。
46、一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體”項目主
管”與實體”項目,,的聯系屬于【】。
標準答案:一對多
知識點解析:由于一個項目主管可以管理多個項目,而一個項目只能有一個項目主
管,“項目主管”這個實體與“項目”這個實體的管理關系屬于一對多。
五、填空題(本題共70題,每題1.0分,共70分。)
47、寫出下列程序的輸出結果。main。{intn=0;while(n++<=l);
printf(”%dj,n);printf("%d",n++);}
A、3,3
標準答案:
知識點解析:本題在while(n++V=l)語句后,直接加了分號,說明如果while。的
條件為真時,該循環什么都不做:n++是先取n的當前值和1做比較,然后再將n
加1。第一次循環,n=0時,循環條件n++=0V=l成立,執行循環,然后得到
n=l。第二次循環,n=l時,循環條件n++=lV=l成立,執行循環,然后得到
n=2o第三次循環,n=2時,循環條件n++=2V=l不成立,不執行循環,但在判斷
循環條件時仍將n加1,得到產3。退出循環后執行printf語句,第二個printf語句
輸出n++,是先輸出n的當前值3
48fwrite函數的一般調用形式是
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
知識點解析:暫無解析
49、對數據元素之間的邏輯關系的描述是()。
標準答案:數據的邏輯結構
知識點解析:數據的邏輯結構是對數據元素之間的邏輯關系的描述,它可以用一個
數據元素的集合和定義在此集合中的若干關系來表示。
50、若變量a,b已定義為血類型并賦值21和55,要求用print?函數以a=21,b=55的
形式輸出,請寫出完整的的輸出語句【】。
標準答案:printfC4a=%d,b=%d,,,a,b);
知識點解析:printf是格式化輸出函數。
51以下程序的輸出結果是[]o#include<stdio.h>voidfun(){staticint
a=0;a+=2;printf(n%d',a);)main(){intcc;for(cc=l;cc<4;cc++)fun();
printfCAn,1);}
標準答案:246
知識點解析:本題考查靜態(static)局部變量的使用,fun函數中的靜態局部變量a
所占用的存儲單元在程序運行過程中始終不釋放,即當下一次調用該函數時,該變
量仍然保留上一次函數調用結束時已有的值,3次調用fun函數分別得到2,4.
6。
52、設函數Gndbig已定義為求3個數中的最大值。以下程序將利用函數指針調用
findbig函數。請填空。main(){intfindbig(int,int,int);int(*f)(),x,y,z,big;f=;
scanf("%d%d%d",&x,&y,&z}:big=(*f)(x,y,Z);printf("big=%d\nM,big);}
標準答案:findbig
知識點解析:本題考核的知識點是指向函數的指針變量的使用。本題首先定義了一
個指向函數的指針變量f,如果希望讓它指向某個兇數,只需把函數名賦給該指針
變量即可。所以說本題的空格處應該填入函數名findbigo
53、若輸入21、23、34、11、2、6,則以下程序的運行結果[]。main(){inti;
char+p,num[6];for(i=0;i<5;i++)scanf("%d,",&num[i]);scanf("%d",
&num|5|);p=&num|0];sort(p,6);for(i=0;i<5;i++)printf("%d,”,
num[i]);printf("%d\n",num[5]);}sort(p,m)char*p;intm;{inti;char
change,*pl,*p2;for(i=0:i<m/2:i++){pl=p-i:p2=p+(m-l-i);
change=*pl;*pl=*p2;*p2=change;))
標準答案:6,2,11,34,23,21
知識點解析:暫無解析
54、已有定義:doubleup;,請寫出完整的語句,利用malloc函數使p指向一個
雙精度型的動態存儲單元【】。
標準答案:p=(double*)inalloc(sizeof(double))
知識點解析:本題重點考查對申請動態存儲單元函數malloc的調用,malloc函數
的形參為申請動態存儲單元的大小,調用此函數時需耍進行強制類型轉換,所以本
題需要將返回類型強制為double型指針。
55、若有如下程序:voidsub(){staticintx=8;x/=2;printf("%d'\x);}main(){in(m;
for(m=0;m<2;m++)sub();)則程序運行后的輸出結臬是【】.
標準答案:42
知識點解析:主函數中的for循環循環兩次,即函數sub。被調用兩次。在sub()中x
被定義為靜態整型變量,當調用函數sub()完畢返回主函數,x中的值仍然保留,
下次調用函數sub。時,x不再被賦初值。第1次調用x/=2相當于x=x/2=8/2=4,第
2次調用x=x/2=4/2=2,因此輸出42。
56^有以下程序:#inckide<stclio.h>main(){chare;
whilc((c=gctchar())!=,?,)putchar(-c);)程序運行時,如果從鍵盤輸入:Y?N?V回
車,,則輸出結果為【】0
標準答案:X
知識點解析:主函數中首先定義了一個字符型變量c,接著執行下面while語句,
在while循環中,首先從鍵盤上讀入一個字符Y并給賦給字符變量c,賦值表達式
的值不為'?',執行輸出語句,輸出字符X。接著判斷while中的循環條件,讀入一
個字符,?,并賦值給c,賦值表達式的值為?循環條件不再滿足,退出循環。
57、有以下程序#inculdemain(){inia=l,B=2,c=3,d=0;iF(a==l)iF(B!=2)iF(c==3)
d=l;elsed=2;elseiF(c!=3)d=3;elsed=4;elsed=5;printF("%d\n",d);}程序遠行后的
輸出結果是【】。
標準答案:4
知識點解析:暫無解析
國家二級(C語言)筆試模擬試卷第2
套
一、公共基礎選擇題(本題共io題,每題1.0分,共
10分。)
1、下列特征中不是面向對象方法的主要特征的是()。
A、多態性
B、繼承
C、封裝性
D、模塊化
標準答案:D
知識點解析:面向對象設計方法與面向過程設計方法有本質的不同,其基本原理
是:使用現實世界的概念抽象地思考問題從而自然地解決問題。其特點包括:分類
性、多態性、封裝性、模塊獨立性、繼承和多態性等。模塊化是結構化程序設計的
特點。
2、C語言的基本單位是()。
A、函數
B、過程
C、子程序
D、子函數
標準答案:A
知識點解析:C語言是函數式的語言。它的基本組成單位是函數,在C語言中任何
程序都是由一個或者多個函數組。
3、面向對象的設計方法與傳統的面向過程的方法有本質不同,它的基本原理是
()o
A、模擬現實世界中不同事物之間的聯系
B、強調模擬現實世界中的算法而不強調概念
C、使用現實世界的概念抽象地思考問題,從而自然地解決問題
D、鼓勵開發者在軟件開發的絕大部分中都用實際領域的概念去思考
標準答案:4
知識點解析:面向對象的設計方法與傳統的面向過程的方法有本質不同,它的基本
原理是,使用現實世界的概念抽象地思考問題,從而自然地解決問題。它強調模擬
現實世界中的概念,而不強調算法,鼓勵開發者在軟件開發的絕大部分中都用應用
領域的概念去思考。
4、若x和y都是血型變量,x=100,y=200,且有程序片段:printf(,,%du,
(x,y));,則輸出結果是_____o
A、200
B、100
C、100200
D、輸出格式符不夠,輸出不確定的值
標準答案:1
知識點解析:暫無解析
5、在計算機中,算法是指o
A、查詢方法
B、加工方法
C、解題方案的準確而完整的描述
D、排序方法
標準答案:4
知識點解析:計算機算法是指解題方案的準確而完整的描述,它有以下幾個基本特
征:可行性、確定性、有窮性和擁有足夠的情報。
6、棧通常采用的兩種存儲結構是
A、順序存儲結構和鏈式存儲結構
B、散列方式和索引方式
C、鏈表存儲結構和數組
D、線性存儲結構和非線性存儲結構
標準答案:1
知識點解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈式棧。棧
的順序存儲結構是利用一組地址連續的存儲單元一次存儲自棧底到棧頂的數據元
素,同時附設指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,
相對而言,鏈式棧的操作更易于實現。注意:這3種運算方法在各種存儲結構中的
應用。
7、在微機中,bit的中文含義是()
A、二進制位
B、字節
C、字
D、雙字
標準答案:1
知識點解析:暫無解析
8、下列敘述中錯誤的是()。
A、一種數據的邏輯結構可以有多種存儲結構
B、數據的存儲結構與數據的處理效率無關
C、數據的存儲結構與數據的處理效率密切相關
D、數據的存儲結構在計算機中所占的空間不一定是連續的
標準答案:2
知識點解析:數據的存儲結構分為順序結構和鏈式結構,一個數據的邏輯結構可以
有多種存儲結構。順序結構中數據元素所占的存儲空間是連續的,而鏈式存儲結構
中,數據元素所占的存儲空間不一定是連續的。數據的存儲結構與數據的處理效率
密切相關。
9、下列描述中,不是線性表順序存儲結構特征的是()。
A、不便于插入和刪除
B、需要連續的存儲空間
C、可隨機訪問
D、需另外開辟空間來保存元素之間的關系
標準答案:8
知識點解析:線性表的順序存儲是用一片連續的空間來存放數據元素,其特點是邏
輯上相鄰的元素在物理位置上也相鄰。數據元素之間邏輯上的先后關系自動隱含在
物理位置的相鄰元素之中,因此,不需要另外開辟空間來保存元素之間的關系。
10、下列不屬于軟件工程的3個要素的是()。
A、工具
B、過程
C、方法
D、環境
標準答案:8
知識點解析:軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程
項目的技術手段;工具支持軟件的開發、管理和文檔生成;過程支持軟件開發的各
個環節的控制、管理。
二、選擇題(1分)(本題共〃題,每題7.0分,共〃
分。)
11、下列選項中不合法的十六進制數是()。
A、Oxff
B、0X11
C、Oxlg
D、OXabc
標準答案:C
知識點解析:十六進制是以“Ox”或“OX”開頭的字符串,字符串中只能含有0?9這
10個數字和a、b、c、d、e、f這6個字母。
12、數據管理技術發展的三個階段中,()沒有專門的軟件對數據進行管理。
I.人工管理階段H.文件系統階段HI.數據庫階段
A、僅I
B、僅III
c、I和n
D、H和III
標準答案:A
知識點解析:數據管理技術發展的三個階段中,只有人工管理階段,沒有操作系
統,沒有管理數據的軟件,數據處理方式是批處理。在文件系統階段,操作系統中
已經有了專門數據管理軟件,一般稱為文件系統。在數據庫系統階段,出現了統一
管理數據的專門軟件系統,即數據庫管理系統。
13、下列合法的聲明語句是()。
A、int_abc=50;
B、doubleint=3+5e2.5;
CNlongdo=lL;
D、float3_asd=3e-3;
標準答案:A
知識點解析:標識符是由字母、數字或下劃線組成,并且它的第一個字符必須是字
母或者下劃線。B選項E不是表達變量類型的標識符,它不能再用做變量名和函
數名。C選項do是C語言的…個關鍵字。D選項標識符只能以字母或下劃線開
始。
14、有以下程序#includcmain(){inta=l,b=0it(!a)b++;elseit(a==O)it(a)b+=2else
b+=3printf("%d\n",b);}程序運行后的輸出結果是()。
A、0
B、1
C、2
D、3
標準答案:A
知識點解析:a=l所以!a表達式為假,不執行b++。又a=l所以a=0為假,所以跳
過語句后面的if和else語句(因為else和最近的if語句組成一條復合語句),直接輸
出,所以結果為0。
15、若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);
printf("%d,%d\n",m,i);}執行后的輸出結果是
A、8,6
B、8,3
C、6,4
D、7,4
標準答案:4
知識點解析:本題考查的知謖點是運算符的優先級.在復合賦值語句中,應該由右
向左依次賦值,在表達式中,右端由i*=k得i=2*2為4,k=k+i,即k值為6,m=k
故m=6.所以4個選項44c正確。
16、變量a已被定義為整型,下列表達式有錯的是
A、a='A'+20
B、a-='a'
C、a=c+d
D、a='c'+'d'
標準答案:4
知識點解析:暫無解析
17、已知字母A的ASCH參政值是65,字母a的ASCH碼值是97,以下程序列
omain(){chara='A';intb=20;printf(n%d,%o',,(a=a+a,a+b,b),a+,a'+,A,,b);}
A、表達式非法,輸出零或不確定值
B、因輸出項過多,無輸出或輸出不確定值
C、輸出結果為20,141
D、輸出結果為20,141,20
標準答案:4
知識點解析:本題中首先輸出逗號表達式“a=a+a,a+b,b”的值,即20。然后以八進
制的形式輸出a+匕的值為97對應的八進制數141,由于最后一個表達式b沒
7j對應輸出格式的輸出項表列就不會輸出。
18、IEEE802.3的物理層協議10BASE-T規定從網卡到集線器的最大距離為()
A、100m
B、185m
C、360m
D、500m
標準答案:1
知識點解析:暫無解析
19、在函數scanf的格式控制中,格式說明的類型與輸入項的類型應該對應匹配。
如果類型不匹配,系統將()。
A、不予接收
B、并不給出出錯信息,但不能得到正確的數據
C、能接收到正確輸入
D、給出出錯信息,不予接收輸入
標準答案:2
知識點解析:在scanf函數的格式控制中,格式說明的類型與輸入項的類型必須一
一對應匹配,如不匹配將導致數據輸入出現錯誤,但是系統并不報錯。
20、若有以下程序段intm=0xabc,n=0xabc;m-=n;printf("%X\n",m);執行后輸出結果
是
A、0X0
B、0x0
C、0
D、0XABC
標準答案:c
知識點常析:格式字符x或x是以十六進制無符號形式輸出整型數(不帶前導Ox或
OX)o對于x用abc輸出,X用ABC輸出。
21、以下能正確定義且賦初值的語句是。
A、intnl=n2=10:
B、charc=32;
C、floatf=f+l.l;
D、doublex=12.3E2.5;
標準答案:B
知識點解析:語句“intnl=n2=10;”中,由于變量n2未定義,所以此賦值語句錯
誤:由于賦值語句中不能存在運算表達式,所以選項C中的賦值語句錯誤;選項
D中指數表示錯誤,C語言規定,e后面的指數必須為整數;選項B中的“32”是
ASCII碼的表示形式,這是C語言中字符型數據和整型數據通用的表現,即一個字
符數據可以以字符形式出現,也可以以整數形式出現。
三、選擇題(2分)(本題共20題,每題1.0分,共20
分。)
22、若運行以下程序時,從鍵盤輸入ADescriptorVCR>(VCR>表示回車),則下
面程序的運行結果是()c#include<stdio.h>main(){chare;intv0=l,vl=0,v2=0;
do{switch(c=gctchar()){casc,a,:casc,A,:casc,c\case,E,:casc'i':cascT:
case,o,:case,O,:case'u':case'U':vl+=l:default:v0+=1;v2+=1;}}while(c!=,\n,);
printf(HvO=%d,vl=%d,v2=%d\n",v0,vI,v2);}
A^v0=7,vl=4,v2=7
B、v0=8,vl=4,v2=8
C、v0=ll,vl=4,v2=ll
D、v0-13,vl-4,v2=12
標準答案:D
知識點解析:本題考查的是switch語句的應用。分析程序,do-while語句是先執行
do后面的語句再判斷是否符合while的條件。V2+=l;語句無論讀入的是什么字母
(包括回車符),此語句都要執行,語句default:v()+=l;亦是如此;而語句
case,U,:vl+=l;只有在讀入的字母
是匕'、Q、E、T、T、4、'O'、3、P'時才會執行。
23、以下關于C語言數據類型的敘述中正確的是()。
A、C基本數據類型包括:分為整型、實型、浮點型、字符型四種
B、實型常量的表達方式包括十進制形式、十六進制形式、二進制形式、八進制形
式、指數形式
C、若要處理如“人員信息”等含有不同類型的相關數據,應自定義結構體類型
D、若只處理“真”和“假”兩種邏輯值,應使用邏輯類型
標準答案:C
知識點。析:C基本數據類型包括:分為整型、實型、枚舉型、字符型四種,實型
就是浮點型,實型數據只有十進制,沒有2,8,16進制表達,在C語言中沒有定
義邏輯類型,而是一般用0代表假,用非零代表真。
24、有下列程序:#include<stdio.h>main(){charcl,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&cl,&c2,&c3,&c4);c5=getchar();c6=getchar();
putchar(cl);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從
第1列開始):123<CR>45678<CR>則輸出結果是(
A、1267
B、1256
C、1278
D、1245
標準答案:D
知識點解析:當用scanf函數從鍵盤輸入數據時,每行數據的末尾按下回車鍵
(Enter鍵)之前,可以任意修改。但按下回車鍵putchar(cl)(Enter鍵)之后,scanf函
數即接受了這一行數據,不能再回去修改。所以本題中,當輸入I23VCR〉時,
變量cl、c2、c3的值分別為1、2、3,當輸入45678VCR〉時,變量c5、c6的值
4和5。所以用輸出函數putchar(cl)輸出1,putchar(c2)輸出2,
primf("%c%c\n”,c5,c6)輸出45。所以選項D)為正確答案。
25、已知大寫字母A的ASCH碼是65,小寫字母a的ASCII碼是97。下列不能將
變量c中的大寫字母轉換為對應小寫字母的語句是()。
A、c=(c-'A')%26+'a'
c=c+32
C、c=c?'A'+'a'
D、c=('A'+C)%26-'a,
標準答案:D
知識點解析:由題意可知,小寫字符a和大寫字符A的ASCH代碼相差為32,所
以選項C)能將大寫字符c的ASCII代碼轉換為小寫字符c的ASCII代碼;選項A)
和C)左側的表達式都是大寫字符c與大寫字符A的差與3的ASCII代碼的和就是
小寫字符c的ASCH代碼。而選項D)中應該是加上而不是減去匕\
26、下列選項中錯誤的說明語句是
A、chara[]={,t,/oVy7oVu7\0,};
B、charaU={"toyou\0"};
C、chara[]="toyou\0";
D、chara[]='toyou\0';
標準答案:D
知識點解析:通過賦初值的方式給一維數組賦字符串,可以用給一般數組賦初值的
相同方式給一維字符數組賦字符串,也可以在賦值時直接賦字符串常量。選項B)和
C)后面的、(T是多余的,在C語言中,系統會自動在字符串的結尾處加上一個字符、(T
作為串的結束標記。
27、需求分析階段的任務是確定_____o
A、軟件開發方法
B、軟件開發工具
C、軟件開發費用
D、軟件系統功能
標準答案:D
知識點解析:暫無解析
28、有以下程序:#include<stdio.h>main(){unsignedinta;intb=-l;a=b;
printf("%u”,a);程序運行后的輸出結果是()。
A、-1
B、65535
C、32767
D、-32768
標準答案:2
知識點0析:不同類型的對象進行混合運算時,需要進行數據的類型轉換,其轉換
方向為int—>unsigned—>long—>doublc<,本題程序中的變量b為int型,需要轉換為
unsigned型。ini型變量的數值范圍為?32768?32767,最高位為符號位,而
unsigned所表示的數的范圍為0~65535,它的最高位為數值位。由于內存中是以
補碼形式存儲數據的,所以整型數-1在內存中表示為16個1,最高位的1表示符
號為負,將它轉換為unsigned類型,即將原符號位的1看成數值,所以得到16個
數值1,即65535。
29、在int(*prt)[3];定義中,標識符prt().
A、定義不合法
B、是一個指針數組名,每個元素都是一個指向整型變量的指針
C、是一個指針,它指向一個具有三個元素的一維數組
D、是一個指向整型變量的指針
標準答案:4
知識點解析:此題的關鍵是要分清指針數組與指向一維數組指針之間的不同,題中
的說明語句定義了一個由針變量prl,它指向包含三個整數元素的一維數組。要注
意:*prt兩側的圓括號不能缺少,如果寫成*ptr[3],則ptr與⑶先結合,是數組,
然后再與前面的。號結合,則*ptr[3]將是一個指針數組。
30、有以下程序:main(){char*p[]={"3697","2584"};inti,j;longnum=0;for(i=0;i<
2;i++){j=0;while(p[i][j]!=,\0,){if((p[il[j]-,0,)%2)num=10*num+p[i][j]->0*;j+=2;}
printf("%d\n",num);}程序執行啟鬲輸出結果是()0
A、35
B、37
C、39
D、3975
標準答案:4
知識點解析:本題首先定義了一個字符指針數組p,然后使用一個兩重循環遍歷數
組p.因為內循環的循環變量j每次會加2,所以只能遍歷到數組p每行中列下標
為偶數的字符,它們是‘3,,夕、然后,將它們通過表達式轉換
為對應的整數3、9、2、8,并用%2來判斷該整數是否為奇數。所以最終能執行到
num=10*num+語句的只有,3,和,歹兩個字符。此時已不難算出,運行后
num中的值為39。故應該選擇C。
31、若輸入000051,卜列程序的運行結果為omain(){unsignedinta;
scanf("%o",&a);printf(H%o\n",getbits(a));}getbits(value)unsignedintvalue:
{inti,j,m,n;unsignedintz,a,q;z=0;for(i=1;i<=15;i+=2){q=l;
for(j=I;j<=(16-i-l)/2;j++)q=q*2;a=value>>(l6-i);a=a<<15;a=a>>
15;z=z+a*q;}return(z);}
A、6
B、51
C、51
D、10
標準答案:1
知識點解析:暫無解析
32、下列說法中,不正確的是。
A、主函數main中定義的變量在整個文件或程序中有效
B、不同函數中,可以使用相同名字的變量
C、形式參數是局部變量
D、在函數內部,可在復合語句中定義變量,這些變量只在本復合語句中有效
標準答案:1
知識點解析:暫無解析
33、若i和j已定義為int類型,則以下程序段中內循環體總的執行次數是o
for(i=5;i;i—)for(j=0;j<5;j++){...}
A、20
B、25
C、24
D、30
標準答案:2
知識點解析:對于第一個for語句.i從5至1,且對于第二個for語句.在i取5
至1的某個值時,j又從0變化至5。
34、有以下程序main。{char*s="abcde";s+=2;printf("%ld\nn,s);}程序運行
后的輸出結果是()
A、cde
B、字符c的ASCII碼值
C、字符c的地址
D、出錯
標準答案:4
知識點解析:暫無解析
35、若有下面的說明和定義,則sizeof(structaa)的值是structaa{intredouble
r2;floatr3;unionuu{charul[5];longu2[2])ua;)mya;
A、30
B、29
C、24
D、22
標準答案:8
知識點解析:結構體變量所占內存長度是各成員占的內存長度之和,每個成員分別
占有自己的內存單元;共用體變量所占的內存長度等于最長的成員的長度。結構體
變量aa中,成員rl占2個字節,「2占8個字節,「3占4個字節,共用體ua占8個
字節,所以共占用2+8+4+8=22個字節。
36、若有以下說明和定義:typcdetint1EGER;IN1EGERp,*q:以下敘述正確的
是()。
A、p是整型變量
B、p是基類型為整型的指針變量
C、q是基類型為整型的指針變量
D、程序中可用INTEGER代替int類型名
標準答案:2
知識點解析:本題中INTEGER被定義為im*的別名,故直接由它定義的類型基類
型為整型的指針變量。因此,p是基類型為int的指針變量,q是int型指針的指針
變顯。故4個選項中B正確。
37、若已定義的函數有返回值,則以下關于該函數調用敘述中錯誤的是
A、函數調用可以作為獨立的語句存在
B、函數調用可以作為一個函數的實參
C、函數調用可以出現在表達式中
D、函數調用可以作為一個函數的形參
標準答案:8
知識點解析:在c語言中規定,無返回值的函數調用,可以作為表達式或表達式的
一部分.也可以作為一條語句:而有返回值的函數調用只能作為一個函數的實參
(即將其返回值傳給相應的形參),而不能作為形參(因為形參是在函數定義時說明
的)。
38、以下程序運行后的輸出結果是ointd=l:fun(intp){staticintd=5:
d+=p;printf(M%d">D);returnd;)main()(inta=3;printf("%d\n,fun(a+fun(D)));|
A、699
B、669
C、61515
D、6615
標準答案:4
知識點解析:靜態局部變量在編譯時賦初值,即只賦初值一次,在程序運行時它已
有初值。以后每次調用時不再重新賦初值而只是保留上次函數調用結束時的值,而
對自動變量賦初值,不是在編譯時進行的,而在函數調用時進行,每調用一次函數
重新給一次初值,相當于執行一次賦值語句。本題在程序開頭定義了全局變量d并
賦初值1,在被調函數fun()中,定義了靜態局部變量d,初值為5。在第一次調用
函數fun時,d初值為5,p由主函數傳遞過來的值為1,則d=d+p=5+l=6,由于d
是靜態局部變量,在函數調用結束后,它仍保留d=6。再次調用fun函數,d的初
值為6,而由主函數傳遞的p的值為9,則此時d=d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【房屋租賃合同】街面房出租合同4篇
- 2025年裝修泥水工程承包合同2篇
- 7技術合同非專利技術轉讓合同3篇
- 景觀設計總結匯報
- 大米包裝設計調研報告
- 2025遼寧裝備制造職業技術學院輔導員考試試題及答案
- 2025貴州醫科大學輔導員考試試題及答案
- 2025貴陽幼兒師范高等專科學校輔導員考試試題及答案
- 2025萍鄉衛生職業學院輔導員考試試題及答案
- 2025甘肅建筑職業技術學院輔導員考試試題及答案
- 自動駕駛車輛的遠程監控與維護系統-全面剖析
- 排他協議合同協議
- 物聯網工程技術考研真題卷100道及答案
- 2024北京通州區三年級(下)期末語文試題及答案
- 2025-2030生鮮商超行業市場發展現狀及競爭形勢與投資前景研究報告
- 2025年四川省建筑安全員-B證考試題庫及答案
- GB/T 5453-2025紡織品織物透氣性的測定
- 臨床教學醫院發展規劃塑造未來醫療教育的新格局
- 第二單元第2課《律動青春》教學設計 -2024-2025學年人教版(2024)初中美術七年級下冊
- 杭州市拱墅區部分校教科版六年級下冊期末考試科學試卷(解析版)
- 《胸痛中心質控指標及考核標準》(第三版修訂版)
評論
0/150
提交評論