国二C语言函数.docx
《国二C语言函数.docx》由会员分享,可在线阅读,更多相关《国二C语言函数.docx(9页珍藏版)》请在冰豆网上搜索。
国二C语言函数
7.函数
一、选择题
(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(doublea,doubleB)
{return(a+B);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是_____。
A)doublemyadd(doublea,B);
B)doublemyadd(double,double);
C)doublemyadd(doubleb,doubleA);
D)doublemyadd(double x,doubley);
(6)有以下程序
charfun(charx,chary)
{ if(x returny;
}
main()
{ inta=’9’,b=’8’,c=’7’;
printf(“%c\n”,fun(fun(a,b),fun(b,c)));
}
程序的执行结果是_____。
A)函数调用出错 B)8 C)9 D)7
(7)有以下程序
voidf(intv,int w)
{ intt;
t=v;v=w;w=t;
}
main()
{ intx=1,y=3,z=2;
if(x>y) f(x,y);
elseif(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)有以下函数定义:
voidfun(int n, double x) {……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是_____。
A)fun(int y,double m); B)k=fun(10,12.5);
C)fun(x,n); D)voldfun(n,x);
(10)有以下程序
fun(int a,intb)
{ 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 }
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)有以下程序
floatfun(intx,inty)
{return(x+y);}
main()
{ inta=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
void f(int n);
main()
{ void f(int n);
f(5);
}
voidf(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)voidplay(var:
Integer,varb:
Integer)
B)voidplay(inta,b)
C)voidplay(inta,intb)
D)Subplay(aasinteger,basinteger)
(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)有如下程序
intrunc(inta,intb)
{ 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)有以下程序
viodfun(int a,int b,int c)
{a=456; b=567; c=678;}
main()
{intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",z,y,x);
}
输出结果是_____。
A)30,20,10 B)10,20,30 C)456,567,678 D)678,567,456
(24)有以下程序
#include "atdio.h"
int abc(intu,intv);
main()
{inta=24,b=16,c;
c=abc(a,b);
printf('%d\n",c);
}
ntabc(intu,intv)
{int w;
while(v)
{w=u%v; u=v; v=w}
returnu;
}
输出结果是_____。
A)6 B)7 C)8 D)9
(25)以下说法中正确的是_____。
A)C语言程序总是从第一个的函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
(26)请读程序:
#include
func(inta,intb)
{intc;
c=a+b;
returnc;
}
main()
{intx=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<回车>,程序的输出结果是 【10】 。
(2)通过函数求f(x)的累加和,其中f(x)=x2+1
main()
{
printf("Thesum=%d\n",SunFun(10));
}
SunFun(intn)
{
intx,s=0;
for(x=0;x<=n;x++) s+=F(【2】);
returns;
}
F(intx)
{ return 【3】);}
(3)函数fun的功能是计算xn
doublefun(doublex,intn)
{ inti;doubley=1;
for(i=1;i<=n;i++) y=y*x;
returny;
}
主函数中已经正确定义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)
{ inti; 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,并输出结果。
请填空。
intfun(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));
}
doublemax(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)以下程序运行后的输出结果是3,2,2,3】 。
voidfun(intx,inty)
{ x=x+y;y=x-y;x=x-y;
printf(“%d,%d,”,x,y); }
main()
{ intx=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(longn)
{ double s=0.0; longi;
for(i=1;i<=n;i++)s=s+ [1/(n*n)];
return(sqrt(6*s));
}
(10)下面程序的输出是【12】。
unsignedfun6(unsignednum)
{unsignedk=1;
do{
k*=num%10;
num/=10;
}while(num);
return(k);}
main()
{unsignedn=26;
printf("%d\n",fun6(n));
}
(11)下面pi函数的功能是根据以下的公式,返回满足精度ε要求的π值。
请填空。
doublepi(doubleeps)
{doubles=0.0,t=1.0;
intn;
for( 【13】 ;t>eps;n++)
{s+=t;
t=n*t/(2*n+1);}
return(2.0* 【14】 );}