I come, I see, I conquer

                    —Gaius Julius Caesar

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

一、问答题

1. 存在如下三个类的定义,请问sizeof(A)、sizeof(B)、sizeof(C)分别等于多少?

class A
{
    
void FuncA();
};

class B
{
    
int a; char ch;
    
static int b;
    
virtual void FuncA();
};

class C
{
    
double d; char ch;
    
virtual void FuncA();
    
virtual void FuncB();
};



二、写出下列程序的运行结果

假设硬件平台是intel x86(little endian)

char *inet_ntoa(uint32_t in)
{
    
static char b[18];
    register 
char *p;
    p 
= (char *)∈
#define UC(b) (((int)b)&0xff)
    (
void) snprintf(b, sizeof(b),
        
"%d. %d. %d", UC(p[0]), UC(p[1]), UC(p[2]), UC(p[3]));
    
return (b);
}

int main()
{
    printf(
"%s, %s", inet_ntoa(0x12345678), inet_ntoa(87654321));
}



三、程序实现

1. 给出一行C语言表达式,判断给定的整数是否是一个2的幂。

解答:x&(x-1) ? false: true

2. 已知n(n>=2)个32位的无符号整数,求其中异或之后的值最大的那两个数。
3. 宽度优先遍历一棵二叉树。
4. 使用递归将一个链表逆序(例如A->B->C  =>  C->B->A)。
5. 编写类String的构造函数、析构函数和赋值函数。已知类String的原型为:

class String
{
public:
    String(
const char *str==NULL); //普通构造函数
    String(const String &other); //拷贝构造函数
    ~String(void); //析构函数
    String & operate=(const String &other); //赋值函数
private:
    
char *m_data; //用于保存字符串
}


6. 从m个数中找出前n个大的数(m>n),写出你认为效率最高的方法。

7. M个同样的球放在N个同样的盒子里,不允许有的盒子空着不放,请编写程序计算共有多少种不同的分法?(用k表示)
    5,1,1和1,5,1是同一种分法。

8. 在一个整数序列(用数组int a[N]表示,长度为int length)中求一个连续子序列,使该子序列的和最大,输出最大的和即可。例如,整数序列12  -13  1  2  23  -14  55  -2,最大连续子序列的和为67。

#include <stdio.h>

void main()
{
    
int x[]={12-131223-1455-2};
    
int length = 8;
    
int max=-65535;
    
int i, j, sum=0;
    
for(i=0; i<length; i++)
    {    
        sum
=0;
        
for(j=i; j<length; j++)
        {
            sum
+=x[j];
            
if(sum>max)
                max
=sum;
        }
    }
    printf(
"%d",max);
}


四、证明题

五、趣味题

posted on 2008-10-29 23:13  jcsu  阅读(1098)  评论(0)    收藏  举报