读书人

面试题目看你能够做对几个!解决办法

发布时间: 2012-03-15 11:50:38 作者: rapoo

面试题目,看你能够做对几个!
1.定义一个结构:
第一个数据项的取值范围为0~127;
第二个数据项占用1 bit 的长度;其取值范围为0/1;
第三个数据项占用1 bit 的长度;其取值为1;
第四个数据项占用1 bit 的长度;其取值为0;
第五个数据项占用1 bit 的长度;暂时保留使用;

2.找出下面程序的错误:
const int MAX = 500;
unsigned char Array[MAX];

for (int i=0; i <MAX; i++)

{
Array[i] = i;
printf( "%d ", Array[i]);
}

3.使str的内容颠倒输出;
char str[]= "I love China! ";
char *p1 = Array;
int length = sizeof(str);
char *p2 =_____(1)____;
while (p1 <p2)
{
_____(2)____
_____(3)____
_____(4)____
_____(5)____

}
printf( "Str=%s ",str);

4.输出结果:
void main()
{
int array[]={1,2,3,4,5};
int *ptr = array;
ptr++;
printf( "%d,%d ",*(ptr-1),*(array+1));
}

5.定义一个整形指针a,使数据0x1FFF存放的内存地址为0x55000;

6.编写一个函数,不利用第三个数据交换两个数据的值;

7.使整形变量的第4位为1,其余位不变;清除第四位,其余位不变;


[解决办法]
2 Array[i] = i; 溢出了
printf( "%d ", Array[i]);
%d输出的是四字节整数, Array[i] 只有一个字节, 访问越界同时输出结果不正确
[解决办法]
第一个有意思,不知道是不是这样的要求:
struct TestStruct
{
public:
TestStruct()
{
c=1;
d=0;
}
public:
unsigned int a:7;
int b:1;
protected:
int c:1;
int d:1;
public:
int e:1;
};

[解决办法]
6.
void swap(int &a,int & b)
{
a=a < < sizeof(int) + b;
b=(a & (1 < <sizeof(int)))> > sizeof(int);
a=a & ((1 < <sizeof(int)) - 1);
}
[解决办法]
4.
Little_endian:2^9 2^25
Big_endian:2^24 2^8
[解决办法]
class theRe{
BYTEfirstNum;
boolseNum;
staticconstbool thrNum=1;
staticconstbool foNum=0;
bytefi;
} ;

读书人网 >C语言

热点推荐