c語言又遇到難以理解的部分

2025-03-02 09:10:28 字數 3587 閱讀 9950

1樓:

#include ""

標準庫標頭檔案,程式中用到了標準庫裡的函式,則要加它,因為標頭檔案含有函式原型宣告及常量。

#include ""

時間函式庫標頭檔案,用到 time(null), time函式是時間函式庫裡的函式,所以舉洞要加它,因為標頭檔案含有函式原型宣告及常量。

int limit=20;) 給值20的原因是因為用於模運算世兆:

rand() limit

模運算是做除法取餘數運算。

rand() limit 的結果必然在 0到19之間。

chosen=1+rand()%limit;) 的結果必然在1到20之間。

也就正返枯是打算在1到20之間取隨機數。

srand(time(null));以現在時間作產生偽隨機數序列的種子,這就保證不同時刻執行程式能得到新的偽隨機數序列。

time(null); 時間函式,送返現在計算機時間。

srand(),置入偽隨機數序列「種子」(seed).

c語言中很難理解的部分

2樓:古弘文欒琦

首先應該明白,位運算是指對二進位位進行的運算(言下之意是要對其他進位數與二進位數的轉換熟練掌握才能更好的理解),運算物件只能是整型數或字元型資料而非其他。位運算結果為整型資料。下面是各位運算子的介紹:

1、&,是指參與運算的兩數對應位相與,也就是對應位都是1,則該位結果為1,否則為0.如,3&5運算過程如下:3&5的值為1

十進位無符號數3)

十進位無符號數5)

2、|,是指參與運算的兩數對應位相或,也就是對應位都是0,則該位結果為0,否則為1.如,3|5運算過程如下:3|5的值為7

十進位無符號數3)

十進位無符號數5)

3、^,是指參與運算的兩數對應位相異或,也就是對應位都相同,則該位結果為0,否則為1.如,3^5運算過程如下:3^5的值為6

十進位無符號數3)

十進位無符號數5)

4、~,是指將乙個二進位數按位取反,也就是1變0,0變1。如,~a運算過程如下:~a的值為(假定有int

a=3)-4

十進位無符號數3)

是指將該符號左邊的二進位位全部左移該符號右邊指定的若干位,左邊移出的位丟失,右邊空出的位用0補充。左移沒溢位時,移n位相當於該數乘以2的n次方。如,4<<2,運算過程如下。

6、>>是指將該符號左邊的二進位位全部右移該符號右邊指定的若干位,左邊空出的位補原最左邊的那位的值(有的編譯系統補0)。右移n位相當於將該數除以2的n次方。如,4<<2運算過程如下:

注:對於有符號數,在右移時,符號位將隨同移動。符號位為1,最高位是補0或是補1

取決於編譯系統的規定。turbo

c和很多系統規定為補1。)

我也是個初學者,說的不對的地方希望多多指教。

補充:1、按位與運算常用於取乙個數中的某些指定位。如取整型數a的低8位,只要用a和0377按位與就可以了。

2、按位或運算常用於將乙個數的某些位置1。如將整型數a的低8位全置1,只要用a和0377按位或即可。

3、按位異或運算常將乙個數的某些位翻轉,即0變1,1變0.如:將整型數a的低8位翻轉,只要用a和0377按位異或即可。另外也可以不用中間變數實現兩個變數值的交換。設有int

a=3,b=4;交換a和b的值可以有:a=a^b;b=b^a;a=a^b;實現。

3樓:關冬靈環厚

首先樓主要知道二進位:

