全国计算机等级考试二级C语言之函数测试
一、选择题
(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