C語言筆試題中的那些坑(一)

2021-10-04 16:30:28 字數 2742 閱讀 5132

三.define中的那些坑

首先我們來說一下,strlen這個函式,相信大家都知道,不就是乙個求字串長度的函式嗎?

看看這道題,你是否會掉裡面…

char x[ ]=「abcdefg」;

char y[ ]=;

則正確的敘述為

a) 陣列x和陣列y等價 b) 陣列x和陣列y的長度相同

c) 陣列x的長度大於陣列y的長度 d) 陣列x的長度小於陣列y的長度

我第一次看到,義無反顧的選擇c,結果涼涼了

其實這道題的考點,在於字串末尾的結束符 『\0』 以及strlen函式,是否計算』\0』

我通過乙個程式給大家看一看

#include

#include

intmain()

;printf

("arr= %d str= %d\n"

,strlen

(arr)

,strlen

(str));

return0;

}

這裡為證

想必大家都知道了正確答案為d

那麼為什麼那,那個 14是哪來的?首先我們區分,strlen函式和sizeof 的區別

所以 x 字串的長度就是 7個字母的長度 7

char x=

"abcdefg"

;

而y 字串,因為後面沒有 『\0』 ,strlen 不會計算陣列的邊緣,越界後繼續找,直到找到 『\0』 為止,具體是多少,不一定在我這是14,在你們那可能是 10 等等,總之肯定是比 7 大的

char y=

;

首先 || 是邏輯運算子,而 | 是位運算子

先給大家看到題再說

設x,y,z,t均為int型變數,則執行以下語句後,t的值為

x=y=z=1;

t=++x||++y&&++z;

a) 不定值 b) 2 c) 1 d) 0

第一次做這個題真掉進去了直接選擇b,結果又涼了

我還是用程式給大家說明

#include

intmain()

執行結果

我們要理解下面兩點

我們看看這道題,執行的優先順序我用括號括起來,先看 ++x ,x=2,x不為0.所有為真,那麼運算的結果就為真,右邊的將不在看,因為沒有意義,所有y和z保持原來的值

t=

(++x)||(

++y&&

++z)

;

按位或運算子(|)參加運算的兩個數,按二進位制位進行「或」運算。

算規則:參加運算的兩個數只要兩個數中的乙個為1,結果就為1。

即 0 | 0= 0 , 1 | 0= 1 , 0 | 1= 1 , 1 | 1= 1 。

例:2 | 4 即 00000010 | 00000100 = 00000110

所以2 | 4的值為 6

按位與運算子(&)參加運算的兩個數,按二進位制位進行「與」運算。

運算規則:只有兩個數的二進位制同時為1,結果才為1,否則為0。(負數按補碼形式參加按位與運算)

即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1。

例:3 &5 即 00000011 & 00000101 = 00000001

所以 3 & 5的值為1

異或運算子(^)參加運算的兩個數,按二進位制位進行「異或」運算。

運算規則:參加運算的兩個數,如果兩個相應位為「異」(值不同),則該位結果為1,否則為0。

即 0 ^ 0=0 , 0 ^ 1= 1 , 1 ^ 0= 1 , 1 ^ 1= 0 。

例: 2 ^ 4 即 00000010 ^ 00000100 =00000110

所以 2 ^ 4 的值為6

有的簡單的筆試題會讓我們寫出 標準巨集 min;,為什麼要強調標準,一定一定要注意括號

#define min(a,b)   (((a)
給大家分享乙個例題

求答應的結果

#define sqr(x) x*x

main( )

像這種題我們之間挪下來,在看

a/= k+m * k+m / k+m * k+m

a/=2+12+1/2+12+1

a=9

則a的值為9,其實我嗎求出的 a 為 9.5 但是注意a的資料型別是 int 型的,所有為 9,這就是考察我們的細心程度

C語言筆試題中的「坑」

其實這話說的不對,應該說不只是c語言,恐怕是面試題總會有那麼一些坑等著我們踩,今天,就羅列了一些看似簡單,卻很容易中招的面試題 1 以下程式的執行結果為。inlcude define n 2 define m n 1 define num m 1 m 2 main a 5b 6c 8d 9 嘿嘿,當...

筆試題中的必勝策略

比如,題目是這樣的 現在有兩堆石子,小今與小條玩遊戲,2個人都足夠聰明,兩個人規定 每次每人只能從其中一堆中取走1個或2個或3個石子,最後將石子全部取完的人勝利.現在兩堆石子的個數為8和9,請問如何安排才能讓小今必勝?答案是 讓小今先取。其實這裡是有規律可循的,可歸結為 取餘制勝 詳解如下 一 取餘...

C語言筆試題紀錄(一)

下列不是linux系統程序型別的是 d a.互動程序b.批處理程序c.守護程序d.就緒程序 程序狀態 聯合體union的記憶體大小判斷 為其包含的成員的記憶體大小的最小公倍數 命令kill 9 的含義是 d a.kills the process whose pid is 9 b.kills all...