C语言函数练习题及答案.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【单选题】
在下列关于C函数定义的叙述中,正确的是?
A、
函数可以嵌套定义,但不可以嵌套调用;
B、
函数不可以嵌套定义,但可以嵌套调用;
C、
函数不可以嵌套定义,也不可以嵌套调用;
D、
函数可以嵌套定义,也可以嵌套调用;
我的答案:B得分:2.5分
2
【单选题】
下面函数调用语句含有实参的个数为?
n c((expl z exp2)z(exp3z exp4A exp5));
A、
B、
D、
5
我的答案:B得分:2.5分
3
【单选题】
c语言中函数返回值的类型是由以下哪个选项决定的?
A、
函数定义时指定的类型;
B、
return语句中的表达式类型;
C、
调用该两数时的实参的数据类型;
D、
形参的数据类型;
我的答案:A得分:2.5分
4
【单选题】
以下关于函数叙述屮,错误的是?
A、
两数未被调用时,系统将不为形参分配内存单元;
B、
实参与形参的个数必须相等,TL实参与形参的类型必须对应一致;
C、
当形参是变量时,实参可以是常量、变量或表达式;
D、
如两数调用时,实参与形参都为变:S,则这两个变量不可能共亨同一内存空间; 我的答案: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语言规定了程序中各函数之I'可调用关系,以下说法正确的是?
既允许直接递归调用也允许间接递归调用;
B、不允许直接递归调用也不允许间接递归调用;
C 允许直接递归调用不允许间接递归调用;
D、不允许直接递归调用允许间接递归调用;
我的答案:A得分:2.5分
9
【单选题】
递归函数f(n)=f(n-l)+n (n>l)的递归体是?
A、
f(l)=O
B、
c.
f(n)=f(n-l)+n
D.
f(n)=n
我的答案:C得分:2.5分
10
【单选题】
若函数的形参为一维数组,则下列说法中正确的是()O A、
使用畅数时的对应实参必为数组名。
B、
形参数组可以不指定大小。
C、
形参数组的元素个数必须等于实参数组的元素个数。
D、
形参数组的元素个数必须多于实参数组的元素个数。
我的答案:B得分:2.5分
【单选题】
在函数调用过程中,如果函数fun A调用了函数fun B,函数fun B又调用了函数fun A,则O o
A、
为畅数的直接递归调用
B、
称为换数的间接递归调用
C、
为换数的循环调用
D、
C语言中不允许这样的递归调用
我的答案:B得分:2.5分
12
【单选题】
有以下函数定义:
void fun(int n,double x) { ........ }
下选项中的变量都己正确定义并赋值,则对函数fun的正确调用语句是()。
A、
fun(int y,double m);
B、
fun(x, n);
D.
void fun(n,x);
我的答案:C得分:2.5分
13
【单选题】
己有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义方式为_________ o
int a[3][4];
f(a);
A、
f(int array[][6])
B、
f(int array[3][])
C、
f(int array[][4])
D、
我的答案: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);
我的答案:A得分:2.5分
D、
float fadd(float a, float b);
【单选题】
下而程序段运行后的输出结果是?
(假设程序运行时输入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 (H a=%d z b=%d\n",a z 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=6z r;
r=fun(fun(x,y),2*z); printf(n%d\n n z r);
A、
C、
8
D、
12
我的答案:D得分:2.5分17
【单选题】
下列程序的输出结果是()0 #include "stdio.h"
void fun(int a,int b,int c) {
c = a * b;
}
int main()
{
int c;
fun(2z3z c);
printf(u%d\n n z c);
return 0;
B、
1
C、
6
D、
无法确定
我的答案:D得分:2.5分
18
【单选题】
有以下程序,运行后的输出结果是()。
#include<stdio.h>
float fun(int x, int y)
{
return(x+y);
}
void main()
{
int a=2,b=5,c=8;
printf(u%3.0f\n,,z 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语言屮,函数调用时实参和形参间的参数传递方式不都是值传递;
实参和形参若类型不匹配,编译时将报错;
我的答案:B得分:2.5分
20
【单选题】
己有以下代码
#include<stdio.h>
int a=6z b=3;
int main()
{
int a=8;
printf("%d\n",(a>b?a:b)); }
则程序的输出结果是()?
A、
3
B、
6
C、
D、
我的答案:C得分:2.5分
21
【单选题】
己有以下代码
#include<stdio.h>
f()
{
static int x = 1;
x ・=1;
printf(n%d;\ x);
}
int main()
{
int i;
for (i = 0; i<4; i++) f();
return 0;
}
则程序的输出是:O ?
A、
1, 2,3,4
B、
0,123,
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 z &b);
swap(a,b );
printf ("a=%d,b=%d\n"z a,b);
}
我的答案:得分:0.0分
第一空:
a=3,b=5
批语
26
【填空题】
以下程序的功能是用递归方法计算工资,己知第一位员工工资最少,为3100元,其余员工工资一个比一个多500元,求第5位员工的工资。
请填空。
salary(int n)
{
int s:
if (n==l)
s=3100;
else
s=salary(n-l)+500:
return s:
}
void main ()
{
int n=5;
printf (''sarary: %d\n z,z______ );}
我的答案:得分: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 z r;
y=x+2;
r=fu nc(x++,y);
printf(H%d %d %d\n",x,y,r); return 0; }
我的答案:得分:2.5分
第一空:
7 8 14
批语
28
【填空题】
有如下程序
long fib(int n)
{
if(n>2)
return(fib(n-l)+fib(n-2)): else
return 2;
}
int main()
{
printf(n%d\n", fib(3)):
}
该程序的输出结果是________________ 。
我的答案:得分:2.5分
第一空:
4
批语
29
【填空题】
以下程序的输出结果是______________ O
f(int b[], int m, intn)
{
inti, s=0;
for(i=m; i<n; i=i+2)
s=s+b[i];
returns;
}
int main()
{
int x, a[]={l, 2, 3, 4, 5, 6, 7, 8, 9};
x=f(a, 3, 7);
printf(H%d\n", x);
}
我的答案:得分:2.5分
第一空:
10
批语
30
【填空题】
以下程序的输出结果是__________ 。
#include<stdio.h> int fac_sum(int n)
static int f=l,t=l,s=O;
int i;
if(n>t)
for(i=t+l; i<=n; i++)
else
{
f=l;
for(i=l; iv=n; i++)
f=f*i;
}
t=n; s=s+f;
return(s);
}
void main()
{
int a[]={3,5,2},i z sum;
for(i=0; i<3; i++) sum=fac_sum(a[i]);
printf(''sum=%d\n,,z sum);
/
J
我的答案:得分:2.5分
第一空:
sum=128
批语
【填空题】
以下程序的运行结果是 ______________
#include <stdio.h> int n=l;
void main()
static int x=5;
void func();
in t y; y=n;
printf("MAIN: x=%2d y=%2d n=%2d\n"z x,y z n);
func();
printf("MAIN: x=%2d y=%2d n=%2d\n"z x,y z n);
func();
}
void func()
static int x=4; int y=10;
x=x+2;
n=n+10;
y=y+n;
printf("FUNC: x=%2d y=%2d n=%2d\n"z x,y z n);
}
我的答案:得分:2.5分
第一空:
MAIN: x= 5 y= 1 n二1FUNC: x= 6 y=21 n二11MAIN: x= 5 y= 1 n=11FUNC: x= 8 y=31 n=21
批语
32
【填空题】
输入一个整数io,以下程序的运行结果是#in clude<stdio.h>
void main()
{
int sub(int);
int a z e[10],c z i=0;
printf(”输入一个整数\n“);scan f(H%d",&a);
while(a!=0)
{
c=sub(a);
a=a/2;
e[i]=c;
i++;
}
for(; i>0; i-)
p「intf(“%d”,e[i・l]);
}
int sub(int a)
{
int c;
c=a%2;
return c;
我的答案:得分:2.5分第一空:1010
批语
33
【填空题】
以下程序的运行结果是—
#include <stdio.h>
int main()
{
int i;
void fun();
for (i=0;iv3;i++)
fun();
return 0;
}
void fun()
{
static int x=0;
x+=l;
printfC'%3d H z x);
}
我的答案:得分:2.5分第一空:123
批语
【填空题】以下程序的运行结果是—#include <stdio.h>
int workover(int i);
int reset(int i);
int i=0;
int main()
{
int i=5;
reset(i/2);
printf(,,i=%d\n,,z i); reset(i=i/2);
printf(,,i=%d\n,,z i); reset(i/2);
printf(,,i=%d\n H,i); workover(i);
printf(,,i=%d\n,,z i); return 0;
}
int workover(int i)
{
i=(i%i)*((i*i)/(2*i)+4); printf(,,i=%d\n,,z i); return i;
} int reset(int i)
i=i<=2?5:0;
return i;
}
我的答案:得分:2・5分
第一空:
i=5i=2i=2i=0i=2
批语
35
【判断题】
函数调用时值传递方式特点:形参与实参占用相同的内存单元,单向传递。
我的答案:X得分:2.5分
36
【判断题】
函数定义与函数说明不是同一个概念。
我的答案:V得分:2.5分
37
【判断题】
C语言屮,函数的定义不能嵌套,而调用是可以嵌套的。
我的答案:V得分:2.5分
38
【判断题】
函数调用时值传递特点:无论是值传递还是地址传递,都是单向的。
我的答案:V得分:2.5分
39
【判断题】
函数调用时,当数组名作函数参数时,实参数组值与形参数组值不同。
我的答案:X得分:2.5分
40
【判断题】
一个C程序可以由一个或多个函数组成,其屮必须有且只有一个main函数。
我的答案:V得分:2.5分。