1、微機中1K字節表示的二進制位數是()
A、1000 B、0X1000 C、1024 D、0X1024
2、設C語言中,一個int型數據在內存中占2個字節,則unsigned int 型數據的取值范圍為()
A、0--- 255 B、0--- 32767 C、0--- 65535 D、0--- 2147483647
3、在C語言中,要求運算數必須是整型的運算符是()
A、/ B、++ C、|= D、%
4、下面程序段的運行結果是()
- char c[5] = {'a','b','\0','c','\0'};
- printf("%s",c);
A、'a"b' B、ab C、ab_c D、ab_c_ (其中_表示空格)
5、下列關於數組的初始化正確的是()
A、 char str[2] = {"a","b"}
B、 char str[2][3] = {"a","b"}
C、 char str[2][3] = {{'a','b'},{'e','f'},{'g','h'}}
D、 char str[] = {"a","b"}
6、判斷字符串a和b是否相等,應當使用()
A、if(a==b) B、if(a=b) C、if(strcpy(a,b)) D、if(strcmp(a,b))
7、一直inta[3][4];則下列能表示a[1][2]元素值的是()
A、*(*(a+1)+2) B、*(a+1+2) C、(&a[0]+1)[2] D、*(a[0]+1)
8、若希望當A的值為奇數時,表達式的值為真,A的值為偶數時,表達式的值為假,則以下不能滿足要求的表達式是()
A、A%2==1 B、!(A%2==0) C、!(A%2) D、A%2
9、以下哪項可以用來釋放 p = malloc() 分配的內存()
A、free(p) B、delete p C、delete []p D、sizeof p
10、下列有關靜態成員函數的描述中,正確的是()
A、靜態數據成員可以再類體內初始化
B、靜態數據成員不可以被類對象調用
C、靜態數據成員不受private控制符作用
D、靜態數據成員可以直接用類名調用
11、按e1、e2、e3、e4的次序進棧(中間可能有出棧操作,例如e1進棧后出棧,e2再進棧),則可能的出棧序列是()
A、e3、e1、e4、e2 B、e2、e4、e3、e1 C、e3、e4、e1、e2 D、任意序列
12、某二叉樹結點的中序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E,該二叉樹對應的樹林包括多少棵樹()
A、1 B、2 C、3 D、4
13、單鏈表的每個結點包括一個指針link,它指向該結點的后繼結點,現要將指針q指向的新結點插入到指針p指向的單鏈表結點之后,下面的操作序列中哪一個是正確的?
A、q = p->link; p->link = q->link
B、p->link = q->link; q = p->link
C、q->link = p->link; p->link = q
D、p->link = q; q->link = p->link;
14、函數原型void fun(int a,int b=5,char c='*');下面的調用中不合法的是()
A、fun(4,1) B、fun(99) C、fun(11,2,'a') D、fun(15,'*')
15、以下敘述中不正確的是()
A、在不同的函數中可以使用相同名字的變量
B、函數中的形式參數是局部變量
C、在一個函數內定義的變量只在本函數范圍內有效
D、在一個函數內的復合語句中定義的變量在本函數范圍內有效(只在復合語句中有效)
16、設有一下宏定義:
#define N 3
#define Y(n) ((N+1)*n)
則執行語句:z=2*(N+Y(5+1))后的z值為()
A、38 B、42 C、48 D、54
17、以下程序程序的運行結果是()
- int main(void)
- {
- char a[]={"programming"},b[]={"language"};
- char *p1,*p2;
- int i;
- p1=a,p2=b;
- for(i=0;i<7;i++)
- {
- if(*(p1+i)==*(p2+i))
- printf("%c",*(p1+i));
- }
- return 0;
- }
A、gm B、rg C、or D、ga
18、若有以下程序段:
- int a[]={4,0,2,3,1},i,j,t;
- for(i=1;i<5;i++)
- {
- t=a[i];
- j=i-1;
- while(j>=0 && t>a[j])
- {
- a[j+1]=a[j];
- j--;
- }
- a[j+1]=t;
- }
A、對數組a進行插入排序(升序)
B、對數組a進行插入排序(降序)
C、對數組a進行選擇排序(升序)
D、對數組a進行選擇排序(降序)
19、以下程序的輸出結果是()
- #define P 3
- int F(int x)
- {
- return (P*x*x);
- }
- void main()
- {
- printf("%d\n",F(3+5));
- }
A、49
B、192
C、29
D、77
20、以下代碼中,A的構造函數和析構函數分別執行了幾次()
A *pa = new A[10];
delete []pa;
A、1、1 B、10、10 C、1、10 D、10、1
21、在順序表{3、6、8、10、12、15、16、18、21、25、30}中,用二分法查找關鍵碼值11,所需的關鍵碼比較次數是()
A、2 B、3 C、4 D、5
22、若int占2個字節,char 占1個字節,float占4個字節,sizeof(xc)的大小是()
- struct stu
- {
- union
- {
- char b[5];
- int bh[2];
- }class;
- char xm[8];
- float cj;
- }xc;
A、16 B、18 C、20 D、22
23、設二叉樹根結點的層次為0,一棵深度(高度)為k的滿二叉樹和同樣深度的完全二叉樹各有f個結點和c個結點,下列關系式不正確的是()
A、f >= c B、c > f C、f=2^k+1 D、c>2k-1
24、關於引用和指針的區別,下列敘述錯誤的是()
A、引用必須初始化,指針不必
B、指針初始化以后不能被改變,引用可以改變所指的對象
C、刪除空指針是無害的,不能刪除引用
D、不存在指向空值的引用,但是存在指向空值的指針
25、屬於網絡層協議的是()
A、IP B、TCP C、ICMP D、X.25
26、STL中的哪種結構在增加成員時可能會引起原有數據成員的存儲位置發生變動()
A、map B、set C、list D、vector
27、windows消息調度機制是()
A、指令隊列 B、指令堆棧 C、消息隊列 D、消息堆棧
28、在排序方法中,關鍵碼比較次數和記錄的初始排列無關的是()
A、Shell排序 B、歸並排序 C、直接插入排序 D、選擇排序
29、假設A為抽象類,下列聲明()是正確的
A、A fun(int ); B、A *p; C、int fun(A) D、A Obj;
30、如果類的定義如下,則以下代碼正確並且是良好編程風格的是()
A、std::auto_ptr<Object> pObj(new Object);
B、std::vector<std::auto_ptr<Object*>> object_vector;
C、std::auto_ptr<Object*> pObj(new Object);
D、std::vector<std::auto_ptr<Object>> object_vector;
二、填空題
1、寫出float x 與零值比較的if語句。
2、在32位系統中,char str[]="xuelei"; char *p = str; sizeof(str)=() ,sizeof(p)=() ,sizeof(*p)=()
3、Internet物理地址和IP地址轉換采用什么協議?
4、char a[2][2][3] = {{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}}};
for(int i = 0;i<12;i++)
printf("%d", );
在空格處填上合適的語句,順序打印出a中的數字。
5、以下函數查找一個整數數組中第二大的數,請填空。
- const int MINNUMBER = -32767;
- int find_sec_max(int data[],int count)
- {
- int maxnumber = data[0];
- int sec_max = MINNUMBER;
- for(int i = 1;i < count; i++)
- {
- if(data[i] > maxnumber)
- {
- }
- else
- {
- if(data[i] > sec_max)
- }
- }
- return sec_max;
- }
6、下面程序可從1....n中隨機輸出m個不重復的數,請填空。
- knuth(int n,int m)
- {
- srand((unsigned)time(NULL));
- for(int i = 0;i < n;i++)
- {
- if(_________)
- {
- cout<<i<<"\n";
- ______________
- }
- }
- }
7、以下prim函數的功能是分解質因數,請填空。
- void prim(int m,int n)
- {
- if(m>n)
- {
- while(_________) n++;
- ______________;
- prim(m,n);
- cout<<n<<endl;
- }
- }
- void main()
- {
- int n = 435234;
- prim(n,2);
- }
8、程序改錯。
- int fun(vector<int>& val)
- {
- copy(val.begin() , val.end() , ostream_iterator<int>(cout,"\n"));
- ......
- }
- void main()
- {
- int a[5] = {1,2,3,4,5};
- vector<int> v;
- copy(a , a + 5 , v.begin());
- fun(vector<int>(v));
- prim(n,2);
- }
9、C++中const有什么用途(至少說出三種):
10、下面程序的功能是輸出數組的全排列,請填空。
- void perm(int list[],int k,int m)
- {
- if(_______)
- {
- copy(list,list+m,ostream_iterator<int>(cout," "));
- cout<<endl;
- return ;
- }
- for(int i = k ; i <= m ; ++i)
- {
- swap(&list[k] , &list[i]);
- ______________;
- swap(&list[k] , &list[i]);
- }
- }
- void main()
- {
- int list[] = {1,2,3,4,5};
- perm(list,0,sizeof(list)/sizeof(int)-1);
- }
參考答案(歡迎討論)轉載請注明來源http://www.cnblogs.com/jerry19880126/
選擇:
- A。網友給的答案,我不知道“二進制位數”是什么意思。
- C。0至2^16-1。
- D。
- B。字符串輸出遇’\0’終止。
- B。A中應是單引號,C的維數反了,D和A錯的一樣。
- D。A比較的是首地址而不是內容。
- A。B是a[3]地址,C是越界了,D是a[0][1]。
- C。
- A。B和C是針對new的。注意C中的malloc和free是一對,C++中的new和delete是一對。
- D。靜態成員是類的,只有一份,被每個對象共享。
- B。類似於微軟實習生的考題。
- B。先畫出這個二叉樹的結構,根是E,左孩子是A,A只有右孩子C,C的左孩子是B,右孩子是D,E的右孩子是G,G的左孩子是F。再將之轉成樹林。轉換方法:斷開根結點與右孩子的連線,以及右孩子與右孩子的連線……,得到若干棵根結點無右孩子的二叉樹。這里斷開后可以得到兩棵樹。
- C。
- D。缺省值不可跳躍。
- C or D。網友給的答案是C,但我覺得是D。
- C。
- D。
- B。跟着程序走幾步就知道了。
- B。與宏不一樣,形參傳遞時是先算出來的。
- B。
- B。比較發生在15,8,10和12的位置上。
- C。union是取其中最大的字節,即char b[5]的5字節,但需要2字節的對齊(struct和union都有字節對齊的問題),所以union占了6字節,外面看struct的對齊數,最大的是float的4字節,所以按四字節對齊,這樣union補齊成8字節(4的倍數),8+8+4=20字節。
- A。A和B是矛盾的,所以答案就在A、B里選,滿二叉樹一定是完全二叉樹,滿結點個數>=完全二叉樹,故選B。
- B。
- A。B是傳輸層的(還有UDP協議),C其實也是網絡層的(所以如果是多選題C也可以選),D是物理層的。
- D。vector是用動態數組實現的,當容量不夠時會擴容,導致存儲位置變化,其他是用鏈表實現的,所以不會出現擴容的問題。
- C。是隊列而不是棧,應該是先來先服務。
- D。選擇排序都是要遍歷一遍的。
- B。抽象類不能有對象,若在A和C選項中的A后面加上&就是對的。
- A。(網友沒有給答案,我覺得是A,可以自行百度一下)。
填空:
- if( fabs(x) < 0.0000001)。
- 7, 4, 1 見騰訊筆試的解釋。
- 物理地址轉IP地址用RARP協議(Reverse Address Resolution Protocal)。反之用ARP協議。
- a[i/6][i/3%2][i%3]。
- 第一個if下面:sec_max=max_number; maxnumber=data[i]; 第二個if下面:sec_max=data[i]。
- 第一個空: rand()%(n-i)<m 第二個空:--m。
- 第一個空: m%n!=0; 第二個空: m/=n。
- 第11行,改成fun(v)。
- 防止變量被修改,防止指針指向被修改,防止類成員被修改。
- 第一空k>m,第二空perm(list, k+1, m),具體見百度筆試題的最后一題。
