函数
一、选择题
(1)以下关于函数的叙述中正确的是_____。
A)每个函数都可以被其它函数调用(包括main函数)    B)每个函数都可以被单独编译
C)每个函数都可以单独运行
D)在一个函数内部可以定义另一个函数
(2)设函数fun的定义形式为
void  fun(char  ch, float  x ){ …}
则以下对函数fun的调用语句中,正确的是_____。
A)fun("abc",3.0);    B)t=fun('D',16.5);
C)fun('65',2.8);      D)fun(32,32);
(3)有以下程序
int  f1(int  x,int  y){return  x>y?x:y;}
int  f2(int  x,int  y){return  x>y?y:x;}
main()
{  int  a=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d%d\n",e,f,g);
}
程序运行后的输出结果是_____。
A)4,3,7
B)3,4,7
C)5,2,7
D)2,5,7
(4)有以下程序
#define  P  3
#define  F(int  x){  return  (P*x*x);}
main()
{
printf("%d\n",F(3+5));
}
程序运行后的输出结果是_____。
A)192
B)29
C)25
D)编译出错
(5)若程序中定义了以下函数
double  myadd(double a,double B)
{ return (a+B);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是_____。
A)double myadd(double a,B);
B)double myadd(double,double);
C)double myadd(double b,double A);
D)double myadd(double  x,double y);
(6)有以下程序
char fun(char x , char y)
{  if(x<y)return x;
return y;
}
main()
{  int a=’9’,b=’8’,c=’7’;
printf(“%c\n”,fun(fun(a,B),fun(b,C)));
}
程序的执行结果是_____。
A)函数调用出错B)8 C)9 D)7
(7)有以下程序
void f(int v , int  w)
{  int t;
t=v;v=w;w=t;
}
main()
{  int x=1,y=3,z=2;
if(x>y)f(x,y);
else if(y>z)f(y,z);
else      f(x,z);
printf(“%d,%d,%d\n”,x,y,z);
}
执行后输出结果是_____。
A)1,2,3    B)3,1,2    C)1,3,2    D)2,3,1
(8)若已定义的函数有返回值,则以关于该函数调用的叙述中错误的是_____。
A)调用可以作为独立的语句存在 B)调用可以作为一个函数的实参
C)调用可以出现在表达式中  D)调用可以作为一个函数的形参
(9)有以下函数定义:
void fun(int  n,  double  x){ ……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是_____。    A)fun(int  y,double  m);      B)k=fun(10,12.5);
C)fun(x,n);                  D)vold fun(n,x);
(10)有以下程序
fun(int  a, int b)
{  if(a>b)return(a);
else      return(b);
}
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
(11)在一个C程序中_____。
A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现
C)main函数必须出现在所有函数之后 D)main函数必须出现在固定位置
(12)有以下程序
int fl(int x,int y)
{  return x>y?x:y; }
int f2(int x,int  y)
{  return x>y?y:x; }
main()
{ int  a=4,b=3,c=5,d,e,f;
d=f1(a,b); d=f1(d,c);
e=f2(a,b); e=f2(e,c);
f=a+b+c-d-e;
printf("%d,%d,%d\n",d,f,e);
}
执行后输出结果是_____。
A)3,4,5  B)5,3,4  C)5,4,3  D)3,5,4
(13)有如下程序
void  f(int  x,int y)
{ int t;
if(x<y){ t=x; x=y; y=t; }
}
main()
{ int a=4,b=3,c=5;
f(a,b);  f(a,c);  f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
执行后输出结果是_____。
A)3,4,5  B)5,3,4  C)5,4,3  D)4,3,5
(14)C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是_____。
A)void      B)int  C)float  D)double
(15)有以下程序
float fun(int x,int y)
{ return(x+y); }
main()
{  int a=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
(16)若有以下程序
#include    <stdio.h>
void    f(int  n);
main()
{  void  f(int  n);
f(5);
}
void f(int  n)
{  printf("%d\n",n);  }
则以下叙述中不正确的是_____。
A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C)对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明
D)函数f无返回值,所以可用void将其类型定义为无值型
(17)以下函数值的类型是_____。
fun (float  x )
{  float  y;
y= 3*x-4;
return  y;
}
A)int          B)不确定 C)void      D)float
(18)以下所列的各函数首部中,正确的是_____。
A)void play(var :Integer,var b:Integer)
B)void play(int a,b)
C)void play(int a,int b)
D)Sub play(a as integer,b as integer)
(19)以下程序的输出结果是_____。
A)0              B)29    C)31    D)无定值
fun(int  x, int  y, int  z)
{  z=x*x+y*y;  }
main()
{  int  a=31;
fun(5,2,a);
printf(“%d”,a);
}
(20)有如下函数调用语句
func(rec1,rec2+rec3,(rec4,rec5);
该函数调用语句中,含有的实参个数是_____。
A)  3              B)  4              C)5              D)有语法错
(21)有如下程序
int runc(int a,int b)
{  return(a+b);}
main0
{  int  x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%\d\n”,r);
scanf返回值被忽略是怎么回事
}
该程序的输出的结果是_____。
A)12              B)13              C)14            D)15
(22)以下叙述中不正确的是_____。
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
(23)有以下程序
viod fun (int    a,int  b,int  c)
{ a=456;  b=567;  c=678;}
main()
{ int x=10, y=20,z=30;
fun (x,y,z);
printf("%d,/%d\n",c,d);