1.題目:unsigned int a = 0x1234;
unsigned char b = *(unsigned char *)&a;在
32位大端模式處理器上變數
b等於()?
a 0x00 b 0x12 c 0x34 d 0x1234
解析:int 是4
個位元組,大端儲存,所以補齊的話是
a = 0x00 00 12 34;而b
是char
型,按照大端儲存的話,就只取了
a中低位址中的一位,所以
b = 0x00.
2.設有以下的巨集定義,#define n 3
#define y(n) ((n+1)*n)
則執行語句:z = 2*(n + y(5+1));後,z
的值為:
48.
解析:巨集定義是直接替換,z = 2*(n + ((n+1)*5+1));
把n = 3
放進去是
48.
3.題目:將長度為n
的單鏈表連線到長度為
m的單鏈表之後,其演算法的時間複雜度為
o(m)
解析:首先指標要遍歷長度為m
的單鏈表,找到鍊錶的尾部,這時候時間複雜度為
o(m)
,再將長度為
n的鍊錶放在
m之後,這時候的時間複雜度為
o(1),
可忽略不計,所以總的時間複雜度為
o(m)
。時間複雜度是總運算次數表示式中受n
的變化量影響最大的那一項。
4.已知一算術表示式中的中綴表示式為a-(b+c/d)*e,
則字尾形式為:
abcd/+e*-。
解析:1)字首表示式的計算求值:
從右到左掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的運算,並將結果壓入棧,重複上面的過程,最後算出的就是表示式的結果。
如:「- * + 3,4
,5,6
」 l 從右至左掃瞄,將6、5
、4、3
壓入堆疊;
l 遇到+
運算子,因此彈出3和
4(3為棧頂元素,
4為次頂元素,注意與字尾表示式做比較),計算出
3+4的值,得
7,再將
7入棧;
l 接下來是×
運算子,因此彈出7和
5,計算出
7×5=35
,將35
入棧;l
最後是-
運算子,計算出
35-6
的值,即
29,由此得出最終結果。
將中綴表示式轉換為字首表示式:
2)字尾表示式的求值:
從左至右掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算(次頂元素op
棧頂元素),並將結果入棧;重複上述過程直到表示式最右端,最後運算得出的值即為表示式的結果。
例如「3 4 + 5 × 6 -」:
l 從左至右掃瞄,將3和4
壓入堆疊;
l 遇到+
運算子,因此彈出4和
3(4為棧頂元素,
3為次頂元素,注意與字首表示式做比較),計算出
3+4的值,得
7,再將
7入棧;
l 將5
入棧;
l 接下來是×
運算子,因此彈出5和
7,計算出
7×5=35
,將35
入棧;
l 將6
入棧;l 最後是-
運算子,計算出
35-6
的值,即
29,由此得
出最終結果。
將中綴表示式轉換為字尾表示式:
與轉換為字首表示式相似,遵循以下步驟:
(1) 初始化兩個棧:運算子棧
s1和儲存中間結果的棧s2;
(2) 從左至右掃瞄中綴表示式;
(3) 遇到運算元時,將其壓入s2;
(4) 遇到運算子時,比較其與
s1棧頂運算子的優先順序:
(4-1) 如果
s1為空,或棧頂運算子為左括號
「(」,則直接將此運算子入棧;
(4-2) 否則,若優先順序比棧頂運算子的高,也將運算子壓入
s1(注意轉換為字首表示式時是優先順序較高或相同,而這裡則不包括相同的情況);
(4-3) 否則,將
s1棧頂的運算子彈出並壓入到
s2中,再次轉到
(4-1)與s1
中新的棧頂運算子相比較;
(5) 遇到括號時:
(5-1) 如果是左括號
「(」,則直接壓入s1;
(5-2) 如果是右括號
「)」,則依次彈出
s1棧頂的運算子,並壓入
s2,直到遇到左括號為止,此時將這一對括號丟棄;
(6) 重複步驟
(2)至
(5),直到表示式的最右邊;
(7) 將
s1中剩餘的運算子依次彈出並壓入s2;
(8) 依次彈出
s2中的元素並輸出,結果的逆序即為中綴表示式對應的字尾表示式**換為字首表示式時不用逆序)。
5.題目:c++中,如果
x是整型變數,則合法的形式為(
*&a)
a、 &(
a + 1
)b、
*a;c、
&*ad、
*&a解析:
x是整型變數,有乙個儲存位址
,變數不能隨便取位址。
a,x有位址,但是
x+5這個表示式不能取位址操作b,*
是取指標變數指向的內容,
x不是指標,錯誤c,c
選項中也包含
*x,道理同
b選項,是錯誤的d,x
變數先去位址,得到指向
x的指標
:&x然後再用
*操作符取該位址的內容,結果還是
x,是合法的。
牛客網(面試題)
每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。hf作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的 首先,讓小朋友們圍成乙個大圈。然後,他隨機指定乙個數m,讓編號為0的小朋友開始報數。每次喊到m 1的那個小朋友要出列唱首歌,然後可以在禮品箱中任意的挑選禮...
跳台階 牛客網面試題
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 當每次只跳一級台階時,只有一種情況 當每次只跳兩級台階時,也是只有一種情況 當又跳一級台階又跳兩級台階時,我們可以假設第一步跳一級台階,那麼後面的所有的跳法為f n 1 當第一步跳兩級...
c 華為面試題 牛客網 3 0
越做越覺得非科班出身的艱難。要不還是老老實實畫圖去?好吧 再來一題 給出乙個名字,該名字有26個字串組成,定義這個字串的 漂亮度 是其所有字母 漂亮度 的總和。每個字母都有乙個 漂亮度 範圍在1到26之間。沒有任何兩個字母擁有相同的 漂亮度 字母忽略大小寫。給出多個名字,計算每個名字最大可能的 漂亮...