笔试--编程题

有答案,若需要,留邮箱


1.

    class A{
    public:
    void foo(){ cout << "A"; }
    };
    class B :public A{
    public:
    void foo(){ cout << "B"; }
    };
    int main() 
    {   
        B *s = new B;
        s->foo();
        cout << ";";
        ((A*)s)->foo();
        return 0;
    }

2.

    int main() 
    {       
        int i = 0;
        printf("%d;%d",i++,i);
        return 0;
    }

3.

    int func(int a)
    {
        int b = 0;
        static int c = 3;
        a = c++, b++;
        printf("%d;%d\n", c, b);
        return a;
    }
    int main() 
    {       
        int a = 2, j, k;
        for (int i = 0; i < 2; i++)
        k = func(a++);
        printf("%d\n",k);
        return 0;
    }
  1. little endian
    int main() 
    {       
        int a[] = {0x10203040,0x50607080,0x90a0b0c};
        char *p = (char *)(a + 2);
        printf("0x%x,0x%x,,0x%x",*(p-1),*p,*((short *)p));
        return 0;
    }

5.big endian or little endian

    int main() 
    {       
        unsigned short  a = 0x1122;
        unsigned char *p = (unsigned char *)&a;
        printf("0x%x", *p);
        return 0;
    }   

6.

    #define MIN(a,b) (a>b)?b:a
    int main() 
    {   
    //宏函数定义方式
        int a;
        int b;
        std::cin >> a;
        std::cin >> b;
        int c = MIN(a, b);
        std::cout << c ;

        return 0;
    }   

7.

    int main() 
    {   
    //自加运算
        int a = 4;
        int c = a += (a++);
        std::cout << c; //8
        int a1 = 4;
        int c1 = a1 += (++a1); //10
        std::cout << c1; 

        return 0;
    }

8.

    int main() 
    {       
        char* a = "AAA";
        printf("%s", a);
        a[0] = 'B';//赋值有误??
        printf("%s", a);

        return 0;
    }

9.

    int main() 
    {   
         unsigned int a = 6;
        int b = -20;
        std:cout << a+b;
        return 0;
    }

10.

    int main() 
    {       
       //分解质因数
    //法一:
    int a;
    std::cin >> a;
    int i = 2;
    std::cout << a << "=";
    while (a!=1)
    {
        if(a%i == 0)
        {           
            a = a / i;
            if (a == 1){ std::cout << i; }
            else{ std::cout << i << "*"; }


        }
        else
        {
            i++;
            for (int j = 2; j < i; j++)
            {
                if (i%j == 0){ i++;}
            }
        }
    }


    //法二:
    //int i = 2, num;
    //std::cin >> num;
    ///*从i=2开始除,若不能被i整除则i++;若能被i整除则输出i,且num变成num除以i的商,重新把2赋值给i,循环。  直到num=1时,循环终止(从2开始除,不会出现输出i=4,6,9等情况,原理自己推算)*/
    //while (num >= i)  {
    //  if (num%i == 0)
    //  {
    //     std:cout << i << "*";
    //      num = num / i;
    //      i = 2;
    //  }
    //  else
    //  {
    //      i++;
    //  }
    //}
    //std::cout << endl;
    //system("pause");

    return 0;
    }

11.

    int main() 
    {       
    //位运算实现数值大小交换
    int a;
    int b;
    std::cin >> a;
    std::cin >> b;
    a = a^b;
    b = b^a;
    a = a^b;
    std::cout << a <<endl;
    std::cout << b;

    return 0;
    }

12.

    int main() 
    {       
    // 0 && 1
    short s = 65536;
    int i = s + 1;
    cout << s << "  && " << i<< "  && "<<sizeof(int)<< "  && "<<sizeof(short); 
    return 0;
    }

13.

    int main() 
    {       
       int i = 0,j=0;   //
       if (++i > 0 || ++j > 0);
       cout << i << "  && " << j;
       return 0;
    }

14.

    {
    public A(){
    PrintFields();
    }
    public virtual void PrintFields(){}
    }
    class B :A
    {
        int x = 1;
        int y;
        public B(){
        y = -1;
        }
        public override void PrintFields(){
            Console.WriteLine("x={0},y={1}", x, y);
        }
    }
    int main() 
    {       
       B b;
       b.PrintFields();
       return 0;
    }

15.

class A
{
public:
    virtual void func(int val = 1)
    {
        std::cout << "A->" << val << std::endl;
    }

    virtual void test()
    {
        func();
    }
};

class B:public A
{
public:
    void func(int val = 0)
    {
        std::cout << "B->" << val << std::endl;
    }
};

int main(int argc,char* argv[])
{
    B*p = new B;
    p->test();
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值