第5章 函数.docx

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

第5章 函数.docx

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

第5章 函数.docx

第5章函数

第5章函数与预处理

一.函数定义及调用

1.C语言中,若对函数类型无说明,则函数的默认类型是【】

A)整型B)floatC)doubleD)指针类型

2.C语言规定,在一个源程序中,main函数的位置【】

A)必须在最开始B)必须在系统调用的库函数的后面

C)可以任意D)必须在最后

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

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

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

4.若已定义的函数有返回值,则关于该函数调用的叙述中错误的【】。

A)调用可以作为独立的语句存在B)调用可以作为一个函数的实参

C)调用可以出现在表达式中D)调用可以作为一个函数的形参

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

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

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

6.有以下函数定义:

voidfun(intn,doublex){……}

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

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

C)fun(x,n);D)voldfun(n,x);

7.有以下程序

#include"stdio.h"

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);

}

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

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

8.C语言中,函数值类型的定义可以缺省,此时隐含类型是【】。

A)voidB)intC)floatD)double

9.有以下程序

#include"stdio.h"

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));

}程序运行后的输出结果是【】。

A)编译出错B)9C)21D)9.0

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

#include"stdio.h"

voidsort(inta[],intn)

{inti,j,t;

for(i=0;i

for(j=i+1;j

if(a[i]

}

main()

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

sort(&aa[3],5);

for(i=0;i<10;i++)printf("%d,",aa[i]);

printf("\n");

}

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

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

11、以下函数的功能是计算s=1+

+

+……+

,请填空。

doublefun(intn)

{doubles=0.0,fac=1.0;inti;

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

{fac=fac【】;

s=s+1/fac;

}

returns;

}

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

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

请填空。

#include"stdio.h"

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;

f=【】;

}

returnm;

}

main()

{printf("m=%d\n",【】);}

13.以下程序的运行结果是【】。

#include"stdio.h"

prt(intm[5])

{

intj;

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

{

m[j]=m[j]+1;

printf("%d,",m[j]);

}

}

main()

{

inta[5]={2,3,4,5,6};

inti;

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

printf("%d,",a[i]);

printf("\n");

prt(a);

printf("\n");

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

printf("%d,",a[i]);

printf("\n");

}

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

#include"stdio.h"

【】(double,double);

main()

{doublex,y;

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

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

}

doublemax(doublea,doubleb)

{return(a>b?

a:

b);}

15.若有以下程序

#include

voidf(intn);

main()

{voidf(intn);

f(5);

}

voidf(intn)

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

则以下叙述中不正确的是【】

A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f

C)对于以上程序,编译时系统会提示出错信息:

提示对对f函数重复说明

D)函数f无返回值,所以可用void将其类型定义为无值型

16.以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。

#include"string.h"

#include"stdio.h"

voidf(charp[][10],intn)

{chart[20];inti,j;

for(i=0;i

for(j=i+1;j

if(strcmp(p[i],p[j])<0)

{strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}

}

main()

{charp[][10]={"abc","aabdfg","abbd","dcdbe","cd"};inti;

f(p,5);printf("%d\n",strlen(p[0]));

}程序运行后的输出结果是【】

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

17下列叙述中正确的是【】

A)C语言编译时不检查语法

B)C语言的子程序有过程和函数两种

C)C语言的函数不可以嵌套定义

D)C语言所有函数都是外部函数

18.当调用函数时,实参是一个数组名,则向函数传送的是【】

A)数组的长度B)数组的首地址

C)数组每一个元素的地址D)数组每个元素中的值

19.以下所列的各函数首部中,正确的是【】

A)voidplay(var:

Integer,varb:

Integer)

B)voidplay(inta,b)

C)voidplay(inta,intb)

D)Subplay(aasinteger,basinteger)

20.以下程序的输出结果是【】

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

fun(intx,inty,intz)

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

main()

{inta=31;

fun(5,2,a);

printf(“%d”,a);

}

21.以下函数的功能是:

求x的y次方,请填空。

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i

returnz;}

