C语言函数练习题及答案
1
【单选题】
在下列关于C函数定义的叙述中,正确的是??A、
函数可以嵌套定义,但不可以嵌套调用;
?
?B、
函数不可以嵌套定义,但可以嵌套调用;
?
?C、
函数不可以嵌套定义,也不可以嵌套调用;
?
?D、
函数可以嵌套定义,也可以嵌套调用;
?
我的答案:B得分:2.5分
2
【单选题】
下面函数调用语句含有实参的个数为?
nc((exp1,exp2),(exp3,exp4,exp5));
?A、
1
?
?B、
2
?
?C、
4
?
?D、
5
?
我的答案:B得分:2.5分
3
【单选题】
C语言中函数返回值的类型是由以下哪个选项决定的??A、
函数定义时指定的类型;
?
?B、
return语句中的表达式类型;
?
?C、
调用该函数时的实参的数据类型;
?
?D、
形参的数据类型;
?
我的答案:A得分:2.5分
4
【单选题】
以下关于函数叙述中,错误的是?
?A、
函数未被调用时,系统将不为形参分配内存单元;
?
?B、
实参与形参的个数必须相等,且实参与形参的类型必须对应一致;
?
?C、
当形参是变量时,实参可以是常量、变量或表达式;
?
?D、
如函数调用时,实参与形参都为变量,则这两个变量不可能共享同一内存空间;
?
我的答案:B得分:2.5分
5
【单选题】
若函数调用时参数为基本数据类型的变量,以下叙述正确的是??A、
实参与其对应的形参共享内存存储单元;
?
?B、
只有当实参与其对应的形参同名时才共享内存存储单元;
?
?C、
实参与对应的形参分别占用不同的内存存储单元;
?
实参将数据传递给形参后,立即释放原先占用的内存存储单元;
?
我的答案:C得分:2.5分
6
【单选题】
函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是??A、
实参将地址传递给形参,并释放原先占用的存储单元;
?
?B、
实参将地址传递给形参,调用结束时形参再将此地址回传给实参;
?
?C、
实参将值传递给形参,调用结束时形参再将其值回传给实参;
?
?D、
实参将值传递给形参,调用结束时形参并不将其值回传给实参;
?
我的答案:D得分:2.5分
7
【单选题】
若用数组名作为函数调用的实参,则传递给形参的是?
?A、
数组第一个元素的地址;
?
数组的第一个元素的值;
?
?C、
数组中所有元素的值;
?
?D、
数组元素的个数;
?
我的答案:A得分:2.5分
8
【单选题】C语言规定了程序中各函数之间调用关系,以下说法正确的是??A、既允许直接递归调用也允许间接递归调用;
?B、不允许直接递归调用也不允许间接递归调用;
?C、允许直接递归调用不允许间接递归调用;
?D、不允许直接递归调用允许间接递归调用;
我的答案:A得分:2.5分
9
【单选题】
递归函数f(n)=f(n-1)+n (n>1)的递归体是?
?A、
f(1)=0
?
?B、
f(0)=1
?
f(n)=f(n-1)+n
?
?D、
f(n)=n
?
我的答案:C得分:2.5分
10
【单选题】
若函数的形参为一维数组,则下列说法中正确的是()。?A、
使用函数时的对应实参必为数组名。
?
?B、
形参数组可以不指定大小。
?
?C、
形参数组的元素个数必须等于实参数组的元素个数。
?
?D、
形参数组的元素个数必须多于实参数组的元素个数。
?
我的答案:B得分:2.5分
11
【单选题】
在函数调用过程中,如果函数fun A调用了函数fun B,函数fun B又调用了函数fun A,则()。
?A、
为函数的直接递归调用
?
?B、
称为函数的间接递归调用
?
?C、
为函数的循环调用
?
?D、
C语言中不允许这样的递归调用
?
我的答案:B得分:2.5分
12
【单选题】
有以下函数定义:
void fun(int n,double x) {……}
下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。
?A、
fun(int y,double m);
?
?B、
k=fun(10,12.5);
?C、
fun(x,n);
?
?D、
void fun(n,x);
?
我的答案:C得分:2.5分
13
【单选题】
已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义方式为______。
int a[3][4];
f(a);
?A、
f(int array[][6])
?
?B、
f(int array[3][])
?
?C、
f(int array[][4])
?
?D、
f(int array[2][5])
我的答案:C得分:2.5分
14
【单选题】
若程序中定义函数
float fadd(float a, float b)
{
return a+b;
}
并将其放在调用语句之后,则在调用之前应对该函数进行说明。以下说明中错误的是?
?A、
float fadd(float a,b);
?
?B、
float fadd(float b, float a) ;
?
?C、
float fadd(float, float) ;
?
?D、
float fadd(float a, float b) ;
?
我的答案:A得分:2.5分
15
【单选题】
下面程序段运行后的输出结果是?
(假设程序运行时输入5,3回车)int a, b;
void swap( )
{
int t;
t=a;
a=b;
b=t;
}
void main()
{
int a,b;
scanf("%d,%d",&a, &b);
swap( );
printf ("a=%d,b=%d\n",a,b);
}
?A、
a=5,b=3
?
?B、
a=3,b=5
?
?C、
5,3
?
?D、
3,5
?
我的答案:A得分:2.5分16
【单选题】
以下程序运行后的输出结果是?
int fun (int x, int y)
{
if(x>y)
return x;
else
return y;
}
void main()
{
int x=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
}
?A、
3
?
6
?
?C、
8
?
?D、
12
?
我的答案:D得分:2.5分17
【单选题】
下列程序的输出结果是()。
#include "stdio.h"
void fun(int a,int b,int c)
{
c = a * b;
}
int main( )
{
int c;
fun(2,3,c);
printf("%d\n", c);
return 0;
}
?
?B、
1
?
?C、
6
?
?D、
无法确定
?
我的答案:D得分:2.5分
18
【单选题】
有以下程序,运行后的输出结果是()。
#include
float fun(int x, int y)
{
return(x+y);
}
void main()
{
int a=2,b=5,c=8;
printf(“%3.0f\n”, fun((int)fun(a+c, b), a-c));
}
?A、
编译出错
?
?B、
9
?
?C、
21
?
?D、
9.0
?
我的答案:A得分:0.0分
19
【单选题】
以下描述正确的是?
?A、
调用函数时的实参只能是有确定值的变量;
?
?B、
return()语句的括号中,可以是变量、常量或有确定值的表达式;
?
?C、
C语言中,函数调用时实参和形参间的参数传递方式不都是值传递;?
?D、
实参和形参若类型不匹配,编译时将报错;
?
我的答案:B得分:2.5分
20
【单选题】
已有以下代码
#include
int a=6,b=3;
int main()
{
int a=8;
printf("%d\n",(a>b?a:b));
}
则程序的输出结果是()?
?A、
3
?
?B、
6
?
?C、
8
?
?D、
36
?
我的答案:C得分:2.5分21
【单选题】
已有以下代码
#include
f()
{
static int x = 1;
x -= 1;
printf("%d,", x);
}
int main()
{
int i;
for (i = 0; i<4; i++)
f();
return 0;
}
则程序的输出是:()??A、
1, 2,3,4
?
?B、
0,1,2,3,
?
?C、
0,-1,-2,-3,
?
?D、
-1,-2,-3,-4,
?
我的答案:C得分:2.5分
22
【单选题】
C语言程序的基本单位是?
?A、
函数
?
?B、
过程
?
?C、
子程序
?
?D、
源程序文件
?
我的答案:A得分:2.5分
23
【单选题】以下说法中正确的是?
?A、C语言程序总是从第一个定义的函数开始执行;
?B、C语言程序中,要调用的函数必须在main( )函数中定义;?C、总是从main( )函数开始执行;
?D、main( )函数必须放在程序的开始部分;
我的答案:C得分:2.5分
24
【单选题】
在函数调用时,以下说法正确的是?
?A、
函数调用后必须带回返回值;
?
?B、
实际参数和形式参数可以同名;
?
?C、
函数间的数据传递不可以使用全局变量;
?
?D、
主调函数和被调函数总是在同一个文件里;
?
我的答案:B得分:2.5分
25
【填空题】
下面程序段运行后的输出结果是:_______
(假设程序运行时输入5,3回车)
void swap( int a, int b)
{
int t;
t=a;
a=b;
b=t;
}
void main()
{
int a,b;
scanf("%d,%d",&a, &b);
swap(a,b );
printf ("a=%d,b=%d\n",a,b);
}
我的答案:得分:0.0分
第一空:
a=3,b=5
批语
26
【填空题】
以下程序的功能是用递归方法计算工资,已知第一位员工工资最少,为3100元,其余员工工资一个比一个多500元,求第5位员工的工资。请填空。
salary(int n)
{
int s;
if(n==1)
s=3100;
else
s=salary(n-1)+500;
return s;
}
void main()
{
int n=5;
printf(“sarary:%d\n”,______);}
我的答案:得分:2.5分
第一空:
salary(5)
批语
27
【填空题】
分析以下程序的运行结果是_______
#include “stdio.h”
func(int a ,int b)
{
int c;
c=a+b;
return c;
}
int main()
{
int x=6,y,r;
y=x+2;