#6121. gesp二级真题分类六:函数基础

gesp二级真题分类六:函数基础

六、函数基础(共10题)

题目

1. 下面关于函数的说法,正确的是( )。
{{ select(1) }}

  • 函数必须返回一个值
  • 函数可以有多个返回值
  • 函数可以没有返回值
  • 函数不能嵌套调用

2. 下面代码实现计算n的阶乘,横线处应填写( )。

int factorial(int n) {
    int res=1;
    for(int i=2;i<=n;i++)
        ________;
    return res;
}

{{ select(2) }}

  • res*=i
  • res+=i
  • res=res+i
  • res=i

3. 下面代码用于判断素数,横线处应填写( )。

bool isPrime(int n) {
    if(n<2) return false;
    for(int i=2;i*i<=n;i++)
        if(________) return false;
    return true;
}

{{ select(3) }}

  • n%i==0
  • i%n==0
  • n%i!=0
  • i%n!=0

4. 以下关于函数形参和实参的说法,正确的是( )。
{{ select(4) }}

  • 形参和实参可以同名
  • 实参必须在函数调用时指定类型
  • 形参的值改变会影响实参
  • 实参只能是变量

5. 下面代码用于求两数最大值,横线处应填写( )。

int max(int a, int b) {
    return ________;
}

{{ select(5) }}

  • a>b?a:b
  • a>b:b?a
  • a>b?a,b
  • a,b

6. 以下关于函数递归的说法,错误的是( )。
{{ select(6) }}

  • 递归函数必须有一个终止条件
  • 递归可能造成栈溢出
  • 所有递归都可以转化为循环
  • 递归的效率一定高于循环

7. 下面代码用于计算斐波那契数列,时间复杂度是( )。

int fib(int n) {
    if(n<=1) return n;
    return fib(n-1)+fib(n-2);
}

{{ select(7) }}

  • O(n)
  • O(n^2)
  • O(2^n)
  • O(1)

8. 下面代码用于计算斐波那契数列(递推),时间复杂度是( )。

int fib(int n) {
    if(n<=1) return n;
    int a=0,b=1,c;
    for(int i=2;i<=n;i++){
        c=a+b;
        a=b;
        b=c;
    }
    return c;
}

{{ select(8) }}

  • O(n)
  • O(n^2)
  • O(2^n)
  • O(1)

9. 下面函数调用后输出结果是( )。

void swap(int a, int b) {
    int t=a; a=b; b=t;
}
int main() {
    int x=3, y=5;
    swap(x,y);
    cout<<x<<','<<y;
}

{{ select(9) }}

  • 3,5
  • 5,3
  • 3,3
  • 5,5

10. 以下哪个是函数重载的正确例子?( )
{{ select(10) }}

  • int add(int a, int b) 和 double add(int a, int b)
  • int add(int a, int b) 和 int add(int a, int b, int c)
  • int add(int a, int b) 和 int add(int x, int y)
  • double add(double a, double b) 和 double add(double x, double y)