22、以下程序运行后的输出结果是【】。

#include”stdio.h”

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);

}

23若已定义:

inta[10],i;,以下fun函数的功能是:

在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。

请填空。

fun(inta[])

{inti;

for(i=0;i<10;i++)【】=i;

for(i=0;i<5;i++)【】=a[i];

}

二.函数嵌套和递归

1.有以下程序

#include“stdio.h”

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);

}

程序运行后的输出结果是【】

A)4B)3C)2D)13.用递归法

2.以下程序运行后的输出结果是【】

#include"stdio.h"

fun(intx)

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

printf("%d",x);

}

main()

{fun(6);}

 

三.作用域和存储类型

1.以下不正确的说法是【】。

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

B)形式参数是局部变量。

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

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

2.有以下程序

#include"stdio.h"

inta=3;

main()

{ints=0;

{inta=5;s+=a++;}

s+=a++;printf("%d\n",s);

}

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

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

3.以下程序的输出结果是【】。

#include

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);

}

A)20B)24C)25D)15

4.在C语言中,形参的缺省存储类是【】。

A)autoB)registerC)staticD)extern

5.下面程序的执行结果是【】

#include

increment()

{intx=0;

x+=1;

printf("%d",x);}

main()

{increment();

increment();

increment();}

6.下面程序的执行结果是【】

#include

increment()

{staticintx=0;

x+=1;

printf("%d",x);}

main()

{increment();

increment();

increment();}

7.下面程序的执行结果是【】

#include

shift(inta)

{

a*=2;

return(a);

}

main()

{

staticinty[2]={15,25};

intz=20;

z=shift(y[0]);

printf("%d,%d\n",y[0],z);

}

8.下面程序的执行结果是【】

#include"stdio.h"

intn=1;

func()

{staticintx=4;inty=10;

x=x+2;

n=n+10;

y=y+n;

printf("Func:

x=%2dy=%2dn=%2d\n",x,y,n);}

main()

{staticintx=5;inty;

y=n;

printf("Main:

x=%2dy=%2dn=%2d\n",x,y,n);

func();

printf("Main:

x=%2dy=%2dn=%2d\n",x,y,n);

func();}

9.以下程序的输出结果是【】

#include"stdio.h"

inta,b;

voidfun()

{a=100;b=200;}

main()

{inta=5,b=7;

fun();

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

}

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

10以下程序输出的最后一个值是【】。

#include"stdio.h"

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i));

}

11以下程序运行后的输出结果是【】

#include"stdio.h"

inta=5;

fun(intb)

{staticinta=10;

a+=b++;

printf("%d",a);

}

main()

{intc=20;

fun(c);

a+=c++;

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

}

12.设有以下函数:

f(inta)

{intb=0;

staticintc=3;

b++;c++;

return(a+b+c);

}

如果在下面的程序中调用该函数,则输出结果是【】

main()

{inta=2,i;

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

}

A)7B)7C)7D)7

89107

911137

13.以下程序的输出的结果是【】

intx=3;

main()

{inti;

for(i=1;i

}

ncre()

{staicintx=1;

x*=x+1;

printf("%d",x);

}

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

四.编译预处理

1.在宏定义:

#definePI3.141592中,用宏名PI代替一个【】

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

2.以下任何情况下计算平方数时都不会引起二义性的宏定义是【】。

A)#definePOWER(x)x*xB)#definePOWER(x)(x)*(x)

C)#definePOWER(x)(x*x)D)#definePOWER(x)((x)*(x))

3.以下正确的叙述是【】。

A)C语言的预处理功能是指完成宏替换和包含文件的调用。

B)C语言的预处理指令只能位于C源程序文件的首部。

C)凡是C源程序中行首以“#”标识的控制行都是预处理指令。

D)C语言的编译预处理就是对源程序进行初步的语法检查。

4.C语言提供的预处理功能包括条件编译,其基本形式是:

#XXX标识符

程序段1

#else

程序段2

#endif

这里XXX可以是【】。

A)define或includeB)ifdef或include

