c語言練習題(全做對必是大佬)

2021-10-22 18:30:59 字數 2076 閱讀 1524

輸出j的值

#include

intmain()

printf

("%d\n"

,j);

;return0;

}

答案:j的值為173

解析:i的型別是無符號的字元型別,其值的範圍為0~255,j的值是for迴圈的次數,i的值變化為 7 4 1 254…5 2 255…6 3

i的值為1時再減去3為-2,但因為i是無符號整數,範圍只能是0~255,所以系統會將-2的二進位制直接轉化為無符號數。

-2的原碼為10000010,反碼為11111101,補碼為11111110,在電腦中是以補碼儲存的,所以將11111110直接轉化為無符號數254,同理,2再減去3為-1,轉化為255,再次迴圈到i等於0時,迴圈結束一共迴圈了(3+85+85)173次

以下程式執行時,輸入1abcedf2df《回車》輸出結果是?

#include

intmain()

printf

("\n");

}

答案:1abcedf2df

解析:ch=ch-『a』+'a』表示將字母轉化成大寫字母,如果遇到數字,不變

a的變化,代表if語句會在偶數字元時為真,即進行字母的大寫轉換

以下哪個選項一定可以將flag的第二個位元位置為0

a  flag&=-

2b flag|=2

c flag^=2

d flag>>

2

答案:a

解析:舉乙個例子,數字31,補碼為00011111,將第二個位元位置為0,可以與11111101按位與,2是00000010,取反以後為11111101,再與flag按位與

struct one 

struct two

在#pragma pack(4) 和#pragma pack(8)的情況下,結構體的大小分別是

a 16 24 16 24

b 16 20 16 20

c 16 16 16 24

d 16 16 24 24

答案:c

解析:考察結構體內存對齊,在預設對齊數為4的情況下,struct one 中double型別佔據1到8個記憶體空間,char佔據第9個記憶體,int佔據13到16記憶體

struct two 中char佔據1,double 佔據5到12,int佔據13到16

預設對齊數為8的情況下,struct one 中double佔據1到8,char佔據第9個空間,int佔據13到16

struct two中的char佔據1,double佔據9到16,int佔據17到20,因為預設對齊數和結構體中佔據位元組最大同為8,所以最後結構體的大小為8的倍數24

下列程式執行後c輸出的結果為()(32位)

#include

#include

intmain()

答案 :-1;

解析:加法的本質是,數字在記憶體中二進位制補碼進行加減法,轉化位原碼列印

-3的原碼為10000000 00000000 00000000 00000011

反碼為11111111 11111111 11111111 11111100

補碼為11111111 11111111 11111111 11111101

2的原碼,補碼相同 00000000 00000000 00000000 00000010

相加結果為11111111 11111111 11111111 11111111

轉化為原碼 減一取反 10000000 00000000 00000000 00000001

結果為-1

#include

#define n 3+1

#define y(n) ((n+1)*n)

執行語句 z=2*

(n+y(5

+1)) 後,z的值為

答案:60;

解析:理解巨集定義是完全替換的,將n和n完全替換進去,不要直接計算

C語言練習題

8 編寫乙個程式,將字串str2中的全部字元複製到字串str1中。要求 不能使用strcpy函式。12分 include definemaxlen 20 假設 str2 的長度不超過 str1 的長度 voidstrcopy char str1,char str2 intmain 9 3 20分 從...

C語言練習題

1.保密電文 某電報局的電文保密規律是將每個英文本母變成其後的第4個字母,例如a變成e,a變成e。最後四個字母 w,x,y,z或w,x,y,z 變成前四個字母 a,b,c,d或a,b,c,d 電文中的非字母字元不變。要求 輸入一行字串,輸出改變的字串。程式分析 題目程式 include intmai...

c語言練習題1

1 編寫乙個程式實現求圓形的面積,使用者自己輸入半徑?s pi r r include define pi 3.14 int main int argc,const char argv 2 編寫乙個遞迴函式,求乙個整數的2進製形式。include void calc int n int main i...