答案第七章函数.docx

上传人:b****6 文档编号:6988916 上传时间:2023-01-15 格式:DOCX 页数:17 大小:22.81KB
下载 相关 举报
答案第七章函数.docx_第1页
第1页 / 共17页
答案第七章函数.docx_第2页
第2页 / 共17页
答案第七章函数.docx_第3页
第3页 / 共17页
答案第七章函数.docx_第4页
第4页 / 共17页
答案第七章函数.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

答案第七章函数.docx

《答案第七章函数.docx》由会员分享,可在线阅读,更多相关《答案第七章函数.docx(17页珍藏版)》请在冰豆网上搜索。

答案第七章函数.docx

答案第七章函数

第七章函数

一、选择题

1.以下函数声明正确的是:

C。

(02~03第一学期试题)

A)doublefun(intx,inty)B)doublefun(intx;inty)

C)doublefun(intx,inty);D)doublefun(intx,y)

2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是:

B。

(0级)

A)地址传递;B)单向值传递;

C)双向值传递;D)由用户指定传递方式

3.以下关于C语言程序中函数的说法正确的是:

B。

(0级)

A)函数的定义可以嵌套,但函数的调用不可以嵌套;

B)函数的定义不可以嵌套,但函数的调用可以嵌套;

C)函数的定义和调用均不可以嵌套;

D)函数的定义和点用都可以嵌套。

4.以下正确的函数形式是:

D。

(1级)

A)doublefun(intx,inty)B)fun(intx,y)

{z=x+y;returnz;}{intz;returnz;}

C)fun(x,y)D)doublefun(intx,inty)

{intx,y;doublez;{doublez;

z=x+y;returnz;}z=x+y;returnz;}

5.以下说法不正确的是:

B。

(1级)

C语言规定A)实参可以是常量、变量或表达式

B)形参可以是常量、变量或表达式

C)实参可以是任意类型

D)形参应与其对应的实参类型一致

6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是B。

(0级)

A)float型B)int型C)long型D)double型

7.以下错误的描述是D。

(0级)

函数调用可以

A)出现在执行语句中B)出现在一个表达式中

C)做为一个函数的实参D)做为一个函数的形参

8.若用数组名作为函数调用的实参,传递给形参的是A。

(0级)

A)数组的首地址B)数组第一个元素的值

C)数组中全部元素的值D)数组元素的个数

9.以下正确的说法是A。

(0级)

如果在一个函数中的复合语句中定义了一个变量,则该变量

A)只在该复合语句中有效B)在该函数中有效

C)在本程序范围内有效D)为非法变量

10.以下不正确的说法为D。

(0级)

A)在不同函数中可以使用相同名字的变量

B)形式参数是局部变量

C)在函数内定义的变量只在本函数范围内有效

D)在函数内的复合语句中定义的变量在本函数范围内有效

11.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为A。

(0级)

A)自动(auto)B)静态(static)

C)外部(extern)D)寄存器(register)

12.下面程序的正确运行结果是:

D。

(1级)

main()

{inta=2,i;

for(i=0;i<3;i++)printf(“%4d”,f(a));}

f(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);}

A)777B)71013C)7911D)789

13.13.C语言规定:

函数返回值类型是由:

D。

(0级)

A)return语句中的表达式类型决定

B)调用该函数时的主调函数类型决定

C)调用该函数时系统临时决定

D)定义该函数时所指定的函数类型

14决定

14.下面函数调用语句中实参的个数为:

B。

(1级)

func((exp1,exp2),(exp3,exp4,exp5))

A)1B)2C)4D)5

15返回值的类型15.有一个如下定义的函数:

func(a){printf(“%d”,a);}

则该函数的返回类型是int。

(1级)f(floata){returna;}

A)与参数a的类型相同B)void类型

C)没有返回值D)无法确定

16建立函数的目的之一是:

16.以下正确的说法是B。

(0级)

A)提高程序的执行效率B)提高程序的可读性

C)减少程序的篇幅D)减少程序文件所占内存

17.正确以下正确的说法是C。

(0级)

A)定义函数时,形参的类型说明可以放在函数体内

B)return后边的值不能为表达式

C)如果函数值的类型与返回值类型不一致,以函数值类型为准

