01.C++笔试题

1.对于int *pa[5];的描述,下面叙述正确的是()
A. pa是一个指向数组的指针,所指向的数组是5个int型元素;
B. pa是一个指向某数组中第5个元素的指针,该元素是int型变量;
C. pa是一个具有5个元素的指针数组,每个元素时一个int型指针;
D. pa[5]表示某个数组的第5个元素的值;

2.下面关于数组的初始化正确的是()
A. char str[2] = {“a”, “b”};
B. char str[2][3] = {“a”, “b”};
C. char str[2][3] = {{‘a’, ‘b’}, {‘e’, ‘d’}, {‘e’, ‘f’}};
D. char str[] = {“a”, “b”};

3.下面关于多态性的描述,错误的是()
A. C++语言的多态性分为编译时的多态性和运行时的多态性
B. 编译时的多态性可通过函数重载实现
C. 运行时的多态性可通过模拟和虚函数实现
D. 实现运行时多态性的机制称为动态绑定

4.简单写出二叉树的中序遍历代码。

5.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()
A. AB operator+(AB &a, AB &b)
B. AB operator+(AB &a)
C. operator+(Ab a)
D. AB &operator+()

6.以下代码有什么问题?如何修改?

void test3(char *str1)
{
    char string[10];
    if (strlen(str1) <= 10) {
        strcpy(string, str1);
    }
}

7.列出以下数据类型在32位和64位操作系统的vc中占多少字节。

数据类型32位64位
char
int
long
size_t

8.假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为____

9.c语言中操作文件的函数有哪些?何为文本文件和二进制文件?

10.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

11.以下题目用位运算实现:
(1) 已知变量int a;求a的高2字节的值
(2) 求用位运算实现和a%16一样效果的代码
(3) 判断一个数是否为2的n次方
(4) 把int a的某位值变为0,其余值不变

12.使用递归实现一个函数,计算公式f(n) = 1 + 2 + 3 + … + n的结果。

13.new/delete 和malloc/free 有什么区别?

14.什么是平衡二叉树?什么是红黑树?红黑树的查找操作的时间复杂度是多少?

15.有关内存的思考题
1)请问运行以下Test函数会有什么样的结果?

void GetMemory(char *p) 
{
    p = (char *)malloc(100);
}

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

2)请问运行以下Test函数会有什么样的结果?

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

void Test(void)
{
    char *str = NULL;
    str = GetMemory();
    printf(str);
}

3)请问运行以下Test函数会有什么样的结果?

void GetMemory(char **p, int num)
{
    *p = (char *)malloc(num);
}

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

4)请问运行以下Test函数会有什么样的结果?

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

16.定义一个链表的节点结构,并实现往一个有序的链表中插入一个元素的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值