題目來自互聯(lián)網(wǎng):http://wenku.baidu.com/view/1b71537201f69e314332947f.html 答案:自己做的,可能有錯誤,請多指正。 QQ:447872587 C語言部分:語言部分 一、簡單編程,請用一句語句完成下列操作 1. 位操作:將變量unsigned long register的0,4,6位清0 32位下:register&=0xffffffae 分析:0,4,6清0;10101110對應著:1010對應a; 1110對應e 2. 字符串操作:判斷字符串char* str1是否起始位置包含char* str2的內容 if(strstr(str1,str2)==str1) 3. 內存操作:將指針unsigned char* ptr的內容向后移動4個字節(jié) *(ptr+4)=*ptr; 4.將無符號變量unsigned int val進行字節(jié)序顛倒 (val&0x000000ff<<24)|( val&0x0000ff00<<8) |( val&0x00ff0000>>8)| ( val&0xff000000>>24) 二、寫出下列程序的運行結果 32位 1、指針變量: Unsignedchar*p1; Unsignedchar*p2; p1=(Unsigned char*)0x801000; p2=(Unsigned char*)0x810000; 請問:p1+5=? p2+5=? p1+5=0x801000+5*4=0x801000+0x14=0x801014 p2+5=0x810005+5*4=0x810000+0x14=0x810014 2.算數(shù)運算 Main() { Unsignedchar a,b,c,d; a=30; b=a++; c=++a; d=10*(a++); } 請問:b=?c=?d=? b=30,c=32,d=3200 3、邏輯運算 unsigned int regval = 0x451AD,evenMask= 0x306,bitConvert = 0xFF; int event = 0,convert = 0; event = regval& bitConvert; convert = regval^ convert; 請問:event=? Convert=? event= 260 Convert=282962 分析:event=0x451AD&0x306, 0x 4 5 1 A D & 0x 3 0 6 = 0x 0 0 1 0 4 即:16*16+4=260 convert = 0x451AD ^ convert;
三、請指出下列程序存在的問題,如何修正: 1、說明:以下代碼是把一個字符串倒序,如”abcd”倒序后變?yōu)椤眃cba” int _tmain(intargc, _TCHAR*argv[]) { char*src = "hello,world"; char *dest = NULL; intlen = strlen(src); char*dest = (char*)malloc(len); char*d = dest; char*s = src[len]; while(len-- != 0) { d++= s--; } printf("%s",dest); return0; } 正確應該為: [cpp] view plaincopy
方法二: [cpp] view plaincopy
四、簡答題: 1、頭文件的ifndef/define/endif干什么用的? 防止頭文件被重復引用 2、定義函數(shù)局部變量的時候: Char array1[100]; Char *array2; array1和array2都可以當做指針引用,這兩個指針在使用的時候有什么區(qū)別? 當做函數(shù)參數(shù)傳遞的時候,數(shù)組可以當指針用,本質就是取數(shù)組第一個元素的內存地址傳過去,當數(shù)組作為函數(shù)參數(shù)傳遞的時,該數(shù)組自動退化為同類型的指針。 指針也可以當數(shù)組用,但是兩者的本質不一樣; 數(shù)組名對應著一塊內存,而不是指向一塊內存,其地址和容量在生命周期不變,但數(shù)組內容可以改變; 指針可以隨時指向任意的內存塊,其特征是可變,常用指針來操作動態(tài)內存。 五、內存問題: 很簡單,不詳述。 六、程序編寫: 編寫一個函數(shù),輸入?yún)?shù)為一個字符串指針,將其中的大寫變?yōu)樾?/strong> [cpp] view plaincopy
|
|