文档库 最新最全的文档下载
当前位置:文档库 › 第六章函数习题

第六章函数习题

1. 单项选择题
(1)C 语言总是从 函数开始执行。
A. main B. 处于最前的
C.处于最后的 D. 随机选一个
(2)函数在定义时,省略函数类型说明符,则该函数值的类型为 。
A. int B. float C. long D. double
(3)在 C 语言中,有关函数的说法,以下正确的是 。
A. 函数可嵌套定义,也可嵌套调用
B. 函数可嵌套定义,但不可嵌套调用
C. 函数不可嵌套定义,但可嵌套调用
D. 函数不可嵌套定义,也不可嵌套调用
(4)以下函数调用语句中,含有实参的个数为 。
fun((2,3),(4,5+6,7));
A. 1 B. 2 C. 5 D. 6
(5)函数调用可以在 。
A. 函数表达式中 B. 函数语句中
C. 函数参数中 D. 以上都是
(6)被调函数返回给主调函数的值称为 。
A. 形参 B. 实参 C. 返回值 D. 参数
(7) 以下正确的函数定义是 。
A. double fun(int x, int y) B. double fun(int x,y)
{ z=x+y ; return z ; } { int z ; return z ;}
C. fun (x,y) D. double fun (int x, int y)
{ int x, y ; double z ; { double z ;
z=x+y ; return z ; } return z ; }
(8)被调函数通过 语句,将值返回给主调函数。
A. if B. for C. while D. return
(9)被调函数调用结束后,返回到 。
A. 主调函数中该被调函数调用语句处
B. 主函数中
C. 主调函数中该被调函数调用语句的前一语句
D. 主调函数中该被调函数调用语句的后一语句
(10)以下对 C语言函数的有关描述中,正确的是 。
A. 在 C 中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B. C函数既可以嵌套定义又可递归调用
C. 函数必须有返回值,否则不能使用函数
D. C程序中有调用关系的所有函数必须放在同一个源程序文件中
(11)能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的是 。
A. return 这两个数 B. 形参用两个元素的数组
C. 形参用两个这种数据类型的指针 D. 用两个全局变量
12.以下不正确的说法是 。
A)在不同函数中可以使用相同名字的变量
B)形式参数是局部变量
C)在函数内定义的变量只在本函数范围内有定义
D)在函数内的复合语句中定义的变量在本函数范围内有效

2. 填空题
(1) 变量的作用域主要取决于变量 ,变量的生存期既取决于变量 ,又取决于变量 。
(2) 说明变量时,若省略存储类型符,系统默认其为 存储类别,该存储类别的类型符为: 。
(3) 静态型局部变量的作用域是 ,生存期是 。
(4)

函数中的形参和调用时的实参都是数组名时,传递方式为 ,都是变量时,传递方式为 。
(5) 函数的形式参数的作用域为 ,全局的外部变量和函数体内定义的局部变量重名时, 变量优先。
(6) 若自定义函数要求返回一个值,则应在该函数体中有一条 语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符 。
(7) 若函数的形式参数是指针类型,则实参可以是 、 或 。
(8) 函数的参数为 char *类型时,形参与实参结合的传递方式为 。
(9) 函数的实参为常量时,形参与实参结合的传递方式为 。
(10) 对数组按值从大到小的顺序排序后输出,请填空。
#include
void main()
{
float a[7]={2,6,3,8,3,12,9};
int i ;
void sort(float*,int);
;
for(i=0;i<7;i++) printf("%f ",a[i]);
printf("\n");
}
void sort( )
{
int i,j,k; float t;
for(i=0;i{
k=i;
for(j=i+1;jif( ) k=j;

{ t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; }
}
}

(11) 下列函数在 n 个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填空。

#include
void find(float *p, int max, int min, int n)
{
int k;

*max=*p;
for(k=1;k{
t=*(p+k);
if( ) *max=t;
if(t<*min) *min=t;
}
}

3. 写出下列程序运行结果:

(1)
main()
{
int i=1,p;
p=fun(i,i+1);
printf("%d\n",p);
}
int fun(int a,int b)
{
int f;
if(a>b)
f=1;
else if(a==b)
f=0;
else
f=-1;
return f;
}

(2)键盘输入 abcdef

#include
void fun( )
{
char c ;
if((c=getchar( ))!='\n')
fun( ) ;
putchar(c);
}
void main( )
{ fun( ); }

(3)
#include
#define C 5
int x=1,y=C;
void main( )
{
int x;
x=y++; printf("%d %d\n", x,y);
if(x>4) { int x ; x=++y; printf("%d %d\n",x,y) ; }
x+=y--;
printf("%d %d\n",x,y);
}

(4)
#include
int c , a=4 ;
func(int a , int b)
{ c=a*b ; a=b-1 ; b++ ; return (a+b+1) ; }
void main( )
{
int b=2 , p=0 ; c=1 ;
p=func(b , a) ;
printf("%d,%d,%d,%d\n", a,b,c,p) ;
}

(5)
unsigned fun6(unsigned num)
{
unsigned k=1;
do { k*=num%10; num/=10; }
while(num);
return k;
}
void main( )
{
unsigned n=26;
printf("%d\n", fun6(n));
}

4. 程序设计题
(1)输入两个整数,求最大值,用函数实现。
(2)用递归函数,求小于等于 n 的所有正整数之和。
(3)编一个名为root的函数,求

方程ax2+bx+c=0的b2-4ac,并作为函数的返回值。其中的a、b、c作为函数的形式参数。
(4)设计一个函数,求长方体的体积(边长为整数),要求写出相应的主函数。
(5)编一个函数,判断是否为为闰年,是则返回 1,否则返回 0。

相关文档
相关文档 最新文档