单元测试之三函数.docx

上传人:b****8 文档编号:9350735 上传时间:2023-05-18 格式:DOCX 页数:23 大小:24.88KB
下载 相关 举报
单元测试之三函数.docx_第1页
第1页 / 共23页
单元测试之三函数.docx_第2页
第2页 / 共23页
单元测试之三函数.docx_第3页
第3页 / 共23页
单元测试之三函数.docx_第4页
第4页 / 共23页
单元测试之三函数.docx_第5页
第5页 / 共23页
单元测试之三函数.docx_第6页
第6页 / 共23页
单元测试之三函数.docx_第7页
第7页 / 共23页
单元测试之三函数.docx_第8页
第8页 / 共23页
单元测试之三函数.docx_第9页
第9页 / 共23页
单元测试之三函数.docx_第10页
第10页 / 共23页
单元测试之三函数.docx_第11页
第11页 / 共23页
单元测试之三函数.docx_第12页
第12页 / 共23页
单元测试之三函数.docx_第13页
第13页 / 共23页
单元测试之三函数.docx_第14页
第14页 / 共23页
单元测试之三函数.docx_第15页
第15页 / 共23页
单元测试之三函数.docx_第16页
第16页 / 共23页
单元测试之三函数.docx_第17页
第17页 / 共23页
单元测试之三函数.docx_第18页
第18页 / 共23页
单元测试之三函数.docx_第19页
第19页 / 共23页
单元测试之三函数.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单元测试之三函数.docx

《单元测试之三函数.docx》由会员分享,可在线阅读,更多相关《单元测试之三函数.docx(23页珍藏版)》请在冰点文库上搜索。

单元测试之三函数.docx

单元测试之三函数

单元测试之三函数

一.单项选择题

1.C语言总是从()函数开始执行。

A

A.mainB.处于最前的

C.处于最后的D.随机选一个

2.函数在定义时,省略函数类型说明符,则该函数值的类型为()。

A

A.intB.floatC.longD.double

3.以下()函数,真正地没有返回值。

B

A.inta(){inta=2;return(a);}B.voidb(){printf("c");}

C.inta(){inta=2;returna;}D.以上都是

4.以下函数调用语句中,含有实参的个数为()。

B

fun((2,3),(4,5+6,7));

A1B.2C.5D.6

5.函数调用可以在()。

D

A.函数表达式中B.函数语句中

C.函数参数中D.以上都是

6.被调函数返回给主调函数的值称为()。

C

A.形参B.实参C.返回值D.参数

7.(),可以不进行函数类型说明。

A

A.被调函数的返回值是整型或字符型时

B.被调函数的定义在主调函数定义之前时

C.在所有函数定义前,已在函数外预先说明了被调函数类型

D.以上都是

8.被调函数通过()语句,将值返回给主调函数。

D

A.ifB.forC.whileD.return

9.被调函数调用结束后,返回到()。

D

A.主调函数中该被调函数调用语句处

B.主函数中该被调函数调用语句处

C.主调函数中该被调函数调用语句的前一语句

D.主调函数中该被调函数调用语句的后一语句

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

A

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

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

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

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

11.C语言中函数的隐含存储类型是()。

A

A.autoB.staticC.externD.无存储类型

12.能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的是()。

A

A.return这两个数B.形参用两个元素的数组

C.形参用两个这种数据类型的指针D.用两个全局变量

13.以下正确的描述是:

在C语言程序中()。

B

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

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

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

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

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

C语言规定()。

B

A.实参可以是常量,变量或表达式

B.形参可以是常量,变量或表达式

C.实参可以为任何类型

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

15.以下正确的说法是:

在C语言中()。

A

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

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

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

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

16.若调用一个函数,且此函数中没有return语句,则正确的说法是:

该函数()。

D

A.没有返回值B.返回若干个系统默认值

C.能返回一个用户所希望的值D.返回一个不确定的值

17.以下叙述中正确的是()。

B

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

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

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

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

18.以下正确的说法是()。

B

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

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

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

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

19.若用数组名作为函数的实参,传递给形参的是()。

A

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

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

20.以下正确的说法是()。

C

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

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

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

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

21.C语言规定:

简单变量做实参时,它和对应形参之间的数据传递方式是()。

B

A.地址传递B.单向值传递

C.由实参传给形参,再由形参传回给实参D.由用户指定的传递方式

22.C语言规定,函数返回值的类型是由()。

D

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

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

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

D.在定义该函数时所指定的函数类型所决定

23.有以下函数定义:

voidfun(intn,doublex){……}

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。

C

A.fun(inty,doublem);B.k=fun(10,12.5);

C.fun(x,n);D.voidfun(n,x);

24.下列程序的运行结果是()。

B

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf("%d%d",a,b);

}

A.63B.36C.编译出错D.00

25.以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序

voidsort(inta[],intn)

