C语言函数练习习题及答案.docx

上传人:b****5 文档编号:29987215 上传时间:2023-08-04 格式:DOCX 页数:26 大小:18.61KB
下载 相关 举报
C语言函数练习习题及答案.docx_第1页
第1页 / 共26页
C语言函数练习习题及答案.docx_第2页
第2页 / 共26页
C语言函数练习习题及答案.docx_第3页
第3页 / 共26页
C语言函数练习习题及答案.docx_第4页
第4页 / 共26页
C语言函数练习习题及答案.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C语言函数练习习题及答案.docx

《C语言函数练习习题及答案.docx》由会员分享,可在线阅读,更多相关《C语言函数练习习题及答案.docx(26页珍藏版)》请在冰豆网上搜索。

C语言函数练习习题及答案.docx

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、

实参与对应的形参分别占用不同的内存存储单元;

∙D、

实参将数据传递给形参后,立即释放原先占用的内存存储单元;

我的答案:

C得分:

?

2.5分

6

【单选题】

函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是?

∙A、

实参将地址传递给形参,并释放原先占用的存储单元;

∙B、

实参将地址传递给形参,调用结束时形参再将此地址回传给实参;

∙C、

实参将值传递给形参,调用结束时形参再将其值回传给实参;

∙D、

实参将值传递给形参,调用结束时形参并不将其值回传给实参;

我的答案:

D得分:

?

2.5分

7

【单选题】

若用数组名作为函数调用的实参,则传递给形参的是?

∙A、

数组第一个元素的地址;

∙B、

数组的第一个元素的值;

∙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

∙C、

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的正确定义方式为______。