D)如果形参与实参的类型不一致,以实参类型为准

18.以下正确的说法是B。

(0级)

A)用户若需调用标准库函数,调用前必须重新定义

B)用户可以重新定义标准函数,若如此,该函数将失去原有含义

C)系统根本不允许用户重新定义标准库函数

D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调

19.以下正确的说法是A。

(0级)

在C语言中:

A)实参和与其对应的形参各占用独立的存储单元

B)实参和与其对应的形参共占用一个存储单元

C)只有当实参和与其对应的形参同名时才共占用存储单元

D)形参是虚拟的,不占用存储单元

20.若使用一维数组名作函数实参,则以下正确的说法是A。

(0级)

A)必须在主调函数中说明此数组的大小

B)实参数组类型与形参数组类型可以不匹配

C)在被调函数中,不需要考虑形参数组的大小

D)实参数组名与形参数组名必须一致

21.有如下函数调用语句

func(rec1,rec2+rec3,(rec4,rec5);

该函数调用语句中,含有的实参个数是A。

(1级)

A)3B)4C)5D)有语法错

22.有如下程序

intrunc(inta,intb)

{return(a+b);}

main()

{intx=2,y=5,z=8,r;

r=func(func(x,y),z);

printf(“%\d\n”,r);

}

该程序的输出的结果是D。

(1级)

A)12B)13C)14D)15

23.有如下程序

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn

(2);

}

main()

{printf(“%d\n”,fib(3));

该程序的输出结果是B。

(1级)

A}2B}4C}6D}8

24.有以下程序

voidf(intx,inty)

{intt;

if(x

}

main()

{inta=4,b=3,c=5;

f(a,b);f(a,c);f(b,c);

printf("%d,%d,%d\n",a,b,c);

}

执行后输出的结果是D。

(1级)

A)3,4,5B)5,3,4C)5,4,3D)4,3,5

25.以下函数的功能是:

通过键盘输入数据,为数组中的所有元素赋值。

#defineN10

voidarrin(intx[N])

{inti=0;

while(i

scanf("%d",_________);

}

在下划线处应填入的是C。

(2级)

A)x+iB)&x[i+1]C)x+(i++)D)&x[++i]

26.有以下程序

main()

{chars[]="\n123\\";

printf("%d,%d\n",strlen(s),sizeof(s));

}

执行后输出结果是C。

(1级)

A)赋初值的字符串有错B)6,7

C)5,6D)6,6

27.以下叙述中正确的是B。

(0级)

A)全局变量的作用域一定比局部变量的作用域范围大

B)静态(static)类别变量的生存期贯穿于整个程序的运行期间

C)函数的形参都属于全局变量

D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值

28.main()

{inta=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);

}

f1(intx,inty)

{intz;z=(x>y)?

x:

y;return(z);}

f2(intx,inty)

{intz;z=(x

x:

y;return(z);}

执行后输出的结果是C。

(1级)

A)3,4,5B)5,3,4C)5,4,3D)3,5,4

29.以下程序的输出结果是C。

(1级)

#include

intf(void)

{staticinti=0;

ints=1;

s+=i;

i++;

return(s);

}

voidmain(void)

{

inti,a=0;

for(i=0;i<5;i++)a+=f()

printf(“%d\n”,a);

}

A)1B)0C)非0的数D)–1

30.以下C语言中,对函数不正确的描述是D。

(0级)

A)当用数组名作形参时,形参数组改变可使实参数组随之改变

B)允许函数递归调用

C)函数形参的作用范围只是局限于所定义的函数内

D)函数说明必须在主调函数之前

31.以下所列的各函数首部中,正确的是C。

(1级)

A)voidplay(var:

Integer,varb:

Integer)B)voidplay(inta,b)

C)voidplay(inta,intb)D)Subplay(aasinteger,basinteger)

32.以下叙述中不正确的是C。

(0级)

A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。

B)在C中,在调用函数时,实参数和对应形参在类型上只需赋值兼容。

C)在C中,外部变量的隐含类别是自动存储类别。

D)在C中,函数形参可以说明为register变量。

33.以下对C语言函数的有关描述中,正确的是A。

(0级)

