c语言 第8章 函数习题.docx
《c语言 第8章 函数习题.docx》由会员分享,可在线阅读,更多相关《c语言 第8章 函数习题.docx(12页珍藏版)》请在冰点文库上搜索。
![c语言 第8章 函数习题.docx](https://file1.bingdoc.com/fileroot1/2023-7/13/44ca32ee-dbd1-4289-99f7-b166d72d5c50/44ca32ee-dbd1-4289-99f7-b166d72d5c501.gif)
c语言第8章函数习题
第8章函数习题
A卷
1、单项选择题
(1)C语言总就是从函数开始执行。
A
A、mainB、处于最前的C、处于最后的D、随机选一个
(2)函数在定义时,省略函数类型说明符,则该函数值的类型为。
A
A、intB、floatC、longD、double
(2)以下函数,真正地没有返回值。
B
A、inta(){inta=2;return(a);}B、voidb(){printf("c");}
C、inta(){inta=2;returna;}D、以上都就是
(3)在C语言中,有关函数的说法,以下正确的就是。
A
A、函数可嵌套定义,也可嵌套调用B、函数可嵌套定义,但不可嵌套调用
C、函数不可嵌套定义,但可嵌套调用D、函数不可嵌套定义,也不可嵌套调用
(4)以下函数调用语句中,含有实参的个数为。
C
fun((2,3),(4,5+6,7));
A、1B、2C、5D、6
(5)函数调用可以在。
D
A、函数表达式中B、函数语句中C、函数参数中D、以上都就是
(6)被调函数返回给主调函数的值称为。
C
A、形参B、实参C、返回值D、参数
(7),可以不进行函数类型说明。
D
A、被调函数的返回值就是整型或字符型时B、被调函数的定义在主调函数定义之前时
C、在所有函数定义前,已在函数外预先说明了被调函数类型D、以上都就是
(8)被调函数通过语句,将值返回给主调函数。
D
A、ifB、forC、whileD、return
(9)被调函数调用结束后,返回到。
D
A、主调函数中该被调函数调用语句处
B、主函数中该被调函数调用语句处
C、主调函数中该被调函数调用语句的前一语句
D、主调函数中该被调函数调用语句的后一语句
(10)以下对C语言函数的有关描述中,正确的就是。
A
A、在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B、C函数既可以嵌套定义又可递归调用
C、函数必须有返回值,否则不能使用函数
D、C程序中有调用关系的所有函数必须放在同一个源程序文件中
(11)C语言中函数的隐含存储类型就是。
C
A、autoB、staticC、externD、无存储类型
(12)能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的就是。
A
A、return这两个数B、形参用两个元素的数组
C、形参用两个这种数据类型的指针D、用两个全局变量
(13)C语言可执行程序从什么地方开始执行()。
C
A、程序中第一条可执行语句B、程序中第一个函数
C、程序中的main函数D、包含文件中的第一个函数
(14)有一个函数原型如下所示,则该函数的返回类型为()。
C
abc(floatx,floaty);
A、voidB、doubleC、intD、float
2、填空题
(1)变量的作用域主要取决于变量,变量的生存期既取决于变量,又取决于变量。
所处的位置,所处的位置,存储类型
(2)说明变量时,若省略存储类型符,系统默认其为存储类别,该存储类别的类型符为:
。
动态,auto
(3)静态型局部变量的作用域就是,生存期就是。
它所在的局部,整个程序
(4)函数中的形参与调用时的实参都就是数组名时,传递方式为,都就是变量时,传递方式为。
址传递,值传递
(5)函数的形式参数的作用域为,全局的外部变量与函数体内定义的局部变量重名时,_________变量优先。
该函数中,局部
(6)若自定义函数要求返回一个值,则应在该函数体中有一条语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符。
return,void
(7)若函数的形式参数就是指针类型,则实参可以就是或。
指针,数组名
(8)函数的参数为char*类型时,形参与实参结合的传递方式为。
址传递
(9)函数的实参为常量时,形参与实参结合的传递方式为。
值传递
(10)下面这个函数的功能就是求两个整数的积,并通过形参传回结果,请填空。
intintint**result
voidmul(___x,___y,___result)
{
___=x*y;
}
3、判断题
(×)
(1)函数说明指的就是在程序中设定一个函数模块。
(√)
(2)形参只有在被调用时才分配存储空间。
(×)(3)在C的函数中,最好使用全局变量。
(×)(4)在调用函数时,实参传值给形参,调用结束时,形参值传给实参。
(√)(5)所有函数定义都就是并行的,相互独立的。
(×)(6)函数的隐含存储类型就是extern。
(×)(7)形参可以就是常量、变量或表达式。
(×)(8)函数调用可以作为一个函数的形参。
(√)(9)C语言规定,实参应与其对应的形参类型一致。
(×)(10)定义函数时,形参的类型说明可以放在函数体内。
4、程序填空题
(1)对数组按值从大到小的顺序排序后输出,请填空。
#include
voidmain()
{
floata[7]={2,6,3,8,3,12,9};
inti;
voidsort(float*,int);
;
for(i=0;i<7;i++)printf("%f",a[i]);
printf("\n");
}
voidsort()
{
inti,j,k;floatt;
for(i=0;i{
k=i;
for(j=i+1;jif()k=j;
{t=*(p+i);*(p+i)=*(p+k);*(p+k)=t;}
}
}
sort(a,7)float*p,intn*(p+k)<*(p+j)if(k!
=i)
(2)下列函数在n个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填空。
#include
voidfind(float*p,intmax,intmin,intn)
{
intk;
*max=*p;
for(k=1;k{
t=*(p+k);
if()*max=t;
if(t<*min)*min=t;
}
}
floatt;*min=*p;*maxB卷
5、写出下列程序运行结果
(1)
main()
{
inti=1,p;
p=fun(i,i+1);
printf("%d\n",p);
}
intfun(inta,intb)
{
intf;
if(a>b)
f=1;
elseif(a==b)
f=0;
else
f=-1;
returnf;
}
-1
(2)键盘输入abcdef
#include
voidfun()
{
charc;
if((c=getchar())!
='\n')
fun();
putchar(c);
}
voidmain()
{fun();}
fedcba
(3)
#include
#defineC5
intx=1,y=C;
voidmain()
{
intx;
x=y++;printf("%d%d\n",x,y);
if(x>4){intx;x=++y;printf("%d%d\n",x,y);}
x+=y--;
printf("%d%d\n",x,y);
}
56
77
126
(4)
#include
intc,a=4;
func(inta,intb)
{c=a*b;a=b-1;b++;return(a+b+1);}
voidmain()
{
intb=2,p=0;c=1;
p=func(b,a);
printf("%d,%d,%d,%d\n",a,b,c,p);
}
4,2,8,9
(5)
unsignedfun6(unsignednum)
{
unsignedk=1;
do{k*=num%10;num/=10;}
while(num);
returnk;
}
voidmain()
{
unsignedn=26;
printf("%d\n",fun6(n));
}
12
(6)
#include
intmax(inta,intb);
main()
{
intx,y,z,t,m;
scanf("%d,%d,%d",&x,&y,&z);
t=max(x,y);
m=max(t,z);
printf("%d",m);
}
intmax(inta,intb)
{
if(a>b)
return(a);
else
return(b);
}
运行时若输入:
10,15,9则输出:
___15
运行时若输入:
300,129,300则输出:
___300
(7)
#include
longsum(inta,intb);
longfactorial(intn);
main()
{
intn1,n2;
longa;
scanf("%d,%d",&n1,&n2);
a=sum(n1,n2);
printf("a=%1d",a);
}
longsum(inta,intb)
{
longc1,c2;
c1=factorial(a);
c2=factorial(b);
return(c1+c2);
}
longfactorial(intn)
{
longrtn=1;
inti;
for(i=1;i<=n;i++)
rtn*=i;
return(rtn);
}
运行时若输入:
2,3则输出:
___8
运行时若输入:
0,5则输出:
___121
(8)
#include
ints();
intx,y;
main()
{
intn;
x=1;y=2;
n=s();
printf("x=%d,y=%d,n=%d",x,y,n);
}
ints()
{
intz;
x=3;y=4;
z=x+y;
return(z);
}
程序运行后输出:
___3,4,7
(9)以下程序的输出结果就是a=___,b=___,c=___。
#include
intfunc(inta,int*p);
voidmain()
{
inta=1,b=2,c;
c=func(a,&b);
b=func(c,&a);
a=func(b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
}
intfunc(inta,int*p)
{
a++;
*p=a+2;
return(*p+a);
}
361619