zoukankan      html  css  js  c++  java
  • 《高质量程序设计指南:C++/C语言》面试题整理

    本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用 语法,不涉及 数据结构算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。
    笔试时间90分钟。请考生认真答题,切勿轻视。

    PS:如果想看数据结构和常用算法,可以参考我的Google Code项目ADT-in-C项目

    一、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
    char s1[] = "";
    char s2[] = "Hello World!";
    char *p  = s2;
    char *q  = NULL;
    void *r   = malloc(100);

    请计算:
    sizeof (s1) = 
    sizeof (s2) = 
    sizeof ( p ) = 
    sizeof ( q )  =
    sizeof (r) = 
    char s1[10] = {'m', 'o', 'b', 'i', 'l'};
    char s2[20] = {'A', 'N', 'S', 'I', '', 'C', '+', '+'};
    char s3[6]   = {'I', 'S', 'O', 'C', '+', '+'};

    请计算:
    strlen(s1)  = 
    strlen(s2)  =
    strlen(s3)  = 
    s2[8]  = 
     
    void Func ( char str[100]) 
        请计算:
        sizeof( str ) =     
    }

    二、请填写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 语句:



    三、简答题(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函数会有什么样的结果?
    答:



    五、类型转换。(5分)
        double d = 100.25;
        int x = d;
        int *pInt = (int*)&d;
    请问以下两个输出语句的结果是否相同?为什么?
        cout << x << endl;
        cout << *pInt << endl;


    PS:此题如果深入,详见百度面试题那篇博文

    六、编写strcpy函数(10分)
    已知strcpy函数的原型是
     char *strcpy(char *strDest, const char *strSrc); 
    其中strDest是目的字符串,strSrc是源字符串。
    (1)不调用C++/C的字符串库函数,请编写函数strcpy 


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


    PS:此题的扩展可以参考那篇常用字符串函数库实现博文。

    七、编写类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个函数。

    PS:答案回复可见。 O(∩_∩)O~
  • 相关阅读:
    1.01与37.8
    CakePHP 2.x CookBook 中文版 第七章 模型 之 检索数据
    CakePHP 2.x CookBook 中文版 第七章 模型
    CakePHP 2.x CookBook 中文版 第七章 模型 之 数据校验
    CakePHP 2.x CookBook 中文版 第五章 控制器 之 请求和响应对象
    CakePHP 2.x CookBook 中文版 第五章 控制器 之 脚手架
    CakePHP 2.x CookBook 中文版 第七章 模型 之 保存数据
    CakePHP 2.x CookBook 中文版 第三章 入门 之 CakePHP 的结构
    Zend Studio 10 phpFormatter 错误的解决
    CakePHP 2.x CookBook 中文版 第三章 入门 之 CakePHP 的文件夹结构
  • 原文地址:https://www.cnblogs.com/riskyer/p/3266732.html
Copyright © 2011-2022 走看看