C程序设计函数的声明与调用习题与答案.docx
《C程序设计函数的声明与调用习题与答案.docx》由会员分享,可在线阅读,更多相关《C程序设计函数的声明与调用习题与答案.docx(11页珍藏版)》请在冰豆网上搜索。
![C程序设计函数的声明与调用习题与答案.docx](https://file1.bdocx.com/fileroot1/2022-11/24/3ba56465-2911-4978-9106-5c7842f93b8e/3ba56465-2911-4978-9106-5c7842f93b8e1.gif)
C程序设计函数的声明与调用习题与答案
一、单选题
1、以下关于函数的叙述中正确的是()。
A.每个函数都可以被其它函数调用(包括main函数)
B.每个函数都可以被单独编译
C.每个函数都可以单独运行
D.在一个函数内部可以定义另一个函数
正确答案:
B
2、对于函数,正确的说法是()。
A.必须包含函数体
B.必须有返回信息
C.必须有返回语句
D.必须有形式参数
正确答案:
A
3、以下叙述中正确的是()。
A.函数的定义和函数的调用均不可以嵌套
B.函数的定义和函数的调用均可以嵌套
C.函数的定义可以嵌套,但函数的调用不可以嵌套
D.函数的定义不可以嵌套,但函数的调用可以嵌套
正确答案:
D
4、以下叙述中正确的是()。
A.C语言所有函数本质上都是外部函数
B.C语言编译时不检查语法
C.C语言的子程序有过程和函数两种
D.C语言的函数可以嵌套定义
正确答案:
A
5、以下函数定义正确的是()。
A.doublef(intx,inty)
{z=x+y;
returnz;
}
B.doublef(intx,inty)
{doublez;
z=x+y;
returnz;
}
C.doublef(intx,y)
{doublez=x+y;
returnz;
}
D.doublef(x,y)
{intx,y;
doublez;
z=x+y;
returnz;
}
正确答案:
B
6、若调用一个函数intf(),且此函数中没有return语句,则正确的说法是()。
A.该函数没有返回值
B.该函数返回一个确定的值
C.该函数返回一个不确定的值
D.该函数返回一个系统默认值
正确答案:
C
7、若定义函数:
fun(inta,floatb){
returna+b;
}
则该函数的返回类型是()。
A.不确定
B.void
C.int
D.float
正确答案:
C
8、C语言规定,函数返回值的类型是由()决定的。
A.return语句中的表达式类型
B.调用该函数时由系统临时
C.调用该函数时的主调函数
D.在定义函数时所指定的函数类型
正确答案:
D
9、对于函数返回类型,不正确的说法是()。
A.可以是int类型
B.可以是void类型
C.可以是char类型
D.可以是数组类型
正确答案:
D
10、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。
A.函数调用可以作为一个函数的形参
B.函数调用可以作为独立的语句存在
C.函数调用可以出现在表达式中
D.函数调用可以作为一个函数的实参
正确答案:
A
11、基本类型变量做实参时,它和对应的形参之间的数据传递方式是()。
A.值传递
B.地址传递
C.由实参传给形参,再由形参传给实参
D.由函数定义指定传递方式
正确答案:
A
12、以下叙述中错误的是()。
A.形参可以是常量、变量或表达式
B.实参可以是常量、变量或表达式
C.实参可以为任意类型
D.如果形参与实参的类型不一致,以形参类型为准
正确答案:
A
13、以下函数调用语句中,含有的实参个数是()。
Fcalc(exp1,(exp3,exp4,exp5));
A.3
B.1
C.2
D.4
正确答案:
C
14、在函数调用时,以下叙述中正确的是()。
A.实际参数和形式参数可以同名
B.函数间的数据传递不可以使用全局变量
C.函数调用后必须带回返回值
D.主调函数和被调函数总是在同一个文件里
正确答案:
A
15、下面程序执行后的输出结果是()。
#include
voidF(intx){return(3*x*x);}
intmain(){
printf("%d",F(3+5));
return0;
}
A.编译出错
B.192
C.25
D.29
正确答案:
A
16、设函数f的定义形式为:
voidf(charch,floatx){......}
则以下对函数f的调用语句中,正确的是()。
A.t=f('D',16.5);
B.f("abc",3.0);
C.f(32,32);
D.f('65',2.8);
正确答案:
C
17、若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是()。
A.intmain()
{floatfun(inti,intj);
……x=fun(i,j);……}
floatfun(inta,intb){……}
B.floatfun(int,int);
intmain()
{……x=fun(2,10);……}
floatfun(inta,intb){……}
C.floatfun(inta,intb){……}
intmain()
{……x=fun(i,j);……}
D.intmain()
{……x=fun(2,10);……}
floatfun(inta,intb){……}
正确答案:
D
18、若程序中定义了以下函数:
doublef(doublea,doubleb)
{return(a+b);}
并将其放在调用语句之后,则在调用之前应该对该函数进行函数原型说明,以下选项
中错误的说明是()。
A.doublef(double,double);
B.doublef(doublex,doubley);
C.doublef(doubleb,doubleA);
D.doublef(doublea,b);
正确答案:
D
19、关于函数原型声明,以下叙述中错误的是()。
A.函数在调用之前,一定要给出函数原型或函数定义,保证编译系统进行调用检查
B.如果函数定义出现在函数调用之前,可以不必加函数原型声明
C.标准库函数不需要函数原型声明
D.如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原型声明
正确答案:
C
20、在C语言中,计算正确的是()。
A.x**y
B.pow(x,y)
C.power(x,y)
D.x^y
正确答案:
B
21、有以下程序:
#include
voidf(intn);
intmain()
{voidf(intn);
f(5);
return0;
}
voidf(intn)
{printf("%d\n",n);}
以下叙述中错误的是()。
A.函数f无返回值,所以可用void将其类型定义为无值型
B.对于以上程序,编译时系统会提示出错信息:
“提示对f函数重复说明”。
C.若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
D.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
正确答案:
B
22、下列哪个类型函数不适合声明为内联函数()。
A.函数调用比较频繁
B.函数体语句较多
C.函数体语句较少
D.函数执行时间较短
正确答案:
B
23、在()情况下适宜采用inline定义内联函数。
A.函数体含有递归语句
B.需要加快程序的执行速度
C.函数代码多、不常调用
D.函数体含有循环语句
正确答案:
B
24、在函数调用过程中,如果函数A调用了函数B,函数B又调用了函数A,则()。
A.称为函数的直接递归调用
B.C语言中不允许这样的调用
C.称为函数的循环调用
D.称为函数的间接递归调用
正确答案:
D
25、下面程序执行后的输出结果是()。
#include
charf(charx,chary)
{
if(x>y)returny;
elsereturnx;
}
intmain()
{chara='9',b='8',c='7',d='6';
printf("%c",f(f(a,b),f(c,d)));
return0;
}
A.9
B.6
C.8
D.7
正确答案:
B
26、有以下程序段:
intfun1(doublea){returna*=a;}
intfun2(doublex,doubley)
{doublea=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+b);
}
且doublew;执行语句w=fun2(1.1,2.0);后变量w的值是()。
A.0.0
B.5.0
C.5
D.5.21
正确答案:
B
27、下面程序执行后的输出结果是()。
#include
voidfun(intx,inty,intz)
{z=x*x+y*y;}
intmain()
{inta=31;
fun(5,2,a);
printf("%d",a);
return0;
}
A.31
B.29
C.无定值
D.0
正确答案:
A
28、下面程序执行后的输出结果是()。
#include
longfib(intn)
{if(n>2)return(fib(n-1)+fib(n-2));
elsereturn
(2);
}
intmain()
{printf("%d",fib(3));
return0;
}
A.6
B.2
C.8
D.4
正确答案:
D
29、下面程序执行后的输出结果是()。
#include
intf(intn)
{if(n==1)return1;
returnf(n-1)+1;}
intmain()
{inti,j=0;
for(i=1;i<3;i++)j+=f(i);
printf("%d",j);
return0;
}
A.2
B.3
C.4
D.1
正确答案:
B
30、设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,
下列表达式不正确的是()。
A.intm=max(22,59,70);
B.intm=max(max(22,59),70);
C.intm=max(59,max(22,70));
D.intm=max(22,max(59,70));
正确答案:
A
31、对于以下递归函数f,调用f(4)的返回值是__________。
intf(intn){
if(n)returnf(n-1)+n;
elsereturnn;
}
A.4
B.无穷递归
C.10
D.14
正确答案:
C
三、填空题
1、C语言函数返回类型的默认定义类型是__________(使用类型标识符描述)。
正确答案:
int
2、可以将被调函数中获得的值返回给主调函数的语句是__________。
正确答案:
return
3、函数fun的功能是计算
doublefun(doublex,intn)
{inti;
doubley=1;
for(i=1;i<=n;i++)y=y*x;
returny;
}
主函数中已经正确定义m,a,b变量并赋值,调用fun函数计算m=a4+b4-(a+b)3:
的调用语句为______________________________。
正确答案:
m=fun(a,4)+fun(b,4)-fun(a+b,3);
5、若函数定义为:
intdata(){
floatx=9.9;
return(x);
}
则函数返回的值是__________。
正确答案:
9