5.1 选择题
(346) 形参的缺省存储类别是_____。
a. 自动(auto) b. 静态(static)
c. 寄存器(register) d. 外部(extern)
(a)
(347) 下列程序的输出结果是_____。
fun(int a, int b, int c)
{
c = a*b;
}
main( )
{
int c;
fun(2, 3, c);
printf("%d\n", c);
}
a. 0 b. 1 c. 6 d. 无法确定
(d)
(348) 在C程序中,若对函数类型未加说明,则函数的隐含类型为_____。
a. int b. double c. void d. char
(a)
(349) 以下程序的输出结果是_____。
# include
main()
{
printf("%d\n",NULL);
}
a. 不确定的(因变量无定义) b.0 c.-1 d.1
(b)
(350) 简单变量做实参时,它相对应形参之间的数据传递方式是____。
a. 地址传递
b. 单向值传递
c. 由实参传给形参,再由形参传回给实参
d. 由用户指定传递方式
(b)
(351) 以下四个程序中, ______不能对两个整型变量的值进行交换。
a. # include
main()
{
int a=10, b=20;
swap(&a,&b);
printf("%d %d\n", a, b);
}
swap(int *p, int *q)
{
int *t;
t=(int)malloc(sizeof(int));
t=p;
*p=*q;
*q=*t;
}
b. # include
main()
{
int a=10,b=20;
swap(&a,&b);
printf("%d %d\n", a, b);
}
swap(int *p, int *q)
{
int t;
t=*p;
*p=*q;
*q=t;
}
c. # include
main()
{
int *a,*b;
*a=10,*b=20;
swap(a,b);
printf("%d %d\n", *a, *b);
}
swap(int *p, int *q)
{
int t;
t=*p;
*p=*q;
*q=t;
}
d. # include
main()
{
int a=10,b=20;
int x=&a,y=&b;
swap(x,y);
printf("%d %d\n", a, b);
}
swap(int *p, int *q)
{
int t;
t=*p;
*p=*q;
*q=t;
}
(a.c.d)
(352) 不是建立函数的目的选项是_____。
a. 提高程序的执行效率
b. 提高程序的可读性
c. 减少程序的篇幅
d. 减少程序文件所占内存
(a.c.d)
(353) 下面关于递归的说法正确的是_____。
a. 每次当一个递归函数被调用时, 程序首先应该检查其些基本的条件是否满足了, 例如某个参数的值等于零, 函数应停止递归;
b. 每次当函数被递归调用时, 传递给函数一个或多个参数, 应该以某种方式变得"更简单";
c. 一般情况下, 递归方法比迭代方法快;
d. 递归函数的目的是执行一系列调用, 一直到达某一点, 序列终止。
(a.b.d)
(354) 下面说法正确的是_____。
a. 函数定义可以嵌套,但函数调用不能嵌套
b. 函数定义不可以嵌套,但函数调用可以嵌套
c. 函数定义和调用均不能嵌套
d. 函数定义和调用均可以嵌套
(b)
(355) 有一函数
y=
以下程序段中不能根据x的值正确计算出y的值的是______。
a. if(x>0) y=1;else if(x==0) y=0;else y=-1;
b. y=0;if(x>0) y=1;else if(x<0) y=-1;
c. y=0;if(x>=0)if(x>0) y=1;else y=-1;
d. if(x>=0) if(x>0) y=1;else y=0;else y=-1;
(c)
(356) 若定义了以下函数:
void f(......)
{
……
*p=(double *)malloc(10*sizeof(double));
……
}
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是_____。
a. double *p c. float **p c. double **p d. float *p
(c)
(357) 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是____。
a. 函数调用可以作为独立的语句存在 b. 函数调用可以作为一个函数的实参
c. 函数调用可以出现在表达式中 d. 函数调用可以作为一个函数的形参
(d)
(358) 已定义以下函数
fun(int *p)
{
return *p;
}
该函数的返回值是_____。
a. 不确定的值 b. 形参p中存放的值
c. 形参p所指存储单元中的值 d. 形参p的地址值
(c)
(359) 下列函数定义中,会出现编译错误的是_____。
a. max(int x,int y,int *z) b. int max(int x,y)
{ *z=x>y ? x:y; } { int z;
z=x>y ? x:y;
return z; }
c. max(int x,int y) d. int max(int x,int y)
{ int z; { return(x>y?x:y); }
z=x>y?x:y;
return(z);
}
(b)
(360) 已定义以下函数
fun(char *p2, char *p1)
{
while((*p2=*p1)!='\0')
{
p1++;
p2++;
}
}
函数的功能是_____。
a. 将p1所指字符串复制到p2所指内存空间
b. 将p1所指字符串的地址赋给指针p2
c. 对p1和p2两个指针所指字符串进行比较
d. 检查p1和p2两个指针所指字符串中是否有'\0'
(a)
(361) 函数调用语句 func((a1,a2,a3),(a4,a5)); 的参数个数是____。
a. 2 b. 5 c. 1 d. 调用方式不合法
(a)
(362) 下列程序的输出结果是_____。
fun(int a, int b, int c)
{
c = a*b;
}
void main( )
{
int c;
fun(2,3,c);
printf("%dn", c);
}
a. 0 b. 1 c. 6 d. 无法确定
(d)
(363) 在C程序中,若对函数类型未加说明,则函数的隐含类型为_____。
a. int b. double c. void d. char
(a)
(364) 数组名作为参数传递给函数,作为实在参数的数组名被处理为_____。
a. 该数组的元素个数
b. 该数组中各元素的值
c. 该数组的首地址
d. 以上答案均不对
(c)
(365) 以下说法正确的是____。
a. 用户若需调用标准函数,调用前必须重新定义
b. 用户可以重新定义系统标准库函数,若如此,原系统标准库函数将失效
c. 允许用户重新定义标准函数
d. 要调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
(b.c)
(366) 以下关于说法正确的是_____。
a. 实参和与其对应的形参各占用独立的存储单元
b. 实参与其对应的形参共占用一个存储单元
c. 实参和与其对应的形参同名时才共占用存储单元
d. 形参虚拟的,不占用存储单元
(d)
(367) 若调用一个函数(无全局、指针、静态变量),且此函数中没有return语句,则关于该函数正确的说法是_____。
a. 无返回值
b. 返回若干个系统默认值
c. 能返回一个用户所希望的函数值
d. 返回一个不确定的值
(a)
(368) 在c语言中以下不正确的说法是_____。
a. 实参可以是常量、变量、或表达式
b. 形参可以是常量、变量或表达式
c. 实参可以为任意类型
d. 形参应与其对应的实参类型一致
(b)
(369) 若使用一位数组名作函数实参,则以下正确的说法是_____。
a. 必须在主调函数中说明此数组的大小
b. 实参数组类型与形参数组类型可以不匹配
c. 在被调用函数中,不需要考虑形参数组的大小
d. 实参数组名与形参数组名必须一致
(a.c)
(370) 函数调用strcat(strcpy(str1,str2),str3)的功能是_______。
a. 将串str1复制到串str2中后在连接到串str3之后
b. 将串str1连接到串str2之后再复制到串str3之后
c. 将串str2复制到串str1中后再将串str3连接到串str1之后
d. 将串str2连接到串str1中后再将串str1复制到串str3中
(c)
(371) 下面说法正确的是______。
a. C语言中函数名直接对应于函数生成的指令代码在内存中的地址,因此函数名可以直接赋给指向函数的指针;
b. 调用函数实际上等同于"调转指令+参数传递处理+回归位置入栈";
c. 函数调用最核心的操作是将函数生成的目标代码的首地址赋给CPU的PC寄存器;
d. 函数调用的本质是跳转到某一个地址单元的code去执行。
(a.b.c)
阅读(1071) | 评论(0) | 转发(0) |