函数习题.docx

上传人:b****6 文档编号:5894932 上传时间:2023-01-02 格式:DOCX 页数:14 大小:20.93KB
下载 相关 举报
函数习题.docx_第1页
第1页 / 共14页
函数习题.docx_第2页
第2页 / 共14页
函数习题.docx_第3页
第3页 / 共14页
函数习题.docx_第4页
第4页 / 共14页
函数习题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

函数习题.docx

《函数习题.docx》由会员分享,可在线阅读,更多相关《函数习题.docx(14页珍藏版)》请在冰豆网上搜索。

函数习题.docx

函数习题

第6章函数习题

一、选择题

1、以下正确的函数定义形式是A。

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

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

2、按C语言的规定,以下不正确的说法是C。

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

C)实参可以为任意类型D)形参应与其对应的实参类型一致

3、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是B。

A)地址传递B)单向值传递C)由实参传给形参D)由用户指定传递方式

4、在C语言程序中,以下正确的描述是B。

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

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

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

D)函数的定义和函数的调用均可以嵌套

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

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

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

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

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

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

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

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

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

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

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

8、凡是函数中未指定存储类型的局部变量,其隐含的存储类型为A。

A)autoB)staticC)externD)register

9、在宏定义#definePI3.14159中,用宏名PI代替一个A。

A)常量B)单精度数C)双精度数D)字符串

10、有以下程序:

#include

intf(intb[][4])

{

inti,j,s=0;

for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s=s+b[i][j];}

returns;

}

voidmain()

{

inta[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};

cout<

}

执行后的输出结果是D。

A)12B)11C)18D)16

12、以下描述不正确的是B。

A)调用函数时,实参可以是表达式

B)调用函数时,实参与形参可以共用内存单元

C)调用函数时,将为形参分配内存单元

D)调用函数时,实有与形参的类型必须一致

13、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是B。

A)地址传递

B)值传递

C)由实参传给形参,并由形参回传给实参

D)由用户指定传递方式

14、在一个源文件中定义的全局变量的作用域为D。

A)本文件的全部范围

B)本程序的全部范围

C)本函数的全部范围

D)从定义该变量的位置开始至本文件结束为止

15、有一个如下定义的函数:

func(a)

{

cout<

}

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

A)与参数a的类型相同

B)void类型

C)没有返回值

D)无法确定

16、以下程序的输出结果是A。

#include

intfunc(inta,intb,intc)

{

intd;

d=a+b+c;

returnd;

}

voidmain()

{

intx=1,y=2,z=3,r;

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

cout<

}

17、以下程序的输出结果是A。

#include

intfunc(intx)

{

intp;

if(x==0||x==1)

return(3);

p=x-func(x-2);

returnp;

}

voidmain()

{

cout<

}

A)7B)2C)0D)3

解:

func()是一个递归函数,调用func(9)时,执行p=9-func(7);调用func(7)时,执行p=7-func(5);调用func(5)时,执行p=5-func(3); 调用func(3)时,执行p=3-func

(1);调用func

(1)返回3;返回p=3-func

(1)=3-3=0,func(3)=0;返回p=5-func(3)=5-0=5,func(5)=5;返回p=7-func(5)=7-5=2,func(7)=2;返回p=9-func(7)=9-2=7,func(9)=7。

二、填空题:

1、以下程序的运行结果是767275。

#include

fun(inti,intj)

{intx=7;cout<

}

voidmain()

{

inti=2,x=5,j=7;

fun(j,6);

cout<

}

2、以下程序的运行结果是111。

#include

increment()

{intx=0;x=x+1;cout<

}

voidmain()

{

increment();increment();increment();

}

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

#include

max(intx,inty)

{intz;z=(x>y)?

x:

y;return(z);

}

voidmain()

{

inta=1,b=2,c;c=max(a,b);cout<<"最大值是"<

}

4、以下程序的运行结果是第一次:

x=2y=3z=0第二次x=4y=9z=5第三次x=2y=3z=0。

#include

add(intx,inty,intz)

{z=x+y;x=x*x;y=y*y;

cout<<"第二次:

x="<

}

voidmain()

{intx=2,y=3,z=0;

cout<<"第一次:

x="<

add(x,y,z);

cout<<"第三次:

x="<

}

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

#include

f(inta[])

