函数指针习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数、指针练习题
一、选择题
1. 若有”fun(int a[],int n)”,以下说法正确的是( )。
A.函数的类型为单精度类型B.第一个实参应该是数组名
C.实参和形参之间是一个值传递的过程D.以上说法都不对
2. 下列有关函数调用的说法不正确的是( )。
A.若用值传递方式,则形式参数在函数被调用时才分配内存B.实际参数和形式参数不可以同名C.主调函数和被调用函数可以不在同一个文件中D.函数间传送数据可以使用外部全局变量3. 下列叙述中正确的是( )。
A.函数可以嵌套定义,但不能嵌套调用B.函数可以嵌套调用,也可以嵌套定义
C.函数不可以嵌套定义,也不可以递归调用D.函数可以嵌套调用,但不能嵌套定义
4. 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )。
A.函数的实参和其对应的形参共占同一存储单元B.形参只是形式上的存在,不占用具体存储单元C.同名的实参和形参占同一存储单元D.函数的形参和实参分别占用不同的存储单元5. 函数中未指定存储类型的变量,其隐含的存储类型是( )。
A.static B.auto C.extern D.register
6. 在一个C语言源程序文件中所定义的全局变量,其作用域为( )。
A.所在文件的全部范围B.所在程序的全部范围
C.所在函数的全部范围D.由具体定义位置和extern 说明来决定范围
7. 所谓静态存储即是在程序运行期间分配固定的( )。
A.变量名称B.变量值C.存储单元D.作用域
8. 设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是( )。
A.auto B.register C.static D.auto或register
9. 若变量定义时未初始化,则其值不确定的是( )。
A.静态全局变量B.静态局部变量C.局部变量D.全局变量
10. 以下叙述中错误的是( )。
A.用户定义的函数中可以没有return 语句
B.用户定义的函数中可以有多个return 语句,以便可以调用一次返回多个函数值
C.用户定义的函数中若没有return 语句,则应当定义函数为void 类型
D.函数的return 语句中可以没有表达式
11. 下列关于指针定义的描述中不正确的是( )。
A.指针变量是一种变量,该变量是用来存放某个变量的地址值的
B.指针变量的类型与它所指向的变量类型一致
C.指针变量的命名规则与标识符相同D.在定义指针时,”*”号表示指针变量的指向
12. 若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是( )。
A.*p=&a; scanf(“%lf”,p); B.*p=&a; scanf(“%f”,p);
C.p=&a; scanf(“%lf”,*p); D.p=&a; scanf(“%lf”,p);
13. 以下叙述中错误的是( )。
A.改变函数形参的值,不会改变对应实参的值B.函数可以返回地址值
C.可以给指针变量赋一个整数作为地址值D.当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL 14. 下列程序的运行结果是( )。
#include "stdio.h"
int f(int a)
{ switch (a)
{ case 0:return 0;
case 1:
case 2:return 1; }
return(f(a-2)+f(a-3));}
main()
{ int b;
b=f(9);
printf(“%d\n”,b);} A.10 B.7 C.8 D.9
15. 以下程序的输出结果是( )。
int f(int b[] , int m, int n)
{ int i,s=1;
for(i=m;i { b[i]=b[i-1]+b[i+1]; s+=b[i]; } return s; } main() { int x,a[]={1,2,3,4,5,6,7,8,9,10}; x=f(a,3,5); printf("%d\n",x); } A.23 B.26C.42D.35 16. 下列程序的输出结果是( )。 #include "stdio.h" int f(int n) { static int k, s; n--; for(k=n; k>0; k--) s += k; return s; } main( ) { int k; k=f(2); printf("(%d, %d)\n ", k, f(k));} A.(3, 3)B.(1, 1)C.(3, 6)D.(6, 12) 17. 函数f定义如下,执行语句”m=f(5);”后,m的值应为( )。 int f(int k) { if(k==0||k==1) return 1; else return f(k-1)+f(k-2); } A.3B.8 C.5D.13 18. 下列程序段的输出结果是( )。 int c[ ]={1, 7, 12}; int *k=c+1; printf("%d",*k++); A.2 B.7 C.8 D.12 19. 下列程序的运行结果是( )。 main() { int a=4,y; y=fun(a,++a); printf(“%d”,y);} int fun(int x,int c) { int b; if(x