#6579. 【客观题】2.1程序基本常识

【客观题】2.1程序基本常识

一、单项选择题(共 15 题,每题 4 分,共计 60 分;每题有且仅有一个正确选项)

  1. 下列选项中,不属于算法必备特征的是( )。 {{ select(1) }}
  • 有穷性
  • 确定性
  • 高效性
  • 输入与输出
  1. 在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是指( )。 {{ select(2) }}
  • 程序运行时理论上所占的内存空间
  • 程序运行时理论上所占的硬盘空间
  • 程序源文件理论上所占的硬盘空间
  • 程序运行时理论上所占的栈空间
  1. 如果用递归函数计算斐波那契数列的第n项(函数定义为F(n)=F(n-1)+F(n-2),边界条件F(1)=F(2)=1),则该算法的时间复杂度为( )。 {{ select(3) }}
  • O(1)
  • O(n)
  • O(n²)
  • O(2ⁿ)
  1. 设某算法的计算时间满足递推关系式T(n)=T(n-1)+n(n为正整数)及初始条件T(0)=1,则该算法的时间复杂度为( )。 {{ select(4) }}
  • O(log n)
  • O(n)
  • O(n log n)
  • O(n²)
  1. 下列关于算法的说法中,正确的是( )。 {{ select(5) }}
  • 算法可以没有输出
  • 算法的每一步操作必须有确切的含义,不允许有歧义
  • 死循环构成的程序也属于一个合法的算法
  • 算法必须有至少一个输入
  1. C++程序中,程序执行的入口函数是( )。 {{ select(6) }}
  • main函数
  • cout函数
  • include函数
  • 自定义函数
  1. 下列C++数据类型中,不属于基本数据类型的是( )。 {{ select(7) }}
  • int
  • bool
  • 结构体struct
  • char
  1. 若定义变量int a=7; float x=2.5, y=4.7;,则表达式x + a%3 * (int)(x+y) % 2 / 4的值是( )。 {{ select(8) }}
  • 2.500000
  • 2.750000
  • 3.500000
  • 0.000000
  1. 有如下程序段,其中s、a、b、c均为已定义的整型变量,且a、c均已赋值(c>0):
s = a;
for(b=1; b<=c; b++)
    s += 1;

与上述程序段功能等价的赋值语句是( )。 {{ select(9) }}

  • s = a + b;
  • s = a + c;
  • s = c;
  • s = b + c;
  1. 以下代码用于统计一个非负整数二进制形式中1的个数,空格处应填入的语句是( )。
int CountBit(int x){
    int ret = 0;
    while (x){
        ret++;
        __________;
    }
    return ret;
}

{{ select(10) }}

  • x >>= 1
  • x &= x - 1
  • x |= x >> 1
  • x <<= 1
  1. 递归过程或函数调用时,处理参数和返回地址,通常使用的数据结构是( )。 {{ select(11) }}
  • 队列
  • 线性表
  • 多维数组
  1. 在程序运行过程中,如果递归调用的层数过多,最可能引发的错误是( )。 {{ select(12) }}
  • 系统分配的栈空间溢出
  • 系统分配的堆空间溢出
  • 系统分配的队列空间溢出
  • 系统分配的数组空间溢出
  1. 有如下C++程序,运行后的输出结果是( )。
#include <iostream>
using namespace std;
int main(){
    int k=4, n=0;
    while(n<k){
        n++;
        if(n%3 == 0) continue;
        k--;
    }
    cout<<k<<","<<n<<endl;
    return 0;
}

{{ select(13) }}

  • 2,2
  • 2,3
  • 3,2
  • 3,3
  1. 设变量x为float型且已赋值,以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是( )。 {{ select(14) }}
  • x = (x*100 + 0.5) / 100.0;
  • x = (int)(x*100 + 0.5) / 100.0;
  • x = (x*100) + 0.5 / 100.0;
  • x = (x/100 + 0.5) * 100.0;
  1. 下列关于C++语言注释的说法中,正确的是( )。 {{ select(15) }}
  • 注释内容会被编译器一同编译,影响程序运行速度
  • 单行注释只能写在代码行的末尾,不能单独占一行
  • 注释的核心作用是对代码进行解释说明,提升可读性
  • 注释内容会导致程序编译失败

二、判断题(共 10 题,每题 4 分,共计 40 分;判断下列说法的正误,每题有且仅有一个正确选项)

  1. 一个算法可以有零个或多个输入,但必须有一个或多个输出。( ) {{ select(16) }}
  • 正确
  • 错误
  1. 时间复杂度为O(n log n)的算法,执行效率一定高于时间复杂度为O(n²)的算法。( ) {{ select(17) }}
  • 正确
  • 错误
  1. C++中,单行注释以//开头,在行末结束;多行注释以/开头,以/结尾。( ) {{ select(18) }}
  • 正确
  • 错误
  1. do-while循环的循环体,无论循环条件是否成立,至少会被执行一次。( ) {{ select(19) }}
  • 正确
  • 错误
  1. 递归函数只要子问题与原问题一致,即使没有递归出口,也能正常执行并得到结果。( ) {{ select(20) }}
  • 正确
  • 错误
  1. C++程序中,所有语句都必须以分号作为结束符。( ) {{ select(21) }}
  • 正确
  • 错误
  1. break语句的作用是跳过本次循环的剩余语句,直接进入下一次循环。( ) {{ select(22) }}
  • 正确
  • 错误
  1. 算法的可行性,是指算法中的每一个操作都可以通过执行有限次来实现。( ) {{ select(23) }}
  • 正确
  • 错误
  1. 并列循环的时间复杂度计算遵循加法规则,嵌套循环的时间复杂度计算遵循乘法规则。( ) {{ select(24) }}
  • 正确
  • 错误
  1. 用递归能够实现的功能,都可以通过循环迭代的方式实现。( ) {{ select(25) }}
  • 正确
  • 错误