第5章 函数答案.docx

上传人:b****2 文档编号:11689522 上传时间:2023-06-02 格式:DOCX 页数:17 大小:19.41KB
下载 相关 举报
第5章 函数答案.docx_第1页
第1页 / 共17页
第5章 函数答案.docx_第2页
第2页 / 共17页
第5章 函数答案.docx_第3页
第3页 / 共17页
第5章 函数答案.docx_第4页
第4页 / 共17页
第5章 函数答案.docx_第5页
第5页 / 共17页
第5章 函数答案.docx_第6页
第6页 / 共17页
第5章 函数答案.docx_第7页
第7页 / 共17页
第5章 函数答案.docx_第8页
第8页 / 共17页
第5章 函数答案.docx_第9页
第9页 / 共17页
第5章 函数答案.docx_第10页
第10页 / 共17页
第5章 函数答案.docx_第11页
第11页 / 共17页
第5章 函数答案.docx_第12页
第12页 / 共17页
第5章 函数答案.docx_第13页
第13页 / 共17页
第5章 函数答案.docx_第14页
第14页 / 共17页
第5章 函数答案.docx_第15页
第15页 / 共17页
第5章 函数答案.docx_第16页
第16页 / 共17页
第5章 函数答案.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第5章 函数答案.docx

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

第5章 函数答案.docx

第5章函数答案

第5章函数

一、选择题

1、以下所列的各函数首部中,正确的是(C)

A)voidplay(var:

Integer,varb:

Integer)

B)voidplay(inta,b)

C)voidplay(inta,intb)

D)Subplay(aasinteger,basinteger)

2、以下正确的函数的形式是(B)

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

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

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

{intx,y;doublez;{doublez;

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

3、以下正确的函数定义形式是(C)

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

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

4、C语言规定,函数返回值的类型是由(D)

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

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

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

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

5、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(D)

A)函数调用可以作为独立的语句存在

B)函数调用可以作为一个函数的实参

C)函数调用可以出现在表达式中

D)函数调用可以作为一个函数的形参

6、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是(B)

A)voidB)intC)floatD)double

7、以下函数值的类型是(A)

fun(floatx)

{floaty;

y=3*x-4;

returny;

}

A)intB)不确定

C)voidD)float

8、以下函数调用语句中,含有的实参个数是(B)

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

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

9、有以下程序

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)

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

10、以下程序的输出结果是(C)

A)0B)29C)31D)无定值

fun(intx,inty,intz)

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

main()

{inta=31;

fun(5,2,a);

printf(“%d”,a);

}

11、有以下程序

fun(inta,intb){

if(a>b)return(a);

elsereturn(b);

}

main(){

intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

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

}

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

A)3B)6C)8D)12

12、有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf(“%3.0f\n”,fun((int)fun(a+c,b),a-c));

}

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

A)编译出错B)9

C)21D)9.0

13、有如下程序

longfib(intn){

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

elsereturn

(2);

}

main(){

printf("%d\n",fib(3));

}

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

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

14、以下程序的输出结果是(A)

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

longfun(intn)

{longs;

if(n==1||n==2)s=2;

elses=n-fun(n-1);

returns;

}

main()

{printf("%ld\n",fun(3));}

15、有以下程序

intf(intn){

if(n==1)return1;

elsereturnf(n-1)+1;

}

main(){

inti,j=0;

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

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

}

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

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

16、以下叙述中不正确的是(D)

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

B)函数中的形式参数是局部变量

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

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

17、以下叙述中正确的是(A)

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

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

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

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

18、以下程序的输出结果是(B)

inta=5;

fun(intb){

inta=10;

a+=b++;

printf("%d",a);

}

main(){

intc=20;

fun(c);

a+=c++;

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

}

A)3126B)3025C)2525D)3030

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

A)auto和staticB)auto和register

C)register和staticD)extern和register

20、以下叙述中不正确的是(C)

A)一个变量的作用域完全取决于变量定义语句的位置

B)全局变量可以在函数以外的任何部分进行定义

C)局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保持至下一次调用

D)一个全局变量说明为static存储类是为了限制其他编译单位的引用

21、有以下程序

inta=4;

intf(intn){

intt=0;

staticinta=5;

if(n%2){inta=6;t+=a++;}

else{inta=7;t+=a++;}

returnt+a++;

}

main(){

ints=a,i=0;

for(;i<2;i++)s+=f(i);

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

}

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

A)24B)28C)32D)36

22、有以下程序

intf(intx,inty)

{return((y-x)*x);}

main(){

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

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

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

}

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

A)10B)9C)8D)7

23、有以下程序

intfun(intx,inty)

{if(x==y)return(x);

elsereturn((x+y)/2);

}

main(){

inta=4,b=5,c=6;

printf(“%d\n”,fun(2*a,fun(b,c)));

}

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

A)3B)6C)8D)12

24、有以下程序

int fun(int  a,int   b)

{ if(b==0)  return a;

 else     return(fun(--a,--b));

}

main()

{  printf("%d\n", fun(4,2));}

程序的运行结果是(B)

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

25、有以下程序

intf(intx){

inty;

if(x==0||x==1)return(3);

y=x*x-f(x-2);

returny;

}

main(){

intz;

z=f(3);

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

程序的运行结果是(C)

}A)0B)9C)6D)8

二、程序阅读题

1、以下程序的正确结果是2,5,1,2,3,-2

