• C/C++试题(from 周星星's Blog)


    呵呵,不知道对一些笔/面试是否有帮助 :)
    1. 以下三条输出语句分别输出什么?[C易]
    char str1[]       = "abc";
    char str2[]       = "abc";
    const char str3[] = "abc";
    const char str4[] = "abc";
    const char* str5  = "abc";
    const char* str6  = "abc";
    cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?
    cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?
    cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?

    2. 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?[C++中等]
    答:
    a. class B : public A { ……} // B公有继承自A,可以是间接继承的
    b. class B { operator A( ); } // B实现了隐式转化为A的转化
    c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数
    d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个

    3. 以下代码中的两个sizeof用法有问题吗?[C易]
    void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
    {
        for( size_t i=0; i&ltsizeof(str)/sizeof(str[0]); ++i )
            if( 'a'<=str[i] && str[i]<='z' )
                str[i] -= ('a'-'A' );
    }
    char str[] = "aBcDe";
    cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;
    UpperCase( str );
    cout << str << endl;

    4. 以下代码有什么问题?[C难]
    void char2Hex( char c ) // 将字符以16进制表示
    {
        char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1);
        char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1);
        cout << ch << cl << ' ';
    }
    char str[] = "I love 中国";
    for( size_t i=0; i&ltstrlen(str); ++i )
        char2Hex( str[i] );
    cout << endl;

    5. 以下代码有什么问题?[C++易]
    struct Test
    {
        Test( int ) {}
        Test() {}
        void fun() {}
    };
    void main( void )
    {
        Test a(1);
        a.fun();
        Test b();
        b.fun();
    }

    6. 以下代码有什么问题?[C++易]
    cout << (true?1:"1") << endl;

    7. 以下代码能够编译通过吗,为什么?[C++易]
    unsigned int const size1 = 2;
    char str1[ size1 ];
    unsigned int temp = 0;
    cin >> temp;
    unsigned int const size2 = temp;
    char str2[ size2 ];

    8. 以下代码中的输出语句输出0吗,为什么?[C++易]
    struct CLS
    {
        int m_i;
        CLS( int i ) : m_i(i) {}
        CLS()
        {
            CLS(0);
        }
    };
    CLS obj;
    cout << obj.m_i << endl;

    9. C++中的空类,默认产生哪些类成员函数?[C++易]
    答:
    class Empty
    {
    public:
        Empty();                          // 缺省构造函数
        Empty( const Empty& );            // 拷贝构造函数
        ~Empty();                         // 析构函数
        Empty& operator=( const Empty& ); // 赋值运算符
        Empty* operator&();               // 取址运算符
        const Empty* operator&() const;   // 取址运算符 const
    };

    10. 以下两条输出语句分别输出什么?[C++难]
    float a = 1.0f;
    cout << (int)a << endl;
    cout << (int&)a << endl;
    cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?
    float b = 0.0f;
    cout << (int)b << endl;
    cout << (int&)b << endl;
    cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么?

    11. 以下反向遍历array数组的方法有什么错误?[STL易]
    vector array;
    array.push_back( 1 );
    array.push_back( 2 );
    array.push_back( 3 );
    for( vector::size_type i=array.size()-1; i>=0; --i ) // 反向遍历array数组
    {
        cout << array[i] << endl;
    }

    12. 以下代码有什么问题?[STL易]
    typedef vector IntArray;
    IntArray array;
    array.push_back( 1 );
    array.push_back( 2 );
    array.push_back( 2 );
    array.push_back( 3 );
    // 删除array数组中所有的2
    for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )
    {
        if( 2 == *itor ) array.erase( itor );
    }

    13. 写一个函数,完成内存之间的拷贝。[考虑问题是否全面]
    答:
    void* mymemcpy( void *dest, const void *src, size_t count )
    {
        char* pdest = static_cast&ltchar*>( dest );
        const char* psrc = static_cast&ltconst char*>( src );
        if( pdest>psrc && pdest&ltpsrc+cout ) 能考虑到这种情况就行了
        {
            for( size_t i=count-1; i!=-1; --i )
                    pdest[i] = psrc[i];
        }
        else
        {
            for( size_t i=0; i&ltcount; ++i )
                pdest[i] = psrc[i];
        }
        return dest;
    }
    int main( void )
    {
        char str[] = "0123456789";
        mymemcpy( str+1, str+0, 9 );
        cout << str << endl;

        system( "Pause" );
        return 0;
    }

  • 相关阅读:
    UCSC genome browser 个人track 安装
    C++遍历二维数组的四种方法
    生物结构变异分析软件meerkat 0.189使用笔记(一)
    R语言从小木虫网页批量提取考研调剂信息
    使用R语言将微信记录制作成词云(简洁)--情人节奥义
    判断数据是否服从某一分布(二)——简单易用fitdistrplus包
    判断数据是否服从某一分布(一)
    如何正确地写出单例模式
    使用 JavaScript 将网站后台的数据变化实时更新到前端-【知乎总结】
    C#实时读取数据----局部页面刷新【转】
  • 原文地址:https://www.cnblogs.com/wonderow/p/66519.html
Copyright © 2020-2023  润新知