发新话题
打印

[东部] 上海贝尔公司的C++/C试题(大家来试试)

本主题由 TCD 于 2008-8-27 21:41 分类

上海贝尔公司的C++/C试题(大家来试试)

考查自己的编程质量究竟如何。然后参照答案严格打分。
(1)如果你只得了几十分,请不要声张,也不要太难过。编程质量差往往是由于不良习惯造成的,与人的智力、能力没有多大关系,还是有药可救的。成绩越差,可以进步的空间就越大,中国不就是在落后中赶超发达资本主义国家吗?只要你能下决心改掉不良的编程习惯,第二次考试就能及格了。
(2)如果你考及格了,表明你的技术基础不错,希望你能虚心学习、不断进步。如果你还没有找到合适的工作单位,不妨到上海贝尔试一试。
(3)如果你考出85分以上的好成绩,你有义务和资格为你所在的团队作“C++/C编程”培训。希望你能和我们多多交流、相互促进。半年前我曾经发现一颗好苗子,就把他挖到我们小组来。
(4)如果你在没有任何提示的情况下考了满分,希望你能收我做你的徒弟。


    本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。

    笔试时间90分钟。请考生认真答题,切勿轻视。

一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
if ( n == 0 )
if ( n != 0 )
以此类推。

请写出 BOOL flag 与“零值”比较的 if 语句:


请写出 float x 与“零值”比较的 if 语句:



请写出 char *p 与“零值”比较的 if 语句:



二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)

    char str[] = “Hello” ;
    char *p = str ;
int n = 10;
请计算
sizeof (str ) =

sizeof ( p ) =

sizeof ( n ) =    void Func ( char str[100])
{
请计算
sizeof( str ) =
}

    void *p = malloc( 100 );
请计算
sizeof ( p ) =


三、简答题(25分)

1、头文件中的 ifndef/define/endif 干什么用?



2、#include <filename.h> 和 #include “filename.h” 有什么区别?



3、const 有什么用途?(请至少说明两种)



4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?




5、请简述以下两个for循环的优缺点

// 第一个
for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}    // 第二个
if (condition)
{
for (i=0; i<N; i++)
DoSomething();
}
else
{
for (i=0; i<N; i++)
DoOtherthing();
}
优点:


缺点:


    优点:


缺点:



四、有关内存的思考题(20分)

void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);   
strcpy(str, "hello world");
printf(str);
}

请问运行Test函数会有什么样的结果?
答:



    char *GetMemory(void)
{   
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();   
printf(str);
}

请问运行Test函数会有什么样的结果?
答:
Void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");   
printf(str);   
}
请问运行Test函数会有什么样的结果?
答:




    void Test(void)
{
char *str = (char *) malloc(100);
    strcpy(str, “hello”);
    free(str);   
    if(str != NULL)
    {
    strcpy(str, “world”);   
printf(str);
}
}
请问运行Test函数会有什么样的结果?
答:






五、编写strcpy函数(10分)
已知strcpy函数的原型是
    char *strcpy(char *strDest, const char *strSrc);
    其中strDest是目的字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数 strcpy







(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?




六、编写类String的构造函数、析构函数和赋值函数(25分)
已知类String的原型为:
    class String
    {
    public:
        String(const char *str = NULL);    // 普通构造函数
        String(const String &other);    // 拷贝构造函数
        ~ String(void);                    // 析构函数
        String & operate =(const String &other);    // 赋值函数
    private:
        char     *m_data;                // 用于保存字符串
    };
    请编写String的上述4个函数

TOP

发新话题