轉(zhuǎn)自:http://blog.csdn.net/ztj111/archive/2007/10/20/1834284.aspx
1.下列程序的輸出結(jié)果為:(B)
#include<iostream.h>
void main()
{
char* a[ ] = { "hello", "the", "world"};
char** pa = a;
pa++;
cout<<”*pa<<endl;
}
A) theworld B) the C) ello D) ellotheworld
2. 已知二叉樹后序遍歷序列是bfegcda,中序遍歷序列是badefcg,它的前序遍歷序列是:(B)
A) abcdefg B) abdcefg C) adbcfeg D) abecdfg
3. 棧和隊(duì)列的共同特點(diǎn)是:(C)
A) 都是先進(jìn)先出 B) 都是先進(jìn)后出
C) 只允許在短點(diǎn)處插入和刪除元素 D) 沒有共同點(diǎn)
4. 下面程序的運(yùn)行結(jié)果為:(A)
#include <iostream.h>
void main()
{
int a, x;
for(a = 0, x = 0; a<=1 && !x++; a++)
{
a++;
}
cout<< a << x <<endl;
}
A) 21 B) 22 C) 32 D) 41
5. 下列選項(xiàng),不正確的是:(B) while后沒有分號
A) for(int a=1; a<=10; a++);
B) int a=1;
do
{
a++;
}while(a<=10)
C) int a=1;
while(a<=10)
{
a++;
}
D) for(int a= 1; a<=10; a++)a++;
6. 下面關(guān)于數(shù)組的初始化正確的是:(B)
A) char str[2] = {“a”,”b”};
B) char str[2][3]={“a”,”b”};
C) char str[2][3]={{‘a’,’b’},{‘e’,’d’},{‘e’,’f’}};
D) char str[] = {“a”, “b”};
7. 下列說法正確的是:(B)
A) 內(nèi)聯(lián)函數(shù)在運(yùn)行時是將該函數(shù)的目標(biāo)代碼插入每個調(diào)用該函數(shù)的地方
B) 內(nèi)聯(lián)函數(shù)在編譯時是將該函數(shù)的目標(biāo)代碼插入每個調(diào)用該函數(shù)的地方
C) 類的內(nèi)聯(lián)函數(shù)必須在類體內(nèi)定義
D) 類的內(nèi)聯(lián)函數(shù)必須在類體外通過關(guān)鍵字inline定義
8.下面對靜態(tài)成員的描述中,正確的是:(D)
A) 靜態(tài)數(shù)據(jù)成員可以在類體內(nèi)初始化
B) 靜態(tài)數(shù)據(jù)成員不可以被類的對象調(diào)用
C) 靜態(tài)數(shù)據(jù)成員不能受private控制符的作用
D) 靜態(tài)數(shù)據(jù)成員可以直接用類名調(diào)用
9. 下列運(yùn)算符中,在C++語言中不能重載的是:(C)
A) * B) >= C) :: D) delete
10 下面關(guān)于多態(tài)性的描述,錯誤的是:(C)
A) C++語言的多態(tài)性分為編譯時的多態(tài)性和運(yùn)行時的多態(tài)性
B) 編譯時的多態(tài)性可通過函數(shù)重載實(shí)現(xiàn)
C) 運(yùn)行時的多態(tài)性可通過模板和虛函數(shù)實(shí)現(xiàn) //模板的是編譯時多態(tài)性,而虛函數(shù)是運(yùn)行時
D) 實(shí)現(xiàn)運(yùn)行時多態(tài)性的機(jī)制稱為動態(tài)綁定
11. 如果進(jìn)棧序列為e1,e2,e3,e4,e5,則可能的出棧序列是:(D)
A) e3,e2,e5,e4,e1
B) e2,e3,e5,e4,e1
C) e3,e2,e4,e5,e1
D) 以上都有可能
12 下面關(guān)于類和對象的描述中,錯誤的是:(A)
A) 類就是C語言中的結(jié)構(gòu)體類型,對象就是C語言中的結(jié)構(gòu)體變量
B) 類和對象之間的關(guān)系是抽象和具體的關(guān)系
C) 對象是類的實(shí)例,一個對象必須屬于一個已知的類
D) 類是具有共同行為的若干對象的統(tǒng)一描述體
13.下面關(guān)于數(shù)組的描述錯誤的是:(D)
A) 在C++語言中數(shù)組的名字就是指向該數(shù)組第一個元素的指針
B) 長度為n的數(shù)組,下標(biāo)的范圍是0-n-1
C) 數(shù)組的大小必須在編譯是確定
D) 數(shù)組只能通過值參數(shù)和引用參數(shù)兩種方式傳遞給函數(shù)
注釋:
在把數(shù)組作為參數(shù)傳遞給函數(shù)時,有值傳遞(by value)和地址傳遞(by reference)兩種方式。
在值傳遞方式中,要在數(shù)組參數(shù)的尾部加上一對方括號([]),調(diào)用函數(shù)時只需將數(shù)組的地址(即數(shù)組名)傳遞給函數(shù)。
例如:如果數(shù)組x被聲明為:int x[10];
那麼函數(shù)被說明為:void byval_func(int[]);
參數(shù)int[]告訴編譯程序byval_func()函數(shù)只有一個參數(shù),即一個由int型值組成的數(shù)組。
函數(shù)調(diào)用時只需將數(shù)組名傳遞給函數(shù):byval_func(x);
#include <stdio.h>
void byval_func(int[]);
void main(void);
void main(void)
{
int x[10];
int y;
for(y=0;y<10;y++)
x[y]=y;
byval_func(x);
}
void byal_func(int i[])
{
int y;
for(y=0;y<10;y++)
printf("%d\n",i[y]);
}
在值傳遞方式中,數(shù)組x將被復(fù)制一份,復(fù)制所得的數(shù)組將被存放在棧中,然后由byval_func()函數(shù)接收并打印出來。由於傳遞給byval_func()函數(shù)的是初始數(shù)組的一份拷貝,因此在byval_func()函數(shù)內(nèi)部修改傳遞過來的數(shù)組對初始數(shù)組沒有任何影響。
值傳遞方法的開銷是很大的,因?yàn)槭紫人暾貜?fù)制初始數(shù)組并將這份拷貝存放到棧中,這將耗費(fèi)相當(dāng)可觀的運(yùn)行時間, 因而值傳遞方法效率較低;其次,初始化數(shù)組的拷貝需要占用額外的內(nèi)存空間(棧中的內(nèi)存);最后,編譯程序需要專門產(chǎn)生一部分用來復(fù)制初始數(shù)組的代碼,這將使程序變大。
地址傳遞方法克服了值傳遞方法的缺點(diǎn)。在地址傳遞方法中,傳遞給函數(shù)的是指向初始數(shù)組的指針,不用復(fù)制數(shù)組,因此程序變得簡練,也節(jié)省了棧中的內(nèi)存空間。在地址傳遞過程中,只需在函數(shù)原形中將函數(shù)的參數(shù)說明為指向數(shù)組元素?cái)?shù)據(jù)類型的一個指針。
例如同樣定義一個數(shù)組x:int x[10];
那麼函數(shù)被說明為:int const_funt(const int*);
參數(shù)const int*告訴編譯程序const_funt()函數(shù)只有一個參數(shù),即指向一個int類型常量的指針。
函數(shù)調(diào)用時只需將數(shù)組的地址傳遞給函數(shù):const_func(x);
#include <stdio.h>
void const_func(const int*);
void main(void);
void main(void)
{
int x[10];
int y;
for(y=0;y<10;y++)
x[y]=y;
constl_func(x);
}
void const_func(const int*i)
{
int y;
for(y=0;y<10;y++)
printf("%d\n",*(i+y));
}
在值傳遞方式中,沒有復(fù)制初始數(shù)組并將其拷貝存放在棧中,const_func()函數(shù)只接收到指向一個int類型常量的指針,因此在編寫程序時要保證傳遞給const_func()函數(shù)的是指向一個由int類型常量組成的數(shù)組的指針。const修飾符的作用是防止意外修改初始數(shù)組中的某一個元素。
14. 引用標(biāo)準(zhǔn)庫時,下面的說法你認(rèn)為哪個是正確的:(B)
A) 語句#include “stdlib.h”是正確的,但會影響程序的執(zhí)行速度
B) 語句#include <stdlib.h>是正確的,而去程序執(zhí)行速度比#include “stdlib.h”要快
C) 語句#include <stdlib.h>和#include “stdlib.h”都是正確的,程序執(zhí)行速度沒有區(qū)別
D) 語句#include “stdlib.h”是錯誤的
注釋:include ""是先從本地目錄開始尋找,然后去尋找系統(tǒng)路徑,而Include <> 相反先從系統(tǒng)目錄,后從本地目錄,
15.設(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)運(yùn)算后,n的值為:(C)
A) 0 B) 1 C) 2 D) 7
16.不能作為重載函數(shù)的調(diào)用的依據(jù)是:(C)
A) 參數(shù)個數(shù) B) 參數(shù)類型
C) 函數(shù)類型 D) 函數(shù)名稱
17.下列程序的輸出結(jié)果為: (D)
#include< iostream. h>
int func(int n)
{
if〔n<1)return 1;
else return n+func(n-1);
return 0;
}
void main()
{
cout<<func(5)<<endl;
}
A) 0 B)10 C)15 D)16
18. 建立派生類對象時,3種構(gòu)造函數(shù)分別是a(基類的構(gòu)造函數(shù))、b(成員對象的構(gòu)造函數(shù))、c(派生類的構(gòu)造函數(shù))這3種構(gòu)造函數(shù)的調(diào)用順序?yàn)? (A)
A)abc B)acb
C)cab D)cba
19. 如果友元函數(shù)重載一個運(yùn)算符時,其參數(shù)表中沒有任何參數(shù)則說明該運(yùn)算符是:(D)
A)一元運(yùn)算符 B)二元運(yùn)算符
C)選項(xiàng)A)和選項(xiàng)B)都可能 D)重載錯誤
解析:C++中用友元函數(shù)重載運(yùn)算符至少有一個參數(shù),重載一目運(yùn)算符要有一個參數(shù),重載二目運(yùn)算符要有兩個參數(shù)。
20. 有以下程序段:(D)?
#define F(X,Y) (X)--; (Y)++ (X)*(Y);
…
int i, a = 3, b = 4;
for( i = 0; i<5; i++) F(a,b)
printf(“%d, %d”, a, b);
輸出結(jié)果是:()
A) 3, 4 B) 3, 5
C) -2, 5 D) -2, 9
21. 下列for循環(huán)的循環(huán)體執(zhí)行次數(shù)為:(A)
for(int i(10), j(1); i=j=0; i++, j--)
A) 0; B) 1; C) 無限; D)以上都不對
22. 下面程序的輸出結(jié)果是(D)
char *p1= “123”, *p2 = “ABC”, str[50]= "xyz";
strcpy(str+2,strcat(p1,p2));
cout << str;
A)xyz123ABC B)z123ABC
C)xy123ABC D)出錯
23.下面函數(shù)的執(zhí)行結(jié)果是輸出(B)
char str[ ] = “xunlei”;
char *p = str;
int n = 10;
printf(“%d, %d, %d\n”, sizeof(str), sizeof(p), sizeof(n));
A) 4, 4, 4 B) 7, 4, 4
C) 6, 4, 4 D) 6, 6, 4
33. 有下列程序段:
char *p, *q;
p = (char*) malloc(sizeof(char) * 20);
q = p;
scanf(“%s %s”, p, q);
printf(“%s %s\n”, p, q);
若從鍵盤輸入:abc def, 則輸出結(jié)果是(A)
A) def def B) abc def
C) abc d D) d d
解析:q=p;因此p,q指向的是同一段內(nèi)存.scanf先是把a(bǔ)bc寫到p指向的空間,再把def寫到q指向的空間,也就是同一段空間,因此abc被def覆蓋了.
34.現(xiàn)在有以下語句:
struct _THUNDER{
int iVersion;
char cTag;
char cAdv;
int iUser;
char cEnd;
}Thunder;
int sz = sizeof(Thunder);
則執(zhí)行后,變量sz的值將得到(D)
A) 11 B) 12 C) 13 D) 16
35. 有如下程序段:
void GetMemeory(char* p)
{
p = (char*) malloc (100);
}
void test()
{
char *str=NULL;
GetMemory(str);
strcpy(str,”Thunder”);
strcat(str+2, “Downloader”);
printf(str);
}
請問運(yùn)行Test函數(shù)結(jié)果是:(D)
A) Thunder Downloader B) under Downloader
C) Thunderownloader D) 程序崩潰
解析:在函數(shù)中給指針分配空間,實(shí)際上是給指針的臨時變量分配空間,函數(shù)結(jié)束后,這個臨時變量也消亡,而str仍然為NULL,沒有為其分配空間,此時strcpy()是肯定會出錯的。
36. 函數(shù)調(diào)用exec((v1,v2), (v3,v4,v5),v6,v7);中,實(shí)參的個數(shù)是(A)
A) 4 B) 5 C) 6 D) 7
37. p是指向類X的成員m的指針,s是類X的一個對象。現(xiàn)要給m賦值,(C)是正確的。
A) s.p = 5 B) s->p = 5
C) s.*p = 5 D) *s.p = 5
38. 函數(shù)fun(char* p) { return p;}的返回值是(B)
A)無確切值 B) 行參p中存放的地址值
C) 一個臨時存儲單元的地址 D) 行參p自身的地址值
39.a(chǎn),b均為不等于0的整形變量,以下關(guān)系式恒成立的是:(C)
A) a*b/a*b == 1 B) a/b*b/a == 1
C) a/b*b + a%b == a D) a/b*b == a
40. 設(shè)有如下說明:
typedef struct ST{ long a; int b; char c[2]; } NEW;
則下面敘述中正確的是:(C)
A)以上的說明形式非法 B)ST是一個結(jié)構(gòu)體類型
C)NEW是一個結(jié)構(gòu)體類型 D)NEW是一個結(jié)構(gòu)體變量
41. 下列表達(dá)式正確的是:(C)
A) 9++ B) (x+y)++ C) c+++c+++c++ D) ++(a-b--)
42.在int b[ ][3] = {{1},{3,2},{4,5,6},{0}};中,sizeof(b) = (D)。
A) 4 B) 12 C) 28 D) 48
43.以下程序的輸出結(jié)果是:(D)
#define M(x,y,z) x*y+z
main()
{
int a=1, b=2, c=3;
printf(“%d\n”,M(a+b,b+c,c+a));
}
A)19 B) 17 C) 15 D) 12
44.若有以下定義和語句:
int u=010, v= 0x10, w=10;
printf(“%d,%d,%d\n”,u,v,w);
則輸出結(jié)果是:(A)
A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,10
45. 下面程序段的輸出結(jié)果是:(B)
int a=5, b=4, c=3, d=2;
if(a>b>c)
printf(“%d\n”,d);
else if((c-1>=d)==1)
printf(“%d\n”, d+1);
else
printf(“%d\n”, d+1);
A) 2 B) 3 C) 4 D) 編譯錯誤
46.有如下程序段,請問k的值是:(D)
enum {a, b=5, c, d=4, e} k; k =c;
A) 3 B)4 C) 5 D) 6
47.有如下程序段:
int i, n = 0;
double x = 1, y1 = 2.1/1.9, y2 = 1.9/2.1;
for( i = 1; i<22; i++)
x = x*y1;
while( x!=1.0)
{
x =x*y2;
n++;
}
printf(“%d\n”, n);
請問執(zhí)行結(jié)果是:(A)
A) 21 B) 22 C)無限循環(huán) D) 程序崩潰
48. 用樹形結(jié)構(gòu)表示實(shí)體之間聯(lián)系的模型是(C)
A) 關(guān)系模型 B) 網(wǎng)狀模型 C) 層次模型 D)以上三個都是
49.有如下程序段:
char fun(char *);
main()
{
char *s = “one”, a[5] = {0}, (*f1)(char *) = fun, ch;
}
則對函數(shù)fun的調(diào)用語句正確的是(C)
A) *f1(&a); B) f1(*s); C) f1(&ch) D) ch = *f1(s);要改成(*f1)(s)才正確
50.有如下程序段:
int c = 23;
printf(“%d\n”, c&c);
請問執(zhí)行結(jié)果是:(C)
A) 0 B) 46 C) 23 D) 以上都不對