{inti,j,t;

for(i=0;ifor(j=i+1,jif(a[i]}

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&aa[3],5);

for(i=o;i<10;i++)print(“%d,”,aa[i]);

printf(‘\n”);

}

程序运行后的输出结果是()。

C

A.1,2,3,4,5,6,7,8,9,10B.10,9,8,7,6,5,4,3,2,1,

C.1,2,3,8,7.6.5.4.9,10D.1,2,10,9,8,7,6,5,4,3

26.以下只有在使用时才为该类型变量分配内存的存储类说明是()。

B

A.auto和staticB.auto和register

C.register和staticD.extern和register

27.以下程序的输出的结果是()。

C

intx=3;

main()

{inti;

for(i=1;i

}

incre()

{staicintx=1;

x*=x+1;

printf("%d",x);

}

A.33B.22C.26D.25

28.调用函数的实参与被调用函数的形参应该有如下关系()。

D

A.只要求实参和形参个数相等B.只要求形参和实参顺序相同

C.只要求实参和形参数据类型相同D.上述三点均需具备

29.下列程序

intsum(intn)

{intp=1,s=0,i;

for(i=1;i<=n;i++)s+=(p*=i);

returns;

}

main()

{printf(“sum(5)=%d\n”,sum(5));

}

运行后输出的数据为()。

C

A.sum(5)=151B.sum(5)=152C.sum(5)=153Dsum(5)=155

30.下列程序

intc=1;

main()

{staticinta=5;intb=6;

printf(“a=%db=%dc=%d\n”,a,b,c);

func();

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

func();

}

func()

{staticinta=4;intb=10;

a+=2;

c+=10;

b+=c;

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

}

运行后输出的数据为()。

A

A.a=5b=6c=1B.a=5b=6c=1

a=6b=21c=11a=7b=17c=11

a=5b=6c=11a=5b=6c=11

a=8b=31c=21a=9b=17c=21

C.a=5b=6c=1D.a=5b=6c=1

a=6b=21c=11a=7b=17c=11

a=6b=21c=11a=7b=17c=11

a=8b=31c=21a=9b=38c=21

31.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。

B

A.地址传递B.单向值传递

C.由实参传给形参,再由形参传回实参D.传递方式由用户指定

32.有如下程序

intfunc(inta,intb)

{return(a+b);}

main()

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

r=func(func(x,y),z);printf("%d\n",r);

}

该程序的输出结果是()。

D

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

33.以下程序的输出结果是()。

B

inta,b;

voidfun()

{a=100;b=200;}

main()

{inta=5,b=7;

fun();

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

}

A.100200B.57C.200100D.75

34.有如下程序

main()

{charch[2][5]={"6937","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i][j]>'\0';j+=2)

s=10*s+p[i][j]-'0';

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

}

该程序的输出结果是()。

C

A.69825B.63825C.6385D.693825

35.请选择正确的运行结果填入()中。

A

include

intx,y;

num()

{

inta=15,b=10;

intx,y;

y=a-b;

y=a+b;

return;

}

main()

{inta=7,b=5;

x=a+b;

y=a-b;

num();printf("%d,%d\n",x,y);

}

A.12,2B.5,25C.2,12D.不确定

二.填空题

1.变量的作用域主要取决于变量,变量的生存期既取决于变量,又取决于变量。

所处的位置,所处的位置,存储类型

2.说明变量时,若省略存储类型符,系统默认其为存储类别,该存储类别的类型符为:

动态,auto

3.静态型局部变量的作用域是,生存期是。

它所在的局部,整个程序

4.函数中的形参和调用时的实参都是数组名时,传递方式为,都是变量时,传递方式为。

址传递,值传递

5.函数的形式参数的作用域为,全局的外部变量和函数体内定义的局部变量重名时,变量优先。

该函数中,局部

6.若自定义函数要求返回一个值,则应在该函数体中有一条语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符。

return,void

7.若函数的形式参数是指针类型,则实参可以是、或。

指针,数组名

8.函数的参数为char*类型时,形参与实参结合的传递方式为。

址传递

9.函数的实参为常量时,形参与实参结合的传递方式为。

值传递

10.对数组按值从大到小的顺序排序后输出,请填空。

#include

voidmain()

{

floata[7]={2,6,3,8,3,12,9};

inti ;

voidsort(float*,int);

;

for(i=0;i<7;i++)printf("%f",a[i]);

printf("\n");

}

voidsort()

{

inti,j,k;floatt;

for(i=0;i

{

k=i;

for(j=i+1;j

if()k=j;

{t=*(p+i);*(p+i)=*(p+k);*(p+k)=t;}

}

}

sort(a,7)float*p,intn*(p+k)<*(p+j)k!

=i

11.下列函数在n个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填空。

#include

voidfind(float*p,intmax,intmin,intn)

{

intk;

*max=*p;

for(k=1;k

{

t=*(p+k);

if()*max=t;

if(t<*min)*min=t;

}

}

floatt;*min=*p;*max

12.观察以下函数,给出该函数所实现的功能。

doublesum(doublex,intn)

{inti;doublea,b,s;

a=1.0;b=1.0;s=1.0

for(i=1;i<=n;i++)

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

__________

S=1+x+x2/2!

+x3/3!

+........+xn/n!

13.有以下程序

voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

printf(“%d%d\n”,x,y);}

执行后输出的结果是________8

14.函数fun的功能是计算xn

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:

m=a*4+b*4-(a+b)*3。

实现这一计算的函数调用语句为_________fun(a,4)+fun(b,4)-fun(a+b,3)

15.请在以下字程序第一行的下划线处填写适当内容使程序能正确运行,并在第二个空白处加上注释以解释本程序的功能。

main()

{doublex,y;

scanf("%lf%lf",&x,&y);

printf("%lf\n",max(x,y));

}

____(doublea,doubleb)____________

{return(a>b?

a:

b);}

doublemax/*该子程序实现求两个数之间的最大数*/

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

要求形参名为b。

main()

{doubles[10][22];

intn;

}

fun(s);

{

}

voidfun(doubleb[][22])

三.写出下列程序运行结果:

1.

main()

{

inti=1,p;

p=fun(i,i+1);

printf("%d\n",p);

}

intfun(inta,intb)

{

intf;

if(a>b)

f=1;

elseif(a==b)

f=0;

else

f=-1;

returnf;

}

-1

2.键盘输入abcdef

#include

voidfun()

{

charc;

if((c=getchar())!

='\n')

fun();

putchar(c);

}

voidmain()

{fun();}

fedcba

3.

#include

#defineC5

intx=1,y=C;

voidmain()

{

intx;

x=y++;printf("%d%d\n",x,y);

if(x>4){intx;x=++y;printf("%d%d\n",x,y);}

x+=y--;

printf("%d%d\n",x,y);

}

56

77

126

4.

#include

intc,a=4;

func(inta,intb)

{c=a*b;a=b-1;b++;return(a+b+1);}

voidmain()

{

intb=2,p=0;c=1;

p=func(b,a);

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

}

4,2,8,9

5.

unsignedfun6(unsignednum)

{

unsignedk=1;

do{k*=num%10;num/=10;}

while(num);

returnk;

}

voidmain()

{

unsignedn=26;

printf("%d\n",fun6(n));

}

12

四.程序设计题

1.输入两个整数,求最大值,用函数实现。

答:

main()

{inta,b,c;

printf("inputthetwonumber");

scanf("%d%d",&a,&b);

c=fun(a,b);

printf("%d",c);

}

intfun(intx,inty)

{intz;

if(x>y)z=x;

elsez=y;

returnz;

}

2.用递归函数,求小于等于n的所有正整数之和。

答:

main()

{

ints,n;

printf("inputnumber\n");

scanf("%d",&n);

s=func(n);

printf("%d",s);

}

intfunc(intn)

{

ints;

if(n<0)

printf("n<0,inputerror\n");

else

s=n+fun(n-1);

retures;

}

3.编一个名为root的函数,求方程

,并作为函数的返回值。

其中的a、b、c作为函数的形式参数。

答:

floatroot(floata,floatb,floatc)

{floats;

s=b*b-4*a*c;

returns;

}

main()

{floatx,y,z,u;

printf("inputnumber\n");

scanf("%d%d%d",&x,&y,&z);

u=root(x,y,z);

printf("%d",u)

}

4.设计一个函数,求长方体的体积(边长为整数),要求写出相应的主函数。

答:

inttiji(intx,inty,intz)

{

returnx*y*z;

}

main()

{

intx,y,z;

printf(inputthenumber\n");

scanf("%d%d%d",&x,&y,&z);

printf("%d",tiji(x,y,z));

}

5.编一个函数,判断是否为为闰年,是则返回1,否则返回0。

答:

main()

{

ints,n;

printf("inputnumberofyear\n");

scanf("%d",n);

s=year(n);

printf("%d",s);

}

intyear(intn)

{

inta;

if(!

n%4)a=1;

elsea=0;

returna;

}

 

6.请编写一个函数jc,实现求k!

,所求阶乘值作为函数值返回,例如,若k=10,则返回值应为3628800。

#include

longfun(intk)

{if(k>0)

return(k*fun(k-1));

elseif(k==0)

return1l;

}

main()

{intk;

scanf("%d",&k);

clrscr();

printf("%d!

=%ld",k,fun(k));

}

7.编写函数summary,该函数功能是:

计算并输出k以内最大的10个能被13或17整除的自然数之和.k的值由主函数传入,若k的值为500,则函数值为4622。

#include

intsunmmary(intk)

{intsum=0,count=0,j;

while((k>=2)&&(conut<10))

{if((k%13==0)||k%17==0)

{sum=sum+k,count++;}

k--;

}

retrunsum;

}

main()

{intx;

scanf("%d",&x);

clrscr();

printf("%d\n",summary(x));

}

8.编写一个函数intfun(intw),w是一个大于10的整数,若w是n(n>=2)位的整数,函数求出w的后n-1位的猪作为函数值返回。

例如:

w值为5923,则函数返回923,w值为923则返回23。

intfun(intw)

{intn=0,i=1;

while(w>10)

{n=n+i*(w%10);

w/=10;

i*=10;

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

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2