A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B)C函数既可以嵌套定义又可以递归调用

C)函数必须有返回值,否则不能使用函数

D)C程序中有调用关系的所有函数必须放在同一个源程序文件中

34.一个数据类型为void的函数中可以没有return语句,那么函数的被调用时D。

(0级)

A)没有返回值B)返回一个系统默认值

B)返回值由用户临时决定D)返回一个不确定的值

35.在下面的函数声明中,不存在着语法错误的是D。

(1级)

A)BC(inta,int);B)BC(int,int);

C)DC(int,int=5);D)BC(intx,inty);

36.以下函数值的类型是A。

(1级)

fun(floatx)

{floaty;

y=3*x-4;

returny;

}

A)intB)不确定C)voidD)float

37.有如下程序段,在TurboC环境下运行的结果为B。

(01~02第二学期试题)

main()

{inti=2,p,k=1;intf(inta,intb)

p=f(i,++k);{intc;

printf(“I=%d,p=%d”,k,p);if(a>b)c=1;

}elseif(a==b)c=0;

elsec=-1;return(c);}

A)1,0B)2,0C)2,-1D)1,1

38.下面程序的输出结果是:

B。

(往届试题)

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);}

main()

{inta=7,b=5;

printf(“%d\n”,fun(a,b)/m);}

A)1B)2C)7D)10

39.若有说明语句:

staticinta[3][4]={0};

则下面叙述正确的是:

B。

(往届试题)

A)只有a[0][0]元素可得到初值0;

B)数组a中每个元素均可得到初值0。

C)数组a中各元素都可得到初值,但值不一定为0;

D)此说明语句不正确

40.以下程序的运行结果是:

B。

(往届试题)

main()

{inta=2,i;

for(i=0;i<3;i++)printf(“%4d”,f(a));}

f(inta)

{intb=0,c=3;

b++;c++;return(a+b+c);}

A)71013B)777

C)7911D)789

 

二、填空题

1.C语言规定,可执行程序的开始执行点是main。

(0级)

2.在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。

(0级)

3.函数swap(intx,inty)可完成对x和y值的交换。

a[0]=1,a[1]=2

在运行调用函数中的如下语句后,a[0]和a[1]的值分别为a[0]=1,a[1]=2,原因单向值传递,不能返回交换后的值。

(1级)

4.函数swap(arr,n)可完成对arr数组从第1个元素到第n个元素两两交换。

在运行调用函数中的如下语句后,a[0]和a[1]的值分别为a[0]=2,a[1]=1,原因实参是地址,已对指定地址中的内容进行了交换。

(1级)

5.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部fun(doubleb[][])。

要求形参名为b。

(1级)

main()

{doubles[10][22];

intn;┆

fun(s);

}

6.返回语句的功能是从包含它的函数返回调用函数。

(0级)

三、程序填空题

1.

(1)d=a*b/c

(2)num1

(3)x%y

2.

(1)break

(2)getchar()

3.

(1)(int)((value﹡10+5)/10)

4.

(1)2﹡i+1

(2)a(i)

(3)a(i)

5.

(1)j

(2)str[j-1]

6.

(1)n*fac(n-1)

(2)fac(n)

7.

(1)i<10

(2)array[i]

(3)average(score)

1.下面程序的功能是利用函数调用求两整数的最大公约数和最小公倍数,请填空。

(1级)

main()

{inta,b,c,d;

scanf(“%d,%d”,&a,&b);

c=gongyue(a,b);

(1);

printf(“gongyue=%d,gongbei=%d\n”,c,d);}

gongyue(intnum1,intnum2)

{inttemp,x,y;

if(__

(2)__)

{temp=num1;num1=num2;num2=temp;}

x=num1;y=num2;

while(__(3)_____)

{temp=x%y;x=y;y=temp;}

return(y);}

2.以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“ThisisYES.”与“ThisisNO.”。

请填空。

(1级)

#include

viodYesNo(charch)

{switch(ch)

{case‘y’:

case‘Y’:

printf(“\nThisisYES.\n”);

(1);

case‘n’:

case‘N’:

printf(“\nThisisNO.\n”);}

}

main()