位運算分:與&(1&1=1

或|(1|0=1

取反~(~1=0

異或^(1^0=1

相同為0,不同為1

移位<<

右邊加2個0,左邊去掉兩位)

左邊加2個0,右邊去掉兩位)

4樓:煙雅美奇原

你把邏輯運算當作無進位的運算理解。

比如算術運算。二進位:

邏輯運算。或""or"

比如這個你可以理解為不進位的加。

有關c語言的題目不理解 望高人指點

5樓:豬頭或火寶寶

你好!!

那就成立為1,即1<=b,1<=0嗎??顯然不小於,那就為0,所以整體的答案是0

6樓:e網e友

1 main()

列印出:100,由於所有條件都不符合,即沒有對x運算(2)分別以10進位、16進位、8進位列印a,結果為1,1,1(3)這是乙個表示式,結果為<=x的值為0 ;0<=b為真,既是1

c語言問題,解析肯定給分哦

7樓:高店村四組

z+=++x+y++

z = z + x+y++)

z =3 + 2 + 2)//++x使用前+1,所以這裡是2;y++使用之後+1,所以,在執行完這句過後,y=3;

z = 7;

c語言有點不理解這道題?

8樓:梅森琦

題目中所謂的「條件表示式 x」也就是 x 用在 if 語句中的情形,例如。

if (x)

這也就是說當 x 不為 0 的時候,條件即為真,也就是if (x != 0)

所以選 b

9樓:

if( x ) 與 if( x!=0 ) 是相同的。x的值等於0時代表false,x的值不等於0時都為true。

10樓:鉞森莉

表示式x只要不為0,表示式的值就為真,所以等價於表示式x!=0

簡單的c語言問題,請問我**理解錯誤。

11樓:網友

這道題的題幹有陷阱,需要反覆讀,去揣摩出題者的意圖,不然就容易犯錯誤。

在闡述之前,先定義str為輸入的長度為k的字串。

首先,第一句話問題不大,就是arr[32]=的意思。

第二句話問題就來了,這裡的「第i位」是從1開始算的。也就是說,str的第i位,其實是str[i-1],因為陣列的下標比位數少1。因此這句話的意思是迴圈執行arr[i%32] = str[i-1],其中i從1到k。

第三句話問題也不大,很自然就可以寫出來bits[j] = arr[31-j] ^arr[j]<<1),其中j從0到31。

最後一句話也比較繞,實際上就是把bits[j]%85+34的結果,按照bits的下標順序輸出的意思。第j+1實際上是下標為j的意思,比如第1位就是下標為0的數。

#include

#include

int main()

int bits[32] = ;

int k = strlen(str);

for (int i = 1; i <= k; i++)

for (int j = 0; j < 32; j++)

return 0;

當輸入為 123456789012345678901234567890123 時,算出來的答案為。

#*+,'ebst*+,'ebst*+,'ebur

與你截圖給的示例答案不太一致,第二和倒數第二位置的字元不一樣,其他都一樣。你可以進一步思考一下,是否是環境問題導致的,希望對你有幫助。

怎麼理解c語言中 a p的意思,怎麼理解C語言中 a p m 的意思

a p1 m 意思就是 如果指標p1 是指向m所在的記憶體,那麼a 1 否則 a 0就是先判斷倆指標是不是相等,然後賦值給a 優先運算。如果p的值等於m的位址,a 1,否則a 0 相當於表示式a p m?1 0 它是個判斷加賦值的語句。若p1 m值為真,a 1,反之a 0 這句話可以這樣表達,更加清...

一點不懂C語言的初中畢業生自學C語言遇到困難了

建議你找本c語言bai的基礎du教材看看先,最基本的語法zhi要知道,從 daohelloworld程式開始,這是你學 回習答任何程式設計的第乙個程式。國內的大學教材入門很不錯,要深入你要看c primer之類的外國教材,這本看完了再看一本薄的 深度探索c 物件模型 這本完全看懂了恭喜你基本上可以稱...

對c語言的通俗理解??誰能告訴我

語言是一種交流工具,人與人之間語言交流 計算機只識別二進位制比如111110000111000機器語言,但是人看不懂啊 或者看懂了很難記住也很不方便,人是很聰明的他們就想辦法改進於是產生了組合語言mov ax,10過了過人們發現組合語言也不是那麼簡單易用,貝爾實驗室的天才們發明了c語言,每一樣要有約...