完整版函数练习题C语言带答案Word格式.docx
《完整版函数练习题C语言带答案Word格式.docx》由会员分享,可在线阅读,更多相关《完整版函数练习题C语言带答案Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
A)实参与其对应的形参共用同一段存储空间
B)实参与其对应的形参占用相同的存储空间
C)实参将其地址传递给形参,同时形参也会将该地址传递给实参
D)实参将其地址传递给形参,等同实现了参数之间的双向值的传递
13.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量【】.b5E2RGbCAP
A)为全局变量,在本程序文件范围内有效
B)为局部变量,只在该函数内有效
C)为局部变量,只在该复合语句中有效
D)定义无效,为非法变量
14.C语言中函数返回值的类型是由【】决定.
A)return语句中的表达式类型
B)调用函数的主调函数类型
C)调用函数时临时
D)定义函数时所指定的函数类型
15.若在一个C源程序文件中定义了一个允许其他源文件引用的实型外部变量a,则在另一文件中可使用的引用说明是【】.p1EanqFDPw
A)externstaticfloata。
B)floata。
C)externautofloata。
D)externfloata。
16.定义一个void型函数意味着调用该函数时,函数【】
A)通过return返回一个用户所希望的函数值
B)返回一个系统默认值
C)没有返回值
D)返回一个不确定的值
17.若定义函数float*fun(>
则函数fun的返回值为【】.
A)一个实数B)一个指向实型变量的指针
C)一个指向实型函数的指针D)一个实型函数的入口地址
18.C语言规定,程序中各函数之间【】.
A)既允许直接递归调用也允许间接递归调用
B)不允许直接递归调用也不允许间接递归调用
C)允许直接递归调用不允许间接递归调用
D)不允许直接递归调用允许间接递归调用
若程序中定义函数19.
floatmyadd(floata,floatb>
{returna+b。
}
并将其放在调用语句之后,则在调用之前应对该函数进行说明.以下说明中错误的是【】.
A)floatmyadd(floata,b>
。
B)floatmyadd(floatb,floata>
C)floatmyadd(float,float>
D)floatmyadd(floata,floatb>
20.关于以下fun函数的功能叙述中,正确的是【】.
intfun(char*s>
{
char*t=s。
while(*t++>
。
t--。
return(t-s>
A>
求字符串s的长度B>
比较两个串的大小
C>
将串s复制到串tD>
求字符串s所占字节数
21.下面程序段运行后的输出结果是【】<
假设程序运行时输入5,回车)3。
inta,bvoidswap(>
intta=b。
b=t。
t=a}
main(>
scanf(%d,%d,&
a,&
b>
swap(>
printf(a=%d,b=%d\n,a,b>
B>
a=3,b=5C>
5,3A>
a=5,b=3
D>
3,5
.
22.以下程序运行后的输出结果是【】fun(inta,intb>
{
returna。
if(a>
elsereturnb}
intx=3,y=8,z=6,r。
r=fun(fun(x,y>
2*z>
printf(%d\n,r>
3B>
6C>
8D>
12
】23.以下程序的运行结果是【voidf(inta,intb>
intt。
t=a。
a=b。
intx=1,y=3,z=2。
if(x>
y>
f(x,y>
elseif(y>
z>
f(x,z>
elsef(x,z>
printf(%d,%d,%d\n,x,y,z>
2,3,1
1,3,2A>
1,2,3B>
3,1,2
24.以下程序运行后的输出结果为【】int*f(int*x,int*y>
returnx。
if(*x<
*y>
returny。
else
inta=7,b=8,*p,*q,*r。
p=&
a,q=&
b。
r=f(p,q>
printf(%d,%d,%d\n,*p,*q,*r>
8,7,8
8,7,7A>
7,8,8B>
7,8,7
】25.以下程序的正确运行结果是【A#inclued<
stdio.h>
intk=4,m=1,p。
p=func(k,m>
p>
“printf(%d”。
p=func(k,m>
”“printf(%d\n}
func(inta,intb>
staticintm=0,i=2.
i+=m+1。
m=i+a+b。
return(m>
A)8,17B)8,16C)8,20
D)8,8
26.以下程序的功能是计算函数F(x,y,z>
=(x+z>
/(y-z>
+(y+2×
/(x-2×
的值,请将程序补充完整.(A,D>
DXDiTa9E3d
#include<
floatf(floatx,floaty>
floatvalue。
value=【1】。
returnvalue。
floatx,y,z,sum。
scanf(%f%f%f,&
x,&
y,&
sum=f(x+z,y-z>
+f(【2】>
printf(sum=%f\n,sum>
【1】A)x/yB)x/zC)(x+z>
D)
x+z/y-z
【2】A)y+2z,x-2zB)y+z,x-zC)x+z,y-z
D)y+z*z,x-2*zRTCrpUDGiT
27.以下程序的功能是根据输入的字母,在屏幕上显示出字符数组中首字符与其相同的字符串,若不存在,则显示“Nofind,goodbye!
”,请将程序补充完整.(B,D>
5PCzVD7HxA
charPriStr(charch1>
inti=0,j=0。
staticchar*ch2[]={howareyou,gladtomeetyou,anything
new,everythingisfine,verywell,thankyou,seeyou
tomorrow}。
jLBHrnAILg
while(i++<
6>
if(ch1==【1】>
puts(【2】>
j=1。
returnj。
charch。
printf(\
Pleaeenterachar:
>
ch=getchar(>
ch=PriStr(ch>
if(ch==【3】>
puts(Nofind,goodbye!
>
【1】A)ch2[i][0]B)ch2[i-1][0]C)*ch2[i]D)
*ch2[i-1][0]xHAQX74J0X
【2】A)ch2[i]B)*ch2[i]C)*ch2[i-1]
D)ch2[i-1]
【3】A)'
0'
B)'
48'
C)0
D)30
以下程序是将输入的一个整数反序打印出来,例如输入1234,则输出4321,28.
输入-1234,则输出-4321.请将程序补充完整.(D,C>
LDAYtRyKfE
29.voidprintopp(longintn>
inti=0。
if(n==0>
return。
while(n>
if(【1】>
printf(%ld,n_x0010_>
elseprintf(%ld,-n_x0010_>
i++。
【2】。
}
longintn。
scanf(%ld,&
n>
printopp(n>
【1】A)n<
0&
&
i==0B)n<
0||i==0C)n>
i==0
D)n>
0||i==0Zzz6ZB2Ltk
【2】A)n%=10B)n%=(-10>
C)n/=10
n/=>
-10>
)D
29.下面的程序用递归定义的方法实现求菲波拉契数列1、1、2、3、5、8、13、21……第7项的值fib(7>
,菲波拉契数列第1项和第2项的值都是1.请将程序补充完整.(C,D>
dvzfvkwMI1
longfib(【1】>
switch(g>
case0:
return0。
case1:
case2:
return1。
return(【2】>
longk。
k=fib(7>
printf(k=%d\n,k>
【1】A)gB)kC)longintgD)intk
【2】A)fib(7>
B)fib(g>
C)fib(k>
D)fib(g-1>
+fib(g-2>
rqyn14ZNXI
30.有以下程序(A>
intfun(intn>
if(n==1>
elsereturn(n+fun(n-1>
intx。
scanf(%d,&
x>
x=fun(x>
printf(%d\n,x>
程序执行时,若输入10,程序的输出结果是【】.
A)55B)54C)65D)45
31.下面是一个计算1至m的阶乘并依次输出的程序.程序中应填入的正确选项是【D】.
doubleresult=1。
factorial(intj>
result=result*j。
return。
intm,i=0,x。
printf(Pleaseenteraninteger:
m>
for(。
i++<
m。
x=factorial(i>
printf(%d!
=%.0f\n,【】>
A)i,factorial(i>
B)i,xC)j,x
D)i,result
32.以下程序的功能是求任意两个整数a和b的最大公约数,并予以显示.请将程序补充完整.(B,A>
stdlib.h>
longcodivisor(longn1,longn2>
longt。
while(n2!
=0>
{【1】。
n1=n2。
n2=t。
longa,b,x。
printf(pleaseinputtwonumbers:
scanf(%ld%ld,&
a,&
x=codivisor(a,b>
printf(maximumcommondivisorof%ldand%ldis:
%ld\n,
a,b,x>
EmxvxOtOco
【1】A)t=n1/n2B)t=n1%n2C)t=n2%n1D)t=n2/n1
【2】A)labs(n1>
B)labs(a>
C)labs(b>
D)labs(n2>
33.以下程序的功能是计算并显示一个指定行数的杨辉三角形<
形状如下),请将程序补充完整.(C,B,A>
SixE2yXPq5
1
11
121
331
14641
5
1011
510
程序:
#defineN15
voidyanghui(intb[][N],intn>
inti,j。
for(i=0。
【1】。
i++>
b[i][0]=1。
b[i][i]=1。
for(【2】。
++i<
=n。
for(j=1。
j<
i。
j++>
b[i][j]=【3】。
i<
n。
i++>
for(j=0。
=i。
printf(M,b[i][j]>
inta[N][N]={0},n。
printf(pleaseinputsizeofyanghuitriangle(<
=15>
6ewMyirQFL
yanghui(a,n>
【1】A)i<
NB)i<
=NC)i<
nD)i<
=n
【2】A)i=0B)i=1C)i=2D)i=3
【3】A)b[i-1][j-1]+b[i-1][j]B)b[i-2][j-1]+b[i-1][j]kavU42VRUs
C)b[i-1][j-1]+b[i-1][j+1]D)b[i-2][j-2]+b[i-1][j]y6v3ALoS89
34.下面的程序用来将一个十进制正整数转化成八进制数,例如输入一个正整数25,则输出31,请将程序补充完整.(D,C>
M2ub6vSTnP
inti=0,j=0,a,b[10]={0}。
Pleaseinputainteger:
a>
sub(a,b>
10。
j++。
if(j!
=0>
printf(%d,b[i]>
sub(intc,intd[]>
inte,i=9。
while(c!
e=c%8。
d[i]=e。
i--。
【1】A)b[i]<
0B)b[i-1]!
=0C)b[i]<
=0
D)b[i]!
【2】A)c=sub(c/8>
B)c=c%8C)c=c/8
D)c=e%8
35.函数bisearch的作用是应用折半查找法从存有N个整数的升序数组a中对关键字key进行查找.请将程序补充完整.(C,A,B>
0YujCfmUCw
bisearch(inta[N],intkey>
intlow=0,high=N-1,mid。
while(【1】>
mid=(low+high>
/2。
if(key<
a[mid]>
if(key>
low=mid+1。
returnmid。
return【3】。
intb[N],n,I,j。
printf(Pleaseinputa%delementincreasingsequence:
N>
eUts8ZQVRd
N。
printf([%d]=,i>
b[i]>
;
printf(Pleaseinputasearchingkey:
j=bisearch(b,n>
if(j<
-5>
printf(Don'
tfind%d\n,n>
printf([%d]=%d\n,j,n>
【1】A>
low<
highB>
low!
=highC>
=high
D>
=high-1sQsAEJkW5T
【2】A>
high=mid-1B>
low=mid+1C>
high=mid+1
low=mid-1GMsIasNXkA
【3】A>
0B>
-10C>
-1
38.以下程序是选出能被3整除且至少有一位是5的所有三位正整数k(个位为a0,十位为a1,百位为a2>
打印出所有这样的数及其个数.请将程序补充完整.(C,B,A>
TIrRGchYzg
sub(intm,intn>
inta0,a1,a2。
a2=【1】。
a1=【2】。
a0=m_x0010_。
if(m%3==0&
(a2==5||a1==5||a0==5>
printf(“%d”,m>
n++。
returnn。
intm=0,k
for(k=105。
k<
=995。
k++>
m=sub(【3】>
n=%d\n,m>
m/10B>
m_x0010_C>
m/100D>
m_x0010_0
(m-a2*10>
/10B>
m/10-a2*10C>
m_x0010_-a2*10D>
m_x0010_0-m_x0010_7EqZcWLZNX
k,mB>
m,kC>
k,n
n,k
39.以下程序可计算10名学生1门课成绩的平均分,要求使用无返回值函数实现.请将程序补充完整.(C,B,D>
lzq7IGf02E
voidaverage(floatarray[10]>
array[0]+=【2】。
array[i-1]=array[0]/10。
floatscore[10]。
inti。
printf(Pleaseinput10scores:
\n>
i<
scanf(%f,&
score[i]>
average(score>
【>
】printf(Theaveragescoreis%.2f\n,3}
))B)i++<
10++i<
10DCi<
=101【】A)i<
10
array[i--]C】【2A)array[i-1]B)array[i])array[i++]zvpgeqJ1hk)D
array[8])Cscore[0]B)】【3Ascore[8])
score[9]NrpoJac3v1)D
二.读程序写结果
1.
fun(intx,inty,intz>
z=x*x+y*y}
main(>
inta=31.
fun(6,3,a>
printf(%d,a>
}(31>
2.
intf(>
staticinti=0。
ints=1。
s+=i。
i++。
returns。
inti,a=0