习题(函数和指针)
选择题
1-5
A
B
D
D
B
6-10
D
C
B
C
C
若有”fun(inta[],intn)”,以下说法正确的是()。A.函数的类型为单精度类型B.第一个实参应该是数组名C.实参和形参之间是一个值传递的过程D.以上说法都不对
下列有关函数调用的说法不正确的是()。
A.若用值传递方式,则形式参数在函数被调用时才分配内存
B.实际参数和形式参数不可以同名
C.主调函数和被调用函数可以不在同一个文件中
D.函数间传送数据可以使用外部全局变量
下列叙述中正确的是()。
A.函数可以嵌套定义,但不能嵌套调用
B.函数可以嵌套调用,也可以嵌套定义
C.函数不可以嵌套定义,也不可以递归调用
D.函数可以嵌套调用,但不能嵌套定义
若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在,不占用具体存储单元C.同名的实参和形参占同一存储单元
D.函数的形参和实参分别占用不同的存储单元
函数中未指定存储类型的变量,其隐含的存储类型是()。
A.staticB.autoC.externD.register
在一个C语言源程序文件中所定义的全局变量,其作用域为:A.所在文件的全部范围B.所在程序的全部范围
C.所在函数的全部范围D.由具体定义位置和extern说明来决定范围
所谓静态存储即是在程序运行期间分配固定的()。
A.变量名称B.变量值C.存储单元D.作用域
以下只有在使用时才为该类型变量分配内存的存储类型是()。
A.auto和staticB.auto和register
C.register和staticD.extern和register
设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是()。A.autoB.registerC.staticD.auto或register
若变量定义时未初始化,则其值不确定的是()。
A.静态全局变量 B.静态局部变量 C.局部变量 D.全局变量
11-16
B
D
D
C
B
A
以下叙述中错误的是()。
A.用户定义的函数中可以没有return语句
B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C.用户定义的函数中若没有return语句,则应当定义函数为void类型
D.函数的return语句中可以没有表达式
下列关于指针定义的描述中不正确的是()。
A.指针变量是一种变量,该变量是用来存放某个变量的地址值的
B.指针变量的类型与它所指向的变量类型一致
C.指针变量的命名规则与标识符相同
D.在定义指针时,”*”号表示指针变量的指向
若有说明语句: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);
以下叙述中错误的是()。
A.改变函数形参的值,不会改变对应实参的值B.函数可以返回地址值C.可以给指针变量赋一个整数作为地址值D.当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL
下列程序的运行结果是()。
#include"stdio.h"
intf(inta)
{switch(a)
{case0:return0;
case1:case2:return1;
}
return(f(a-2)+f(a-3));
}
main()
{intb;
b=f(9);
printf(“%d\n”,b);
}
A.10 B.7 C.8 D.9
以下程序的输出结果是()。
intf(intb[],intm,intn)
{inti,s=1;
for(i=m;i
{b[i]=b[i-1]+b[i+1];s+=b[i];}
returns;}
main()
{intx,a[]={1,2,3,4,5,6,7,8,9,10};
x=f(a,3,5);
printf("%d\n",x);}
A.23 B.26 C.42 D.35
17-20
B
B
B
D
下列程序的输出结果是(B)。
#include"stdio.h"
intf(intn)
{staticintk,s;
n--;
for(k=n;k>0;k--)
s+=k;
returns;
}
main()
{intk;
k=f(2);
printf("(%d,%d)\n",k,f(k));
}
A.(3,3) B.(1,1) C.(3,6) D.(6,12)
函数f定义如下,执行语句”m=f(5);”后,m的值应为(B)。
intf(