inta[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

∙B、

6

∙C、

8

∙D、

12

我的答案:

D得分:

?

2.5分

17

【单选题】

下列程序的输出结果是()。

#include"stdio.h"

voidfun(inta,intb,intc)

{

?

?

c=a*b;

}

int?

main()

{

?

?

intc;

?

?

fun(2,3,c);

?

?

printf("%d\n",c);

?

?

return0;

}

∙A、

0

∙B、

1

∙C、

6

∙D、

无法确定

我的答案:

D得分:

?

2.5分

18

【单选题】

有以下程序,运行后的输出结果是(?

)。

#include

floatfun(intx,inty)

{

return(x+y);

}

voidmain()

{

inta=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

inta=6,b=3;

intmain()

{

?

?

inta=8;

?

?

printf("%d\n",(a>b?

a:

b));

}

则程序的输出结果是()?

∙A、

3

∙B、

6

∙C、

8

∙D、

36

我的答案:

C得分:

?

2.5分

21

【单选题】

已有以下代码

#include

f()

{

?

?

?

staticintx=1;

?

?

?

x-=1;

?

?

?

printf("%d,",x);

}

intmain()

{

?

?

?

inti;

?

?

?

for(i=0;i<4;i++)

?

?

?

?

?

?

?

?

f();

?

?

?

return0;

}

则程序的输出是:

()?

∙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回车)

voidswap(inta,?

intb)

{?

?

?

intt;?

?

?

t=a;

?

?

?

a=b;

?

?

?

b=t;?

}

voidmain()

{?

?

?

?

inta,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(inta,intb)

{

?

?

intc;

c=a+b;

returnc;

}

intmain()

{

intx=6,y,r;

y=x+2;

r=func(x++,y);

printf("%d%d%d\n",x,y,r);

return0;

}

我的答案:

得分:

?

2.5分

第一空:

?

7814

批语

28

【填空题】

有如下程序

longfib(intn)

{

if(n>2)

return(fib(n-1)+fib(n-2));

else

return2;

}

intmain()

{

printf("%d\n",fib(3));

}

该程序的输出结果是_______。

我的答案:

得分:

?

2.5分

第一空:

?

4

批语

29

【填空题】

以下程序的输出结果是________。

f(int?

b[],int?

m,int?

n)

{

int?

i,s=0;

for(i=m;i

s=s+b[i];

returns;

}

int?

main()

{

int?

x,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

printf("%d\n",x);

}

我的答案:

得分:

?

2.5分

第一空:

?

10

批语

30

【填空题】

以下程序的输出结果是_____。

#include

int?

fac_sum(int?

n)

{

?

?

?

?

static?

int?

f=1,t=1,s=0;

?

?

?

?

int?

i;

?

?

?

?

if(n>t)

?

?

?

?

?

?

?

for(i=t+1;?

i<=n;?

i++)

?

?

?

?

?

?

?

?

?

?

f=f*i;

?

?

?

?

else

?

?

?

?

{

?

?

?

?

?

?

?

f=1;

?

?

?

?

?

?

?

for(i=1;?

i<=n;?

i++)

?

?

?

?

?

?

?

?

?

?

f=f*i;

?

?

?

?

}

?

?

?

?

t=n;?

s=s+f;

?

?

?

?

return(s);

}

void?

main()

{

?

?

?

?

int?

a[]={3,5,2},i,sum;

?

?

?

?

for(i=0;?

i<3;?

i++)

?

?

?

?

?

?

?

sum=fac_sum(a[i]);

?

?

?

?

printf(“sum=%d\n”,sum);

}

我的答案:

得分:

?

2.5分

第一空:

?

sum=128

批语

31

【填空题】

以下程序的运行结果是________。

#include

intn=1;

voidmain()

{

?

?

?

staticintx=5;

?

?

?

voidfunc();

?

?

?

inty;?

?

y=n;

?

?

?

printf("MAIN:

x=%2dy=%2dn=%2d\n",x,y,n);

?

?

?

func();

?

?

?

printf("MAIN:

x=%2dy=%2dn=%2d\n",x,y,n);

?

?

?

func();

}?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

voidfunc()

{

?

?

?

staticintx=4;

?

?

?

inty=10;

?

?

?

x=x+2;

?

?

?

n=n+10;

?

?

?

y=y+n;

?

?

?

printf("FUNC:

x=%2dy=%2dn=%2d\n",x,y,n);

}

我的答案:

得分:

?

2.5分

第一空:

?

MAIN:

x=5y=1n=1FUNC:

x=6y=21n=11MAIN:

x=5y=1n=11FUNC:

x=8y=31n=21

批语

32

【填空题】

输入一个整数10,以下程序的运行结果是_______。

#include

voidmain()

{

?

intsub(int);

?

inta,e[10],c,i=0;

?

printf("输入一个整数\n");

?

scanf("%d",&a);

?

while(a!

=0)

?

{

?

c=sub(a);

?

a=a/2;

?

e[i]=c;

?

i++;

?

}

?

for(;i>0;i--)

?

printf("%d",e[i-1]);

}

intsub(inta)

{

?

?

?

intc;

?

?

?

c=a%2;

?

?

?

returnc;

}

我的答案:

得分:

?

2.5分

第一空:

?

1010

批语

33

【填空题】

以下程序的运行结果是______。

#include

intmain()

{

?

inti;

?

voidfun();

?

for(i=0;i<3;i++)?

?

?

?

?

fun();

?

return0;

}

voidfun()

{

?

staticintx=0;?

?

x+=1;

?

printf("%3d",x);

}

我的答案:

得分:

?

2.5分

第一空:

?

123

批语

34

【填空题】

以下程序的运行结果是________。

#include

intworkover(inti);

intreset(inti);

inti=0;

intmain()

{

?

inti=5;

?

reset(i/2);

?

printf("i=%d\n",i);?

?

reset(i=i/2);

?

printf("i=%d\n",i);?

?

reset(i/2);

?

printf("i=%d\n",i);?

?

workover(i);

?

printf("i=%d\n",i);

?

return0;

}

intworkover(inti)

{

?

i=(i%i)*((i*i)/(2*i)+4);

?

printf("i=%d\n",i);?

?

returni;

}

intreset(inti)

{

?

i=i<=2?

5:

0;?

?

returni;

}

我的答案:

得分:

?

2.5分

第一空:

?

i=5i=2i=2i=0i=2

批语

35

【判断题】

函数调用时值传递方式特点:

形参与实参占用相同的内存单元,单向传递。

我的答案:

×得分:

?

2.5分

36

【判断题】

函数定义与函数说明不是同一个概念。

我的答案:

√得分:

?

2.5分

37

【判断题】

c语言中,函数的定义不能嵌套,而调用是可以嵌套的。

我的答案:

√得分:

?

2.5分

38

【判断题】

函数调用时值传递特点:

无论是值传递还是地址传递,都是单向的。

我的答案:

√得分:

?

2.5分

39

【判断题】

函数调用时,当数组名作函数参数时,实参数组值与形参数组值不同。

我的答案:

×得分:

?

2.5分

40

【判断题】

一个C程序可以由一个或多个函数组成,其中必须有且只有一个main函数。

我的答案:

√得分:

?

2.5分

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1