2021 年 3 月 和 2020 年 9 月 计算机二级 C 语言 错题整理

  1. 某二叉树的中序序列为 DCBAEFG,后序序列为 DCBGFEA,则该二叉树的深度为

    A. 5

    B. 4

    C. 3

    D. 2

    二叉树的先序、中序和后序

    先序:根 - 左子树 - 右子树

    中序:左子树 - 根 - 右子树

    后序:左子树 - 右子树 - 根

    先中后序是根据根遍历的位置来算的。

  2. 程序运行后的输出结果为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <stdio.h>
    #include <string.h>
    void main()
    {
    char str[20]={"One*World","One*Dream!"};
    *p=str[1];
    printf("%d,",strlen(p));
    printf("%s\n",p);
    }

    A. 9One*Dream!

    B. 10One*Dream!

    C. 9One*World

    D. 10One*World

初始化的时候只能初始化为一个值,所以实际上 str 数组内的值为 One*Dream!

  1. 有三个关系 R,S 和 T 如下图所示,关系T违反了哪一类完整性约束()

第 3 题图

A. 实体完整性约束

B. 参照完整性约束

C. 用户定义的完整性约束

D. 以上三项

  • 实体完整性:若属性 A 是基本关系 R 的主属性,则 A 不能取空值

    检查和违约处理:

    1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改。

    2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。

这里面 A 的值为 1,很显然不是空值。

  • 参照完整性:若属性 F 是基本关系 R 的外码,它与基本关系 S 的主码 K 相对应,则对于 R 中每个元组在 F 上的值要么为空值,要么等于 S 中某个元组的主码值。

很显然这里面是不满足值相等的。

  • 用户定义的完整性:比如唯一性、能否取空值等。
  1. 下面描述中正确的是

    A. 好的软件设计应是高内聚低耦合

    B. 内聚性和耦合性无关

    C. 内聚性是指多个模块间相互连接的紧密程度

    D. 耦合性是指一个模块内部各部分彼此结合的紧密程度

    内聚性是指一个模块内部各部分彼此结合的紧密程度,耦合性是指多个模块间相互连接的紧密程度

    打个比方,内聚性就好像是一个家庭的团结友好程度,耦合性则是多个家庭之间的关联程度

    一个家庭里面肯定是越和睦越好,但是多个家庭之间肯定要互相有一点防备的,不然一户人家出事了,其他家跟着“连坐”,这是对整个社区是不利的。

    程序里面也一样,一个模块之间的紧密度越高,程序的稳定性肯定是越好,但是模块之间应该只能有必要的关联,否则一旦一个模块出现了 bug 要修改,其他模块也必须要跟着修改,反而大大增加了工作量。低耦合也可以确保后序增加新功能的时候,尽量少地重构,也方便复用。所以常说一个好的程序是“高内聚、低耦合”。

  2. 下列叙述中错误的是

    A. 在带链队列中,队头指针和队尾指针都是在动态变化的

    B. 在带链栈中,栈顶指针和栈底指针都是在动态变化的

    C. 在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的

    D. 在带链队列中,队头指针和队尾指针可以指向同一个位置

  • 带链栈(Linked Stack):带链栈是一种使用链表实现的栈结构。它通常包含一个指向链表顶部的指针,称为栈顶指针。栈的基本操作包括入栈(push)和出栈(pop)。在入栈操作中,新元素被添加到链表的头部,并更新栈顶指针指向该新元素;在出栈操作中,栈顶元素被移除,并更新栈顶指针指向下一个元素。因此,栈顶指针是在动态变化的,但栈底指针不是常常存在或者不一定需要,因为栈底指针通常不被直接引用或改变

  • 带链队列(Linked Queue):带链队列是一种使用链表实现的队列结构。它包含指向队列头部和尾部的指针,分别称为队头指针队尾指针。队列的基本操作包括入队(enqueue)和出队(dequeue)。在入队操作中,新元素被添加到链表的尾部,并更新队尾指针指向该新元素;在出队操作中,队头元素被移除,并更新队头指针指向下一个元素。队头指针和队尾指针都是在动态变化的。在特殊情况下,队头指针和队尾指针可以指向同一个位置,表示队列中只有一个元素

  1. 程序运行后的输出结果是

    1
    2
    3
    4
    int main(){
    int i=0;
    i=~i;
    printf("%d\n", i);}

    A. 0

    B. 1

    C. 8

    D. -1

    C 语言中,~按位取反操作符,也就是将所有的 0 换成 1。但要注意符号位也由 0 变成 1,因此结果是 -1


2021 年 3 月 和 2020 年 9 月 计算机二级 C 语言 错题整理
https://gt610.codeberg.page/2024/03/19/ncre-2-2103-2009/
作者
GT610
发布于
2024年3月19日
许可协议