打印本文 打印本文  关闭窗口 关闭窗口  
全国计算机等级考试二级C语言之函数测试
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:36:55  文章录入:杜斌  责任编辑:杜斌

一、选择题
(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);
}
该程序的输出的结果是
  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);
}
输出结果是
  A)30,20,10   
  B)10,20,30   
  C) 456,567,678    
  D) 678,567,456

(24) 有以下程序
#include    "atdio.h"
int   abc(int u,intv);
main ()
{ int a=24,b=16,c;
  c=abc(a,b);
  printf(’%d\n",c);
}
nt abc(int u,int v)
{ int  w;
  while(v)
  { w=u%v;  u=v;  v=w }
  return u;
}
输出结果是
  A) 6             
  B) 7               
  C) 8                
  D) 9

(25) 以下说法中正确的是
  A) C语言程序总是从第一个的函数开始执行
  B) 在C语言程序中,要调用的函数必须在main()函数中定义
  C) C语言程序总是从main()函数开始执行
  D) C语言程序中的main()函数必须放在程序的开始部分

(26) 请读程序:
#include<stdio.h>
func( int a, int b)
{ int c;
c=a+b;
return c;
}
main()
{ int x=6, y=7, z=8, r;
r=func( x--,y==,x+y),z--);
printf("%d\n",r);
}
上面程序的输出结果是
  A) 11            
  B) 20             
  C) 21             
  D) 31


二、填空题
(1)有以下程序
 int  sub(int  n)  {  return (n/10+n%10);  }
 main()
 { int  x,y;
   scanf("%d",&x);
   y=sub(sub(sub(x)));
   printf("%d\n",y);
 }
若运行时输入:1234<回车>,程序的输出结果是  【1】   。

(2) 通过函数求f(x)的累加和,其中f(x)=x2+1
main()
{
   printf("The sum=%d\n",SunFun(10));
}
SunFun(int n)
{
   int x,s=0;
   for(x=0;x<=n;x++)  s+=F( 【2】 );
   return s;
}
F( int x)
{  return  【3】 );}

(3) 函数fun的功能是计算xn
double fun(double x,int n)
{  int i; double y=1;
   for(i=1;i<=n;i++)  y=y*x;
   return y;
}
主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+B) 3。实现这一计算的函数调用语句为【4】 。

(4) 以下sum函数的功能是计算下列级数之和。
            S=1+x+x2/2!+x3/3!+........+xn/n!
            请给函数中的各变量正确赋初值。
            double  sum(  double  x, int  n )
            {  int i;  double  a,b,s;
               【5】
               for( i=1;i<=n;i++)
               {  a=a*x;   b=b*i;    s=s+a/b; }
               return  s;

(5) 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。
int fun(int  n)
{ int  n=0,f=1, i;
for (i=1; i<=n; i++)
{ m+=i*f;
f=  【6】  ;
}
return  m;
}
main()
{ printf("m=%d\n",  【7】 );}



(6) 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
【8】(double,double);  
main()
{  double   x,y;
scanf("%1f%1f",&x,&y);
printf("%1f\n",max(x,y));
}
double max(double   a,double  b)
{   return (a>b ? a:b) :}

(7) 若有以下程序
int  f(int x,int y)
{ return(y-x)*x; }
main()
{ int a=3,b=4,c=5,d;
 d=f(f(3,4),f(3,5));
 printf("%d\n",d);
}
执行后输出的结果是【9】。

(8) 以下程序运行后的输出结果是   [10]   。
void fun(int x,int y)
{  x=x+y;y=x-y;x=x-y;
printf(“%d,%d,”,x,y);    }
main()
{  int x=2,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
}

(9) 函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)
现在请你在下面的函数中填空,完成求π的功能。
#include  “math.h”
double  pi(long n)
{   double  s=0.0;    long i;
for(i=1;i<=n;i++)s=s+  [11] ; 
return(sqrt(6*s));
}

(10) 下面程序的输出是 【12】 。
unsigned fun6( unsigned num)
{ unsigned k=1;
do {
k*=num%10;
num/=10;
} while(num);
return(k);}
main()
{ unsigned n=26;
printf("%d\n", fun6(n));
}

(11) 下面pi函数的功能是根据以下的公式,返回满足精度ε要求的π值。请填空。 
 
double pi(double eps)
{ double s=0.0, t=1.0;
int n;
for(  【13】  ; t>eps; n++)
{ s+=t;
t=n*t/(2*n+1);}
return(2.0 *  【14】  );}



答案:
一、选择题
01) B   02) D   03) A   04)  D   05) A 
06) D   07) C   08) D   09) C   10) D

11) B   12) C   13) D   14) B   15) B 
16) C   17) A   18) C   19) C   20) A

21) D   22) D   23) A   24) C   25) C 
26) C 
二、填空题

(1) 10

(2) x

(3) x*x+1

(4) fun(a,4)+fun(b,4)-fun(a+b,3);

(5) a=1.0;b=1.0;s=1.0;

(6) -f

(7) fun(10)

(8) double max

(9) 9

(10) 3,2,2,3

(11) 1.0/(i*i)

(12) 12

(13) n=1

(14) s
打印本文 打印本文  关闭窗口 关闭窗口