main()

{

inta=3,b=2,c=1;

c-=++b;

b*=a+c;

{

intb=5,c=12;

c/=b*2;

a-=c;

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

a+=--c;

}

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

}

2、有以下程序,当执行后,其结果是14

inta=1;

intf(intc){

staticinta=2;

c=c+1;

return(a++)+c;

}

main(){

inti,k=0;

for(i=0;i<2;i++){inta=3;k+=f(a);}

k+=a;

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

}

3、以下程序运行后的输出结果是136

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

4、若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

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

d=f(f(3,4),f(3,5));

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

}

执行后输出结果是9

5、有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

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

6、以下程序的输出结果是1,6,3,2,3

main(){

inti=1,j=3;

printf("%d,",i++);

{

inti=0;

i+=j*2;

printf("%d,%d,",i,j);

}

printf("%d,%d\n",i,j);

}

7、以下程序的输出结果是15

intf()

{staticinti=0;

ints=1;

s+=i;i++;

returns;

}

main()

{inti,a=0;

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

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

}

8、以下程序运行后的输出结果是3,2,2,3

voidfun(intx,inty)

{x=x+y;y=x-y;x=x-y;

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

main()

{intx=2,y=3;

fun(x,y);

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

9、以下程序的运行结果是m=4k=4i=5j=5      。

intk=0;

voidfun(intm)

{m+=k;k+=m;printf("m=%dk=%d",m,k++);}

main()

{inti=4;

fun(i++);printf("i=%dk=%d\n",i,k);

}

10、有以下程序

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若运行时输入:

1234<回车>,程序的输出结果是10

11、以下程序的输出结果是  15  。

int fun(int x)

{ static int t=0;

 return(t+=x);

}

main()

{ int s,i;

 for(i=1;i<=5;i++)  s=fun(i);

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

}

三、程序填空题

1、请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

doublemax(double,double);

main()

{doublex,y;

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

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

}

doublemax(doublea,doubleb)

{return(a>b?

a:

b);}

2、下面程序的功能是:

将任意输入的一个偶数n分解为两个素数之和,程序中函数check用来判断一个整数x是否是素数,若是,返回1,否则返回0。

main(){

intn,i;

intcheck(intx);

do{

printf("Inputn:

");

scanf("%d",&n);

}while(n%2!

=0);

for(i=3;i<=n/2;i++)

if(check(i)&&check(n-i))

printf("%d=%d+%d\n",n,i,n-i);

}

intcheck(intx){

inti;

for(i=2;i

if(x%i==0)return(0);

return

(1);}

3、以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0,请填空

intisprime(inta)

{

inti;

for(i=2;i<=a/2;i++)

if(a%i==0)return0;

return1;

}

4、请将以下程序中的函数声明语句补充完整。

intmax(int,int);

main()

{intx,y,(*p)();

scanf(“%d%d”,&x,&y);

p=max;

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

}

intmax(inta,intb)

{return(a>b?

a:

b);}

5、以下程序的功能是:

通过函数func输入字符并统计输入字符的个数。

输入时用字符@作为输入结束标志。

请填空。

long   func()   /*  函数说明语句  */

main()

{ long n;

 n=func();  printf("n=%ld\n",n);

}

long func()

{ long m;

 for(m=0;getchar()!

='@';  m++ );

 return m;

}

6、以下程序的功能是调用函数fun计算:

m=1-2+3-4+…+9-10,并输出结果。

请填空。

intfun(intn){

intm=0,f=1,i;

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

m+=i*f;

f=-f;

}

returnm;

}

main()

{printf("m=%d\n",fun(10));}

7、以下sum函数的功能是计算下列级数之和。

s=1+x+x2/2!

+x3/3!

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

请给函数中的各变量正确赋初值。

doublesum(doublex,intn){

inti;doublea,b,s;

s=1;

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

a=a*x;

b=b*i;

s=s+a/b;

}

returns;

}

8、通过函数求f(x)的累加和,其中f(x)=x2+1

main(){

printf("Thesum=%d\n",SunFun(10));

}

SunFun(intn){

intx,s=0;

for(x=0;x<=n;x++)s+=F(x);

returns;

}

F(intx)

{returnx*x+1;}

四、程序编程题

1、请编写函数fun,它的功能是:

计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

例如,当n为20时,返回的值为0.583333。

下面已经给出了函数的首部,请编写函数体部分。

doublefun(intn)

{

请完成函数体部分

}

2、请编写一个函数fun,它的功能是:

计算并输出给定整数n的所有因子(不包括1和自身)之和。

规定n的值不大于1000。

例如整数856的所有因子之和等于763。

下面已经给出了函数的首部,请编写函数体部分。

intfun(intn)

{

请完成函数体部分

}

3、请编写函数fun,其功能是:

计算并输出3到n之间的(含3和n)所有素数的平方根之和。

例如,n为100,则返回值为148.872470。

要求n的值大于2但不大于100。

下面已经给出了函数的首部,请编写函数体部分。

doublefun(intn)

{

请完成函数体部分

}

4、请编写一个函数,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。

例如:

实型数为1234.567,则函数返回1234.570000

实型数为1234.564,则函数返回1234.560000

下面已经给出了函数的首部,请编写函数体部分。

floatfun(floath)

{

请完成函数体部分

}

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

当前位置:首页 > 经管营销 > 经济市场

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

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