輸出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...