第5章 函数
一、选择题
1、以下正确的说法是( A )
A) 实参可以是常量、变量或表达式 B) 实参类型不必同形参类型一致
C) 形参可以是常量、变量或表达式 D) 实参顺序与形参顺序无关
2、以下函数首部的定义形式的正确的是( B )
A) int fun(int x; int y) B) int fun(int x, int y) C) int fun(int x, y) D) int fun(int x, int y);
3、以下描述正确的是( B )
A) 如果形参和实参的类型不一致,应以实参类型为准
B) 如果函数值类型与返回值类型不一致,应以函数值类型为准
C) return语句后不能是表达式
D) 定义函数时,可以省略不写形参的类型,只写形参名
4、下列关于函数的描述错误的是( D )
A) c程序是由函数组成的 B) c程序中的函数是各自独立的
C) main函数可以调用其它的函数 D) 在main函数中可以嵌套定义别的函数
5、关于C语言的主函数描述正确的是 ( )B
A) C程序可以有多个main函数 B) C程序有且只有一个main函数
C) C程序可以没有main函数 D) C程序不一定从main函数开始执行
6、若定义的函数有返回值,则以下关于该函数调用的叙述错误的是( )D
A) 函数调用可作为独立的语句存在 B) 函数调用可作为一个函数的实参
C) 函数调用可以出现在表达式中 D) 函数调用可作为一个函数的形参
7、以下对于return语句的作用叙述不正确的是( )C
A) 可以将函数值返回给主调函数 B) 可以将程序流程返回到主调函数
C) 一个函数只能有一个return语句 D) 一个函数可以没有return语句
8、C语言规定,函数返回值的类型是由( D )决定的。
A) return语句中表达式的类型 B) 调用该函数的主调函数的类型
C) 调用该函数时系统临时 D) 在定义函数时所指定的函数值类型
9、在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为( )A
A) int B) double C) void D) float
10、若函数定义如下,则函数返回值的数据类型是( )A
float fun(int x)
{ int y=x+2;
return(y);
}
A) float B) int C) 不能确定 D) 编译出错
11、以下正确的函数形式是( )D
A) double fun(int x, int y) B) void fun(int x, y)
{ z = x + y; { int z;
return z; return z;
} }
C) double fun(x, y) D) double fun(int x, int y)
{ double z = x + y; { double z = x + y;
return z; return z;
} }
12、函数调用时,若参数为“值传递”方式,则下列描述错误的是( B )
A) 实参可以是表达式 B) 实参与形参共用同一内存单元
C) 调用时为形参分配内存单元 D) 实参与形参类型应一致
13、若函数定义如下,假设将常数1.6传给x,则函数的返回值是( )B
int fun(float x)
{ float y=x+2;
return(y);
}
A) 3.6 B) 3 C) 4 D) 3.0
14、设有如下的函数,则函数返回值的类型是( ) C
ggg(float x)
{ return(x*x); }
A) 与参数x的类型相同 B) void C) int D) 无法确定
15、有以下程序,则执行后输出的结果是( )A
#include "stdio.h"
void fun(int k,int n)
{ int t;
t=k; k=n; n=t;
}
void main()
{ int k=1, m=2;
fun(k, m);
printf("%d,%d\n", k,m);
}
A) 1,2 B) 2,1 C) 1,1 D) 2,2
16、以下程序运行后的输出结果是 ( ) D
#include "stdio.h"
int fun(int a, int b)
{ if (a>b) return(a);
else return(b);
}
void main( )
{ int x=3, y=8, z=6, r;
r=fun( fun(x, y), 2*z);
printf("%d\n", r);
}
A) 3 B) 6 C) 8 D) 12
*********************************数组作函数参数*********************************
17、对于一维数组名作函数实参,以下描述正确的是( A )
A) 必须在主调函数中说明此数组的大小
B) 实参数组类型与形参数组类型可以不一致
C) 函数调用时是将实参数组中的所有元素值复制到形参数组中
D) 实参数组名与形参数组名必须保持一致
18、数组名作参数时,以下叙述正确的是( )B
A) 函数调用时是将实参数组的所有元素传给形参
B) 函数调用时是将实参数组的首地址传给形参
C) 函数调用时是将实参数组的第1个元素传给形参
D) 函数调用时是将实参数组所有元素的地址传给形参
19、已有如下数组定义和函数调用语句,则fun函数的形参数组的正确定义方法是( C )
int a[3][4];
fun(a);
A) fun( int a[][6]) B) fun(int a[3][] C) fun(int a[][4]) D) fun(int a[][])
20、有以下程序,则执行后的结果为( )C
#include "stdio.h"
void fun(int b[], int n)
{ for(int i=0;i<n;i++)
++b[i];
}
void main()
{ int x, a[5]={2,3,4,5,6};
f (a, 5);
printf("%d\n", a[1]);
}
A) 2 B) 3 C) 4 D) 5
***********************************嵌套和递归***********************************
21、以下描述错误的是( ) D
A) C程序中,函数可以直接或间接的调用自己
B) 函数调用时,函数名必须与所调用的函数名字完全一致
C) 函数声明语句中的类型必须与函数返回值的类型一致
D) 实参数可以与形参个数不一致
22、关于递归函数的叙述错误的是( )C
A) 递归函数是自己调用自己 B) 递归函数占用较多的存储空间
C) 递归函数的运行速度很快 D) 递归函数的运行速度一般比较慢
23、关于递归函数的叙述错误的是( A )
A) 用递归函数求n! 比用循环求n! 的速度快 B) 递归函数经常使用if结构
C) 递归函数运行时占用较多的存储空间 D) 通常递归函数的代码比较简洁
24、下列的结论中正确的是( ) B
A) 所有的递归程序均可以采用非递归算法实现
B) 只有部分递归程序可以用非递归算法实现
C) 所有的递归程序均不可以采用非递归算法实现
D) 以上三种说法都不对
25、关于二分搜索以下说法错误的是( )B
A) 二分搜索算法可以用循环语句实现 B) 二分搜索对数据排列没有要求
C) 二分搜索算法可以用递归函数实现 D) 二分搜索体现了分治法的思想
****************************局部和全局变量及存储类别****************************
26、以下描述错误的是( D )
A) 在不同的函数中可以使用相同名字的变量
B) 函数定义中的形参是局部变量
C) 在一个函数内部定义的变量只能在该函数内使用
D) 在一个函数内的复合语句中定义变量在整个函数范围内有效
27、以下对局部变量描述正确的是 ( ) D
A) 在函数内部定义的变量 B) 在main函数中定义的变量是局部变量
C) 形式参数也是局部变量 D)局部变量在程序的全部执行过程中一直占用存储单元
28、在一个源文件中定义的全局变量的作用域为(float()函数 )D
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论