{charch;printf(“\nEnterachar‘y’,’Y’or’n’,’N’:

”);

ch=

(2);printf(”ch:

%c”,ch);YesNo(ch);}

3.以下Check函数的功能是对value中的值进行四舍五入计算,若计算后的值与ponse值相等,则显示“WELLDONE!

!

”,否则显示计算后的值。

已有函数调用语句Check(ponse,value);请填空。

(1级)

viodCheck(intponse,floatvalue)

{intval;val=

(1);

printf(“计算后的值:

%d”,val);

if(val==ponse)printf(“\nWELLDONE!

!

\n”);

elseprintf(“\nSorrythecorrectansweris%d\n”,val);

}

4.以下程序的运行结果是输出如下图形。

请填空。

(1级)

*

***

*****

********

*****

***

*

#include

voida(inti)

{intj,k;for(j=0;j<=7-i;j++)printf(““);

for(k=0;k<

(1);k++)printf(“﹡”);

printf(“\n”);}

main()

{inti;for(i=0;i<3;i++)

(2);

for(i=3;i>=0;i--)(3);

}

5.函数fun的功能是:

使字符串str按逆序存放。

(2级)

voidfun(charstr[])

{

charm;inti,j;

for(i=0,j=strlen(str);i<

(1);i++,j--)

{m=str[i];

str[i]=

(2);

str[j-1]=m;

}

printf("%s\n",str);

}

6.以下程序使用递归法求n!

请填空。

(03试题)

floatfac(intn)

{floatf;

if(n<0){printf(“n<0”dataerror);f=-1;}

elseif(n==0||n==1)f=1;

elsef=___

(1)___;

return(f);}

main()

{intn;floaty;

printf(“inputaintegernumber”);

scanf(“%d”,&n);

y=___

(2)____;

printf(“%d!

=%15.0f”,n,y);}

7.以下程序可计算10名学生1门功课成绩的平均分,请填空。

(往届试题)

floataverage(floatarray[10])

{inti;floataver,sum=array[0];

for(i=1;__

(1)___;i++)

sum+=___

(2)___;

aver=sum/10;

return(aver);}

main()

{floatscore[10],aver;inti;

printf(“\ninput10scores:

”);

for(i=0;i<10;i++)scanf(“%f”,&score[i]);

aver=___(3)___;

printf(“\naveragescoreis%5.2f\n”,aver);

}

四、读程序写结果题

1.15

2.i=7;j=6;x=7i=2;j=7;x=5;

3.111

4.A+B=9

5.123

6.246

7.1:

a=1,b=1

2:

a=1,b=2

3:

a=1,b=3

8.x=9

x=10

9.9

10.inputaintegernumber:

5

5!

=120

11.21

12.777

13.15

14.0

15.sum=6

1.下面程序的运行结果是:

(1级)

main(){inti=5;printf(“%d\n”,sub(i));}

sub(intn)

{inta;

if(n==1)a=1;elsea=n+sub(n-1);return(a);}

2.下面程序的运行结果是:

(1级)

main(){inti=2,x=5,j=7;fun(j,6);

printf(“i=%d;j=%d;x=%d\n”,i,j,x);}

fun(inti,intj){intx=7;printf(“i=%d;j=%d;x=%d\n”,i,j,x);

3.以下程序的运行结果是。

(1级)

main(){increment();increment();increment();}

increment(){intx=0;x+=1;printf(“%d”,x);}

4.以下程序的运行结果是。

(1级)

inta=5;intb=7;

main(){inta=4,b=5,c;

c=plus(a,b);printf(“A+B=%d\n”,c);}

plus(intx,inty){intz;z=x+y;return(z);}

5.以下程序的运行结果是。

(1级)

main(){increment();increment();increment();}

increment(){staticintx=0;x+=1;printf(“%d”,x);}

6.以下程序的输出结果是。

(2级)

voidfun()

{staticinta=0;

a+=2;printf(“%d”,a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun()

printf(“\n”);

}

7.以下程序的输出结果是。

(2级)

#include

voidf(intc)

{inta=0;

staticintb=0;

a++;

b++;

printf("%d:

a=%d,b=%d\n",c,a,b);

}

voidmain(void)

{inti;

for(i=1;i<=3;i++)f(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1