练习题函数答案Word下载.docx
《练习题函数答案Word下载.docx》由会员分享,可在线阅读,更多相关《练习题函数答案Word下载.docx(57页珍藏版)》请在冰点文库上搜索。
(C)如果函数值的类型与返回值类型不一致,以函数值类型为准
(D)如果形参与实参的类型不一致,以实参类型为准
9、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B)
(A)地址传递
(B)单向值传递
(C)由实参传给形参,再由形参传回给实参
(D)由用户指定传递方式
10、以下程序有语法性错误,有关错误原因的正确说法是(C)
voidmain()
{
intG=5,k;
voidprt_char();
......
k=prt_char(G);
}
(A)语句voidprt_char();
有错,它是函数调用语句,不能用void说明
(B)变量名不能使用大写字母
(C)函数说明和函数调用之间有矛盾
(D)函数名不能使用下划线
11、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B)
(A)float型
(B)int型
(C)long型
(D)double型
12、C语言规定,函数返回值的类型是由(D)
(A)return语句中的表达式类型所决定
(B)调用该函数时的主调函数类型所决定
(C)调用该函数时系统临时决定
(D)在定义该函数时所指定的函数类型所决定
13、下面函数调用语句含有实参的个数为(B)
func((exp1,exp2),(exp3,exp4,exp5));
(A)1
(B)2
(C)4
(D)5
14、以下错误的描述是(D)
函数调用可以
(A)出现在执行语句中
(B)出现在一个表达式中
(C)做为一个函数的实参
(D)做为一个函数的形参
15、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
①(B)②(C)
#include<
stdio.h>
math.h>
floatf(float,float);
floatx,y,z,sum;
scanf("
%f%f%f"
&
x,&
y,&
z);
sum=f(①)+f(②);
printf("
sum=%f\n"
sum);
floatf(floata,floatb)
floatvalue;
value=a/b;
return(value);
①(A)x-y,x+y
(B)x+y,x-y
(C)z+y,z-y
(D)z-y,z+y
②(A)x-y,x+y
16、以下正确的描述是(B)
(A)函数的定义可以嵌套,但函数的调用不可以嵌套
(B)函数的定义不可以嵌套,但函数的调用可以嵌套
(C)函数的定义和函数的调用均不可以嵌套
(D)函数的定义和函数的调用均可以嵌套
17、以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。
请选择填空。
①(C)②(A)
sub(intk,intn)
inta1,a2;
a2=①;
a1=k-②;
if((K%3==0&
&
a2==5)||(k%3==0&
a1==5))
{
printf("
%d"
k);
n++;
returnn;
}
elsereturn-1;
intn=0,k,m;
for(k=10;
k<
=99;
k++)
m=sub(k,n);
if(m!
=-1)n=m;
\nn=%d"
n);
①(A)k*10
(B)k%10
(C)k/10
(D)k*10%10
②(A)a2*10
(B)a2
(C)a2/10
(D)a2%10
18、以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'
A'
'
B'
C'
);
则符合程序运行结果的选项是(C)
voidmove(chargetone,charputone)
%c-->
%c\n"
getone,putone);
voidhanoi(intn,charone,chartwo,charthree)
if(n==1)move(one,three);
else
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
(A)A-->
C
A-->
B
C-->
B-->
A
(B)A-->
(C)A-->
(D)A-->
19、若用数组名作为函数调用的实参,传递给形参的是(A)
(A)数组的首地址
(B)数组第一个元素的值
(C)数组中全部元素的值
(D)数组元素的个数
20、已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为(B)
inta[3][4];
f(a);
(A)f(intarray[][6])
(B)f(intarray[3][])
(C)f(intarray[][4])
(D)f(intarray[2][5])
21、若使用一维数组名作函数实参,则以下正确的说法是()//这个题目供选择的答案中都有不明确之处,书中给出的答案是A
(A)必须在主调函数中说明此数组的大小//如果数组是全局变量就不需要在主调函数中说明数组大小
(B)实参数组类型与形参数组类型可以不匹配//什么叫匹配?
只要能自动转换类型数组类型就可以不相同
(C)在被调函数中,不需要考虑形参数组的大小//只要使用数组的时候不会越界就不必考虑它的大小
(D)实参数组名与形参数组名必须一致//只有这个显然是错的
22、折半查找法的思路是:
先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。
如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;
反之,测试中点之前的元素,测试方法同前。
函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;
反之,返回-1。
①(A)②(B)
binary(inta[10],intm)
intlow=0,high=9,mid;
while(low<
=high)
mid=(low+high)/2;
if(m<
a[mid])①;
elseif(m>
a[mid])②;
elsereturnmid;
return-1;
①(A)high=mid-1
(B)low=mid+1
(C)high=mid+1
(D)low=mid-1
②(A)high=mid-1
23、以下正确的说法是(A)
如果在一个函数中的复合语句中定义了一个变量,则该变量
(A)只在该复合语句中有效
(B)在该函数中有效
(C)在本程序范围内均有效
(D)为非法变量
24、以下不正确的说法为(D)
(A)在不同函数中可以使用相同名字的变量
(B)形式参数是局部变量
(C)在函数内定义的变量只在本函数范围内有效
(D)在函数内的复合语句中定义的变量在本函数范围内有效
25、以下程序的正确运行结果是(D)
#defineMAX10
inta[MAX],i;
voidsub2()
inta[MAX],i,max;
max=5;
for(i=0;
i<
max;
i++)a[i]=i;
voidsub1()
MAX;
i++)a[i]=2*i;
//原题a[i]=i+1有错,改为a[i]=2*i
voidsub3(inta[])
inti;
i++)printf("
%d"
a[i]);
\n"
sub1();
sub3(a);
sub2();
(A)024681012141618
01234
(B)01234
024681012141618
(C)0123456789
(D)024681012141618
26、以下程序的正确运行结果是(C)
voidnum()
externintx,y;
inta=15,b=10;
x=a-b;
y=a+b;
intx,y;
inta=7,b=5;
x=a+b;
y=a-b;
num();
%d,%d\n"
x,y);
(A)12,2
(B)不确定
(C)5,25
(D)1,12
27、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A)
(A)自动(auto)
(B)静态(static)
(C)外部(extern)
(D)寄存器(register)
28、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是(D)
(A)extern
(B)register
(C)auto
(D)static
29、以下程序的正确运行结果是(D)
inta=2,i;
3;
%4d"
f(a));
f(inta)
intb=0;
staticintc=3;
b++;
c++;
return(a+b+c);
(A)777
(B)71013
(C)7911
(D)789
30、以下程序的正确运行结果是(A)
func(inta,intb)
staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
intk=4,m=1,p;
p=func(k,m);
printf("
%d,"
p);
%d\n"
(A)8,17
(B)8,16
(C)8,20
(D)8,8
二、填空题
31、C语言规定,可执行程序的开始执行点是________。
程序中的main()函数
32、在C语言中,一个函数一般由两个部分组成,他们是________和________。
函数说明部分函数体
33、若输入的值是-125,以下程序的运行结果是________。
-125=-5*5*5
voidfun(intn)
intk,r;
for(k=2;
=sqrt(n);
r=n%k;
while(r==0)
{
printf("
n=n/k;
if(n>
1)printf("
*"
r=n%k;
}
if(n!
=1)printf("
intn;
n);
%d="
if(n<
0)printf("
-"
n=fabs(n);
fun(n);
34、下面add函数的功能是求两个参数的和,并将和值返回调用函数。
函数中错误的部分是________;
改正后为________。
voidadd(floata,floatb)floatadd(floata,floatb)
voidadd(floata,floatb)
floatc;
c=a+b;
returnc;
35、以下程序的运行结果是________。
i=7;
j=6;
x=7
i=2;
j=7;
x=5
voidfun(inti,intj)
intx=7;
pirntf("
i=%d;
j=%d;
x=%d\n"
i,j,x);
inti=2,x=5,j=7;
fun(j,6);
36、以下程序的运行结果是________。
111
voidincrement()
intx=0;
x+=1;
x);
increment();
37、以下程序的运行结果是________。
maxis2
max(intx,inty)
intz;
z=(x>
y)?
x:
y;
return(z);
inta=1,b=2,c;
c=max(a,b);
maxis%d\n"
c);
38、以下程序的功能是根据输入的"
y"
("
Y"
)与"
n"
N"
),在屏幕上分别显示出"
ThisisYES."
与"
ThisisNO."
。
请填空。
voidYesNo(charch)
switch(ch)
case'
y'
:
Y'
\nThisisYES.\n"
________;
break
n'
N'
\nThisisNO.\n"
charch;
\nEnterachar'
or'
"
ch=________;
getchar()
ch:
%c"
ch);
YesNo(ch);
39、以下Check函数的功能是对value中的值进行四舍五入计算,若计算后的值与ponse值相等,则显示"
WELLDONE!
!
"
,否则显示计算后的值。
已有函数调用语句Check(ponse,value);
请填空。
voidCheck(intponse,floatvalue)
intval;
val=________;
(int)((value*10+5)/10)
计算后的值:
val);
if(________)printf("
\nWELLDONE!
ponse==val
elseprintf("
\nSorrythecorrectansweris%d\n"
40、以下程序的功能是________。
打印出所有“水仙花数”
f(intn)
inti,j,k;
i=n/100;
j=n/10-i*10;
k=n%10;
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)returnn;
elsereturn0;
intn,k;
output"
for(n=100;
n<
1000;
n++)
k=f(n);
if(k!
=0)printf("
k)
41、以下程序的功能是用二分法求方程2*x*x*x-4*x*x+3x-6=0的根,并要求绝对误差不超过0.001。
请填空
floatf(floatx){return2*x*x*x-4*x*x+3*x-6;
floatm=-100,n=90,r;
r=(m+n)/2;
while(f(r)*f(n)!
=0)
if(________)m=r;
f(r)*f(n)<
elsen=r;
if(________)break;
n-m<
0.001
r=(m+n)/2;
Theisfangchengjieis%6.3f\n"
r);
42、若输入一个整数10,以下程序的运行结果是________。
1010
sub(inta)
intc;
c=a%2;
inta,e[10],c,i=0;
输入一整数\n"
a);
while(a!
c=sub(a);
a=a/2;
e[i]=c;
i++;
for(;
i>
0;
i--)printf("
e[i-1]);
43、以下程序的功能是计算下面函数的值,请填空。
F(x,y,z)=sin(x)/(sin(x-y)*sin(x-z))+sin(y)/(sin(y-z)*sin(y-x))+sin(z)/(sin(z-x)*sin(z-y))
floatf();
\ninputx,y,z:
sum=________;
f(x,x-y,x-z)+f(y,y-z,y-x)+f(z,z-x,z-y)
floatf(floata,floatb,floatc)
value=________;
sin(a)/(sin(b)*sin(c))
returnvalue;
44、已有函数pow,现要求取消变量i后pow函数的功能不变。
修改前的pow函数
po