第6章习题及解答0315.docx
- 文档编号:16711169
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:52
- 大小:30.24KB
第6章习题及解答0315.docx
《第6章习题及解答0315.docx》由会员分享,可在线阅读,更多相关《第6章习题及解答0315.docx(52页珍藏版)》请在冰点文库上搜索。
第6章习题及解答0315
第6章函数
习题解答
一、选择题
1.下列关于函数定义的描述中,错误的是()。
A.定义函数时函数的存储类型可以省略
B.定义函数时函数名和函数类型必须指明
C.定义函数时必需有函数体
D.定义函数时必需指明函数参数
【答】D
2.下列关于函数(原型)声明的描述中,错误的是()。
A.函数声明可放在函数体内,也可放在函数体外
B.函数声明既要给出函数名和类型,又要指出函数参数
C.函数调用前必须给出被调函数的函数声明,否则出错
D.被调函数的定义在主调函数前面时,可以不用函数声明
【答】C
3.以下正确的定义函数首部的形式是()。
A.floatfunc(intn;floatx)
B.floatfunc(intn,floatx);
C.floatfunc(intn;floatx);
D.floatfunc(intn,floatx)
【答】D
4.下列关于函数参数的描述中,错误的是()。
A.定义函数时可以有参数,也可以没有参数
B.在传值调用时,实参只能是变量名,不可以是表达式
C.函数的形参在该函数被调用前是没有确定值的
D.要求函数的形参和对应的实参个数应相等、类型应赋值兼容
【答】B
5.下列说法中,不正确的是()。
A.实参可以为任意类型
B.形参与对应实参的类型要赋值兼容
C.形参可以是常量、变量或表达式
D.实参可以是常量、变量或表达式
【答】C
6.下面函数调用语句中,实参的个数是()。
func(n1,n2+n3,func(n4,n5,n6));
A.6B.5C.4D.3
【答】D
7.设有下面函数调用语句,则其所调函数fun中形参的个数是()。
fun(f(n1,n2),n3,n4+n5);
A.5B.4C.3D.2
【答】C
8.下面说法中正确的是()。
A.实参占用存储单元,形参不占用存储单元
B.相对应的实参与形参共用同一存储单元
C.相对应的实参与形参同名时,它们共用同一存储单元
D.相对应的实参与形参占用不同的存储单元
【答】D
9.实参为简单变量,其与对应形参之间的数据传递方式为()。
A.由用户另外指定传递方式
B.双向值传递
C.单向值传递
D.地址传递
【答】C
10.实参用数组名,则传递给对应形参的是()。
A.数组的地址
B.数组的长度
C.数组中每一个元素的地址
D.数组中每一个元素的值
【答】A
11.下列关于函数调用的描述中,错误的是()。
A.在函数调用中,形参是变量名,实参可以是变量、常量和表达式
B.在函数调用中,形参是指针时,实参必须是地址值
C.在传址调用方式中,可以在被调用函数中改变调用函数的参数值
D.在传值调用方式中,可以在被调用函数中改变调用函数的参数值
【答】D
12.下列关于函数返回值的论述中,错误的是()。
A.函数返回值能够实现函数间的数据传递
B.函数返回值是由return<表达式>实现的
C.函数返回的值和值的类型是由返回语句中表达式的值和类型决定的
D.一个函数可有多条返回语句,但只可有一个返回值
【答】C
13.函数返回值的类型由()。
A.调用该函数的函数类型决定B.return语句中表达式的类型决定
C.主函数决定D.该函数的函数类型决定
【答】D
14.下列关于函数的论述中正确的是()。
A.不允许函数嵌套定义,但允许函数嵌套调用
B.不允许函数嵌套调用,但允许函数嵌套定义
C.函数的定义和调用都允许嵌套
D.函数的定义和调用都不允许嵌套
【答】A
15.下列关于函数调用的论述中不正确的是()。
A.函数间允许嵌套调用B.函数间允许间接递归调用
C.函数间允许直接递归调用D.函数间不允许直接递归调用
【答】C
16.以下说法不正确的是()。
A.所有的形式参数都是局部变量
B.不同函数中允许说明并使用相同名字的变量
C.函数内定义的变量其有效范围不超出该函数
D.函数内的复合语句中说明的变量在该函数范围内有效
【答】D
17.在本程序中能被所有函数使用的变量,其存储类别是()。
A.auto(自动)B.static(静态)C.register(寄存器)D.exern(外部)
【答】D
18.在函数中未说明存储类别的局部变量,其隐含的存储类别是()。
A.auto(自动)B.static(静态)C.register(寄存器)D.exern(外部)
【答】A
19.下列关于变量的论述中,不正确的是()。
A.外部变量定义与外部变量声明,两者的含义不同
B.外部变量与静态外部变量的存储类型不同(即它们被分配的存储区不同)
C.在同一函数中,既可使用本函数中的局部变量又可使用与局部变量不同名的全局变量
D.在同一程序中,外部变量与局部变量同名时,则在局部变量作用范围内外部变量不起作用
【答】B
20.运行以下程序,其输出结果是()。
voidswap28(intn0,intn1)
{
inttemp;
temp=n0;
n0=n1;
n1=temp;
}
voidswapl4(intn[])
{
inttemp;
temp=n[0];
n[0]=n[1];
n[1]=temp;
}
voidmain()
{
inta[2]={2,8},b[2]={1,4};
swap28(a[0],a[1]);
swapl4(b);
printf(“%d%d%d%d\n”,a[0],a[1],b[0],b[1]);
}
A.2814B.2841C.8241D.8214
【答】B
二、填空题
1.若自定义函数要求返回一个值,则在该函数体中应有一条【1】语句;若自定义函数要求不返回值,则在该函数说明时加一类型说明符【2】。
【答案】
【1】带有表达式的return
【2】void
2.函数调用时的实参与对应的形参都是数组时,参数传递方式为【1】;都是普通变量时,参数传递方式为【2】。
【答案】
【1】传地址
【2】传值
3.静态局部变量的作用域是【1】。
【答案】
【1】定义它的函数或复合语句的内部
4.函数形参的作用域是【1】。
全局的外部变量与函数体内定义的局部变量同名时,在函数体内,【2】变量起作用。
【答案】
【1】整个函数体内
【2】局部
5.下列函数sub()的功能是求两个参数的差,并将差值返回调用函数。
该函数中错误的部分是【1】,改正后应为【2】。
voidsub(doublex,doubley)
{
doublez;
z=x–y;
returnz;
}
【答案】
【1】voidsub(doublex,doubley)
【2】doublesub(doublex,doubley)
6.为了使下面程序能够正确运行,程序的第2行应填写的内容是【1】,当输入的数值为66和99时,该程序输出的结果是【2】。
#include
【1】
main()
{
doublex1,x2;
scan(“%lf,%lf”,&x1,&x2);
printf(“%lf\n”,max(x2,x1));
getch();
}
doublemax(doubley1,doubley2)
{
return(y1>y2?
y1–y2:
y2-y1);
}
【答案】
【1】doublemax(double,double);
【2】33.000000
7.下面程序,在函数sum()中求(m+n)/3+(m-n)/3的值,在主函数中为m、n
输入10、7,并输出计算结果,请填空。
#include
voidmain()
{
intm,n;
【1】
printf(“Pleaseinputm,n:
”);
scanf(“%d,%d”,【2】);
printf(”Thesum=%d\n”,sum(m,n));
}
intsum(inti,intj)
{
intk;
k=【3】;
returnk;
}
【答案】
【1】intsum();
【2】&m,&n
【3】(i+j)/3+(i-j)/3
8.下面程序功能是求两个浮点数的和,程序内容如下,请填空。
#include
doubleadd(doublex,doubley,doublep)
{
p=x+y;
【1】
}
voidmain()
{
doublea=55.44,b=44.55;
doublek;
add(a,b,【2】);
printf(“%.2lf\n”,k);
}
【答案】
【1】return(p);
【2】k
注:
输出的k值是不确定的!
9.下面程序的运行结果是【1】。
#include
voidfunc(intbr[])
{inti=1;
while(br[i]<=10)
{
printf("%5d",br[i]);
i++;
}
}
voidmain()
{
intar[]={2,4,8,10,8,4,11,9,7};
func(ar+1);
printf("\n");
getch();
}
【答案】
【1】81084
10.函数acopyb将整型数组aarra的内容逆序复制到整型数组barra中(-32768作为数组
元素值的结束标志),请填空。
#include
voidacopyb(intaa,intba)
{
inti=0,j=0;
while(aa[j]!
=-32768)j++;
ba[j]=aa[j];j--;
while(aa[i]!
=-32768)
{
【2】
j--;
i++;
}
}
voidmain()
{
staticintaarra[]={1,3,5,7,9,2,4,6,8,10,-32768};
intbarra[20];
inti=0;
acopyb(【1】);
while(barra[i]!
=-32768)
printf("%3d",【3】);
printf("\n");
getch();
}
【答案】
【1】aarra,barra
【2】ba[j]=aa[i];
【3】barra[i++]
11.在【1】处填写适当内容,使下面程序的输出结果为264。
#include
intfunc(intm,intn)
{
return(m*n);
}
voidmain()
{
inta=3,b=11,c=8,d;
d=func(func(【1】),c);
printf("%d\n",d);
getch();
}
【答案】
【1】a,b或者b,a
12.下面程序的输出结果为【1】。
#include
#defineN10
voidoutput(int*p,intn)
{
inti;
for(i=0;i printf("%5d",*p++); printf("\n"); } voidmain() { intx[N],i,*q; for(i=0;i q=x; output(q,N); for(i=0;i } 【答案】 【1】024681012141618 024681012141618 13.函数small()从5x5矩阵(即从5行、5列二维数组)中,找出主对角线上元素的最小值。 在主函数中为数组输入数据。 请填写适当内容。 #include intsmall(inta[5][5]) { inti,vm; vm=a[0][0]; for(i=1;i<5;i++) if(vm>a[i][i]) vm=【1】 return(vm); } voidmain() { inti,j,vmin; intarray[5][5]; for(i=0;i<5;i++) for(j=0;j<5;j++) scanf(”%d”,【2】); vmin=small(array); printf(”vmin=%d\n”,vmin); } 【答案】 【1】a[i][i]; 【2】&array[i][j] 14.函数max_value()求3x4矩阵所有元素中的最大值。 请在下面程序中【1】、【2】处填写适当内容。 #include voidmain() { intmax_value(intarray[][4]); inta[3][4]=({1,3,5,7},{2,4,6,8},{15,17,34,12}); printf(”maxvalueis%d\n”,【1】); } intmax_value(intarray[][4]) { inti,j,max; max=array[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if(array[i][j]>max) 【2】=array[i][j]; return(max); } 【答案】 【1】max_value(a) 【2】max 15.下面程序的功能是调用选择排序法函数select(),对数组中的整数按从小到大的顺序排列,请填写适当内容。 #include voidmain() { voidselect(inta[],intn); intb[10],i; printf("Input10numbers: "); for(i=0;i<10;i++) scanf("%d",【1】); printf("\n"); select(【2】,10); for(i=0;i<10;i++) printf("%d",b[i]); } voidselect(inta[],intn) { inti,j,k,temp; for(i=0;i { k=i;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 解答 0315