{inti=0;

while(a[i]<=10){cout<

}

voidmain()

{inta[]={1,5,10,9,11,7};

f(a+1);

}

6、以下程序的运行结果是6。

#include

func(inta[][3])

{inti,j,sum=0;

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

for(j=0;j<3;j++)

{a[i][j]=i+j;if(i==j)sum=sum+a[i][j];}

return(sum);

}

voidmain()

{inta[3][3]={1,3,5,7,9,11,13,15,17};intsum;

sum=func(a);

cout<

}

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

请填空。

#include

voidyesno(charch)

{switch(ch)

{

case'Y':

case'y':

cout<<"ThisisYES.\n";break;

case'N':

case'n':

cout<<"ThisisNO.\n";break;

}

}

voidmain()

{charch;

cout<<"请输入一个字母'Y','y'或'n','N':

";

cin>>ch;

yesno(ch);

}

8、以下程序的运行结果是9。

#include

inta=5;intb=7;

plus(intx,inty)

{intz;z=x+y;returnz;

}

voidmain()

{

inta=4,b=5;cout<

}

9、以下程序的功能是12624120。

#include

intfac(intn)

{staticintf=1;f=f*n;return(f);

}

voidmain()

{

inti;for(i=1;i<=5;i++)

cout<

}

10、以下程序的输出结果是2。

#include

intm=13;

intfun(intx,inty)

{

intm=3;

return(x*y-m);

}

voidmain()

{

inta=7,b=5;

cout<

}

解:

在主函数中调用fun(a,b)时,m=3是内部变量,返回x*y-m=7*5-3=32。

然而主函数中m是外部变量,m=13,所以程序的输出结果(32/13的结果值)为:

2。

11、以下程序的执行结果是44。

#include

voidfunc(int);

voidmain()

{

intk=4;

func(k);

func(k);

}

voidfunc(inta)

{

intm=0;

m=m+a;

cout<

}

12、以下程序的执行结果是a=10,b=3。

#include

inta,b;

voidmain()

{

intswap();

a=3;b=10;

swap();

cout<<"a="<

}

swap()

{

inttemp;

temp=a;

a=b;

b=temp;

}

13、以下程序的执行结果是x=4。

#include

intx;

sub()

{

x=4;

}

voidmain()

{

sub();

cout<<"x="<

}

14、以下程序的执行结果是a=5

a*a=25

a*a*a=8。

#include

inta=5;

voidp1();

voidp2();

voidmain()

{

cout<<"a="<

p1();

p2();

}

voidp1()

{

cout<<"a*a="<

a=2;

}

voidp2()

{

cout<<"a*a*a="<

}

15、以下程序的执行结果是1.x=3

2.x=6

3.x=1

4.x=3。

#include

intx=5;

voidp1();

voidp2();

voidmain()

{

intx=3;

cout<<"1.x="<

p1();

p2();

cout<<"4.x="<

}

voidp1()

{

x=x+1;

cout<<"2.x="<

}

voidp2()

{

intx=1;

cout<<"3.x="<

}

16、以下程序的运行结果是maxis2。

#include

intmax(intx,inty);

voidmain()

{

inta=1,b=2,c;

c=max(a,b);

cout<<"maxis"<

}

intmax(intx,inty)

{

intz;

z=(x>y)?

x:

y;

return(z);

}

17、以下程序的运行结果是10204040。

#include

intx1=30,x2=40;

voidsub(intx,inty)

{

x1=x;

x=y;

y=x1;

return;

}

voidmain()

{

intx3=10,x4=20;

sub(x3,x4);

sub(x2,x1);

cout<

}

18、下面的函数sum(intn)完成计算∑i。

请填空。

sum(inti)

{

intr;

if(n<=0)cout<<"dataerror"<

if(n==1)①;

else②;

returnr;

}

解:

该递归函数对应的递归式f(n)如下:

f(n)=

所以本题答案为:

1r=1

2r=n+sum(n-1)

三、编程题:

1、编程实现字符串拷贝,即编写一个strcpy1()函数:

strcpy1(s1,s2,m,n)

功能要求:

将s2串中从第m个字符位置开始共n个字符拷贝到s1串中。

在主程序中设置s1=”hello”,s2=”happynewyear!

”,若调用strcpy1(s1,s2,7,3),则结果s1的值为”new”.

解:

在strcpy1(0函数中,先求s2串的长度len,判断m、n参数是否有效,有效时返回1,否则返回0。

在参数有效时,将s2[m-1]~s2[m+n-2]复制到s1中。

程序如下:

#include

#defineM100

intstrcpy1(chars1[],chars2[],intm,intn)

{

intlen=0,i,j=0;

while(s2[len++]!

='\0');

len--;

if(m+n>=len)

return0;

else

{

for(i=m-1;i

s1[j++]=s2[i];

s1[j]='\0';

return1;

}

}

voidmain()

{

chars1[M]="hello";

chars2[M]="happynewyear!

";

if(strcpy1(s1,s2,7,6)==1)

cout<

else

cout<<"参数不正确"<

}

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

当前位置:首页 > 自然科学

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

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