#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)