第六章 函 数
一、单项选择题
1.在C语言程序中,有关函数的定义正确的是( B )。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
2.以下对C语言函数的有关描述中,正确的是( A )。
A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可递归调用
C.函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个源程序文件中
3.函数调用语句f((e1,e2),(e3,e4,e5));中参数个数是( C )。
A. 5B. 4C. 2D. 1
4.C语言中函数的隐含存储类型是( C )。
A. autoB. staticC. externD.无存储类型
5.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是( A )。
A. return这二个数B. 形参用二个元素的数组
C. 形参用二个这种数据类型的指针D. 用二个全局变量
6.有一函数的定义如:void fun(char *s){……},则不正确的函数调用是( D )。
A. void main( )
{ char s[20]=“abcdefgh”;
fun(s);
……
}
C. void main( )
{ char s[20]=“abcdefgh”;
char *p=s; fun(p);
……
}B. void main( )
{ char s[20]=“abcdefgh”;
fun(&a[0]);
……
}
D. void main( )
{ char s[20]=“abcdefgh”;
fun(s[ ]);
……
}7.以下程序的输出结果是( C )。
fun(char **m)
{ ++m; printf(“%s\n”,*m); }
void main( )
{ char *a[ ]={“BASIC”,“FOXPRO”,“C”};
fun(a);
}
A. BASICB. ASICC. FOXPROD. C
8.函数的功能是交换x和y中的值;且通过正确调用返回交换结果。不能正确执行此功能的函数是( B )。
A. funa(int *x, int *y)
{ int i,*p=&i;
*p=*x; *x=*y; *y=*p
}
C. funa(int *x, int *y)
{ int p;
p=*x; *x=*y; *y=p;
}B. funa(int x, int y)
{ int t;
t=x; x=y; y=t;
}
D. funa(int *x, int *y)
{
*x=*x+*y; *y=*x-*y; *x=*x-*y;
}9.要求函数的功能是在一维数组a中查找x值:若找到则返回所在的下标值,否则返回0;数放在a[1]到a[0]中。不能正确执行此功能的函数是( C )。
A. funa(int *a, int n, int x)
{ *a=x;
while(a[n]!=x) n--;
return(n);
}
C. funa(int a[ ], int n, int x)
{ int *k;
a[0]=k; k=a+n;
while(*k!=x) k—
return(k-n);
}B. funa(int *a, int n, int x)
{ int k;
for(k=1;k<=n;k++)
if(a[k]==x) return(k);
return(0);
}
D. funa(int a[ ], int n, int x)
{ int k=0;
do k++;
while((k
if((k
else return(0);
}10.以下程序的输出结果是( A )
#include
sub1(char a, char b){ char c; c=a; a=b; b=c; }
sub1(char *a, char b){ char c; c=a; *a=b; b=c; }
sub1(char *a, char *b){ char c; c=*a; *a=*b; *b=c; }
void main( )
{ char a,b;
a=‘A’; b=‘B’; sub3(&a, &b); putchar(a); puchar(b);