C)ifdef或ifndef或defineD)ifdef或ifndef或if

5.以下程序的输出结果是【】

#include"stdio.h"

#defineM(x,y,z)x*y+z

main()

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

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

}

A)19B)17C)15D)12

6.、下面程序的运行结果是【】。

#defineN10

#defines(x)x*x

#definef(x)(x*x)

#include"stdio.h"

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

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

}

7.设有如下宏定义

#defineMYSWAP(z,x,y){z=x;x=y;y=z;}

以下程序段通过宏调用实现变量a、b内容交换,请填空。

floata=5,b=16,c;

MYSWAP(【】,a,b);

8.程序中头文件typel.h的内容是:

#defineN5

#defineM1N*3

程序如下:

#define“type1.h”

#defineM2N*2

main()

{inti;

i=M1+M2;printf(“%d\n”,i);

}

程序编译后运行的输出结果是:

【】

A)10B)20C)25D)30

9.以下叙述正确的是【】

A)可以把define和if定义为用户标识符

B)可以把define定义为用户标识符,但不能把if定义为用户标识符

C)可以把if定义为用户标识符,但不能把define定义为用户标识符

D)define和if都不能定义为用户标识符

10.有以下程序

#include

#defineF(X,Y)(X)*(Y)

main()

{inta=3,b=4;

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

}

程序运行后的输出结果是【】

A)12B)15C)16D)20

11以下各选项企图说明一种新的类型名,其中正确的是【】

A)typedefv1int;B)typedefv2=int;

C)typedefv1intv3;D)typedefv4:

int;

12设有以下说明语句

typedefstruct

{intn;

charch[8];

}PER;

则下面叙述中正确的是【】

A)PER是结构体变量名B)PER是结构体类型名

C)typedefstruct是结构体类型D)struct是结构体类型名

#include"stdio.h"

#definePF(y)((y)*(y))

main()

{

inti=1;

while(i<=5)

printf("%d\t",PF(i++));

}

#include"stdio.h"

PF(intx)

{returnx*x;}

main()

{

inti=1;

while(i<=5)

printf("%d\t",PF(i++));

}

二.填空题

1.下面程序的运行结果是()。

#defineMAX(a,b)(a>b?

a:

b)+1

main(){

intj=6,k=8,f;

printf("%d\n",MAX(j,k)):

}

2.下面程序的运行结果是()。

#defineA4

#defineB(x)A*x/2

main(){

floatc,a=4.5;

c=B(a);

printf("%5.1f\n",c);}

3.设有以下程序,为使之正确运行,请在【】中填入应包含的命令行。

#include“stdio.h”

【】

main(){

intx=2,y=3;

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

4.下面程序的运行结果是()。

main(){

inta=10,b=20,c;

c=a/b;

#ifdefDEBUG

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

#endif

printf("c=%d\n",c);}

5.下面程序的运行结果是()。

#defineDEBUG

main(){

inta=14,b=15,c;

c=a/b;

#ifdefDEBUG

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

#endif

printf("c=%d\n",c);}

一、函数定义及调用

1.A2.C3.A4.D5.B6.C7.D

8.B9.B10.C11.*i12.①-f12②fun(10)

13.2,3,4,5,6,

3,4,5,6,7,

3,4,5,6,7,

14doublemax15.C16.C17.C18.B19.C20.C

20.C21.x22.3,2,2,323

(1)a[i]

(2)a[9-i]

二、函数嵌套和递归

三、作用域和存储类型

1.D2.A3.D4.A5.1116.1237.15,30

8.

Main:

x=5y=1n=1

Fanc:

x=6y=21n=11

Main:

x=5y=1n=11

Fanc:

x=8y=31n=21

9.B10.1262412011.302512.A13.C

 

四编译预处理

1.D2.D3.C4.D5.D6.1000107.c

8.C9.D10.A11.C12.B

二.填空题

1.92.9.03.#include4.c=05.a=14,b=15,c=0

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

当前位置:首页 > 外语学习 > 法语学习

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

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