【转载】某处笔试题目
题目来自互联网:/view/1b71537201f69e314332947f
答案:自己做的,可能有错误,请多指正。
C语言部分:语言部分
一、简单编程,请用一句语句完成下列操作
1.
分析:0,4,6清0;10101110对应着:1010对应a; 1110对应e
2.
if(strstr(str1,str2)==str1)
3.
*(ptr+4)=*ptr;
4.将无符号变量unsigned int val进行字节序颠倒
(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=?
p1+5=0x801000+5*4=0x801000+0x14=0x801014
p2+5=0x810005+5*4=0x810000+0x14=0x810014
//经本人VC下实际运行,两者的答案分别为:
p1+5=0x801005;
p2+5=0x810005;
而非原作者提供的答案,此处可能就是单纯的一个地址向后移动5个地址单元而已,而不是所谓的5个指针地址的大小,个人理解而已,并非十分正确。
2.算数运算
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;
请问:event=?
event= 260
分析:event=0x451AD&0x306,
0x 4 5 1 A D
&
0x
= 0x 0 0 1 0 4 即:16*16+4=260
convert = 0x451AD ^ convert;
三、请指出下列程序存在的问题,如何修正:
1、说明:以下代码是把一个字符串倒序,如”abcd”倒序后变为”dcba”
int _tmain(int argc, _TCHAR *argv[]){
}
}
正确应该为:
[cpp] view plaincopy