函数和数组.docx

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

函数和数组.docx

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

函数和数组.docx

函数和数组

第3章函数和数组

库函数的调用

(1)有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数)

#include

#include

main()

{chara[10]="abc",b[10]="012",c[10]="xyz";

strcpy(a+1,b+2);

puts(strcat(a,c+1));

}

程序运行后的输出结果是

A)bc2yz

B)a2yz

C)a12xyz

D)12yz

(2)若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是

A)main(){……x=fun(2,10);……}floatfun(inta,intb){……}

B)floatfun(inta,intb){……}main(){……x=fun(i,j);……}

C)floatfun(int,int);main(){……x=fun(2,10);……}floatfun(inta,intb){……}

D)main(){floatfun(inti,intj);……x=fun(i,j);……}floatfun(inta,intb){……}

(3)以下叙述中正确的是

A)用户自己定义的函数只能调用库函数

B)不同函数的形式参数不能使用相同名称的标识符

C)在C语言的函数内部,可以定义局部嵌套函数

D)实用的C语言源程序总是由一个或多个函数组成

(4)若有定义语句:

chars[10]="1234567\0\0";则strlen(s)的值是

A)8

B)7

C)9

D)10

(5)有以下程序

#include

main()

{charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde";

strcat(p,r);strcpy(p+strlen(q),q);

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

}

程序运行后的输出结果是

A)9

B)11

C)6

D)7

(6)若有定义语句:

char*s1="OK",*s2="ok";以下选项中,能够输出"OK"的语句是

A)if(strcmp(s1,s2)!

=0)puts(s1);

B)if(strcmp(s1,s2)!

=0)puts(s2);

C)if(strcmp(s1,s2)==1)puts(s1);

D)if(strcmp(s1,s2)==0)puts(s1);

(7)有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母

#include

#include

voidfun(char*p)

{inti=0;

while(p[i])

{if(p[i]==''&&islower(p[i-1]))p[i-1]=p[i-1]-'a'+'A';

i++;

}

}

main()

{charsl[100]="abcdEFG!

";

fun(s1);printf("%s\n",s1);

}

程序运行后的输出结果是

A)AbCdEFg!

B)abcdEFG!

C)abcdEFg!

D)aBcDEFG!

(8)若有以下定义和语句

chars1[10]="abcd!

",*s2="\n123\\";

printf("%d%d\n",strlen(s1),strlen(s2));

则输出结果是

A)105

B)107

C)55

D)58

(9)有以下程序

#include

intfun(inta,intb)

{if(b==0)returna;

elsereturn(fun(--a,--b));

}

main()

{

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

}

程序的运行结果是

A)1

B)2

C)3

D)4

(10)下列选项中,能够满足“只要字符串s1等于字符串s2,则执行ST”要求的是

A)if(s1==s2)ST;

B)if(strcpy(s1,s2)==1)ST;

C)if(strcmp(s2,s1)==0)ST;

D)if(s1-s2==0)ST;

函数的定义和返回值

(11)以下叙述中正确的是

A)函数名代表该函数的入口地址

B)所有函数均不能接受函数名作为实参传入

C)函数体中的语句不能出现对自己的调用

D)如果函数带有参数,就不能调用自己

(12)以下叙述中正确的是

A)函数既可以直接调用自己,也可以间接调用自己

B)任何情况下都不能用函数名作为实参

C)函数的递归调用不需要额外开销,所以效率很高

D)简单递归不需要明确的结束递归的条件

(13)以下关于return语句的叙述中正确的是

A)一个自定义函数中必须有一条return语句

B)一个自定义函数中可以根据不同情况设置多条return语句

C)定义成void类型的函数中可以有带返回值的return语句

D)没有return语句的自定义函数在执行结束时不能返回到调用处

(14)已定义以下函数intfun(int*p){return*p;}fun函数返回值是

A)不确定的值

B)一个整数

C)形参p中存放的值

D)形参p的地址值

(15)以下叙述中错误的是

A)用户定义的函数中可以没有return语句

B)用户定义的函数中若没有return语句,则应当定义函数为void类型

C)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

D)函数的return语句中可以没有表达式

(16)以下叙述中错误的是

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

B)函数形参的值也可以传回给对应的实参

C)若函数有返回值,必须通过return语句返回

D)C程序必须由一个或一个以上的函数组成

函数的调用及要求

(17)有以下程序

intadd(inta,intb)

{

return(a+b);

}

main()

{intk,(*f)(),a=5,b=10;

f=add;

}

则以下函数调用语句错误的是

A)k=add(a,b);

B)k=(*f)(a,b);

C)k=*f(a,b);

D)k=f(a,b);

(18)以下叙述中正确的是

A)函数调用时,不必区分函数名称的大小写

B)调用函数时,函数名必须与被调用的函数名完全一致

C)函数名允许用数字开头

D)在函数体中只能出现一次return语句

函数的说明

(19)若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是

A)intfun(double,int);

B)intfun(double*x,intn);

C)intfun(double*,int*);

D)intfun(doublex,int*n);

(20)以下选项中叙述错误的是

A)在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内

B)C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值

C)C程序函数中定义的自动变量,系统不自动赋确定的初值

D)C程序函数的形参不可以说明为static型变量

调用函数和被调用函数之间的数据传递

(21)有以下程序

intf(intx);

main(){

intn=1,m;

m=f(f(f(n)));

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

intf(intx)

{returnx*2;}

程序运行后的输出结果是

A)1

B)2

C)4

D)8

(22)有以下程序

#include

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

}

程序运行后的输出结果是

A)3

B)6

C)8

D)12

(23)有以下程序

#include

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

}

程序运行后的输出结果是

A)10

B)8

C)9

D)7

(24)有以下程序

#include

doublef(doublex);

main()

{doublea=0;inti;

for(i=0;i<30;i+=10)a+=f((double)i);

printf("%5.0f\n",a);

}

doublef(doublex)

{returnx*x+1;}

程序运行后的输出结果是

A)401

B)500

C)503

D)1404

(25)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是

A)形参只是形式上的存在,不占用具体存储单元

B)函数的形参和实参分别占用不同的存储单元

C)同名的实参和形参占同一存储单元

D)函数的实参和其对应的形参共占同一存储单元

(26)有以下程序

voidfun(inta,intb,intc)

{

a=b;b=c;c=a;

}

main(){

inta=10,b=20,c=30;

fun(a,b,c);

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

程序运行后的输出结果是

A)10,20,30

B)20,30,10

C)30,20,10

D)0,0,0

(27)有以下程序

#include

intf(intx);

main()

{inta,b=0;

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

{b=b+f(a);putchar('A'+b);

}

}

intf(intx)

{returnx*x+1;}

A)BCD

B)BDI

C)ABE

D)BCF

(28)若有以下程序

voidf(intx)

{

if(x>=10)

{

printf("%d-",x%10);

f(x/10);}

elseprintf("%d",x);}

main(){

intz=123456;

f(z);}

则程序的输出结果是

A)6-5-4-3-2-1

B)6-5-4-3-2-1-

C)1-2-3-4-5-6

D)1-2-3-4-5-6-

(29)有以下程序

#include

intfun(intx){

intp;

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

p=x-fun(x-2);return(p);}

main(){

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

}

程序运行后的输出结果是

A)5

B)9

C)4

D)7

(30)有以下程序

#include

intfun(intn){

inta;

if(n==1)return1;

a=n+fun(n-1);

return(a);}

main(){

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

}

程序的输出结果是

A)14

B)10

C)15

D)9

(31)有以下程序

#include

intfun(inta,intb){

returna+b;}

main(){

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

r=fun(fun(x,y),z--);

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

程序运行后的输出结果是

A)15

B)21

C)20

D)31

(32)以下选项中函数形参不是指针的是

A)fun(int&p){…}

B)fun(inta[10]){…}

C)fun(int*a){…}

D)fun(intp[]){…}

(33)设有如下函数定义

intfun(intk)

{

if(k<1)return0;

elseif(k==1)return1;

elsereturnfun(k-1)+1;

}

若执行调用语句:

n=fun(3);,则函数fun总共被调用的次数是

A)2

B)4

C)3

D)5

对函数的进一步讨论

(34)有以下程序

#include

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

}

程序的运行结果是

A)9

B)0

C)6

D)8

(35)有以下程序(strcat函数用以连接两个字符串)

#include

#include

main()

{chara[20]="ABCD\0EFG\0",b[]="IJK";

strcat(a,b);printf("%s\n",a);

}

程序运行后的输出结果是

A)ABCDE\0FG\0IJK

B)ABCDIJK

C)IJK

D)EFGIJK

(36)有以下程序

intfun(intn)

{if(n==1)return1;

else

return(n+fun(n-1));

}

main()

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

}

执行程序时,给变量x输入10,程序的输出结果是

A)54

B)65

C)45

D)55

(37)有以下程序

fun(intx)

{intp;

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

p=x-fun(x-2);

returnp;

}

main()

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

执行后的输出结果是

A)3

B)7

C)0

D)2

(38)若有以下程序

intf(inta[],intn)

{

if(n>1)

{

intt;t=f(a,n-1);

returnt>a[n-1]?

t:

a[n-1];}

elsereturna[0];}

main()

{

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

printf("%d\n",f(a,9));}

则程序的输出结果是

A)9

B)1

C)8

D)5

局部变量和全局变量

(39)以下叙述中正确的是

A)只有全局变量才有自己的作用域,函数中的局部变量没有作用域

B)只要是用户定义的标识符,都有一个有效的作用域

C)只有在函数内部定义的变量才是局部变量

D)局部变量不能被说明为static

(40)以下叙述中正确的是

A)对于变量而言,“定义”和“说明”这两个词实际上是同一个意思

B)在复合语句中不能定义变量

C)全局变量的存储类别可以是静态类

D)函数的形式参数不属于局部变量

(41)有以下程序

intd=1;

voidfun(intp)

{

intd=5;

d+=p++;

printf("%d",d);}

main(){

inta=3;

fun(a);

d+=a++;

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

程序的输出结果是

A)96

B)94

C)84

D)85

(42)有以下程序

#include

inta=1,b=2;

voidfun1(inta,intb)

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

voidfun2()

{a=3;b=4;}

main()

{fun1(5,6);fun2();

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

}

程序运行后的输出结果是

A)3456

B)1256

C)5612

D)5634

(43)在一个C源程序文件中所定义的全局变量,其作用域为

A)由具体定义位置和extern说明来决定范围

B)所在程序的全部范围

C)所在函数的全部范围

D)所在文件的全部范围

(44)有以下程序

voidfun2(chara,charb)

{printf("%c%c",a,b);}

chara='A',b='B';

voidfun1()

{a='C';b='D';}

main()

{fun1();

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

fun2('E','F');

}

程序的运行结果是

A)ABEF

B)CDEF

C)ABCD

D)CDAB

变量的作用域和生存期

(45)有以下程序

#include

fun(inta,intb){

intstaticm=0,i=2;

i=i+m+1;

m=i+a+b;

returnm;}

main(){

intk=4,m=1,p;

p=fun(k,m);

printf("%d,",p);

p=fun(k,m);

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

程序运行后的输出结果是

A)8,17

B)7,16

C)8,8

D)7,17

(46)有以下程序

#include

func(intn)

{staticintnum=1;

num=num+n;printf("%d",num);

}

voidmain()

{func(3);func(4);printf("\n");}

程序运行后的输出是

A)45

B)35

C)48

D)34

(47)有以下程序

fun(intx,inty)

{staticintm=0,i=2;

i+=m+1;m=i+x+y;returnm;

}

main()

{intj=1,m=1,k;

k=fun(j,m);printf("%d,",k);

k=fun(j,m);printf("%d\n",k);

}

执行后的输出结果是

A)5,5

B)5,11

C)11,11

D)11,5

(48)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是

A)extern和register

B)auto和static

C)static和register

D)auto和register

(49)有以下程序

#include

intfun(){

staticintx=1;

x*=2;

returnx;}

main(){

inti,s=1;

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

s*=fun();

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

程序运行后的输出结果是

A)0

B)10

C)30

D)64

(50)有以下程序

#include

intf(intn);

main(){

inta=3,s;

s=f(a);

s=s+f(a);

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

intf(intn){

staticinta=1;

n+=a++;

returnn;}

程序运行后的输出结果是

A)9

B)8

C)7

D)10

(51)有以下程序

#include

intfun(){

staticintx=1;

x+=1;

returnx;}

main(){

inti,s=1;

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

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

程序运行后的输出结果是

A)11

B)21

C)6

D)120

(52)有以下程序

intfun(intx[],intn)

{staticintsum=0,i;

for(i=0;i

returnsum;

}

main()

{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;

s=fun(a,5)+fun(b,4);printf("%d\n",s);

}

A)50

B)45

C)60

D)55

(53)有以下程序

intf(intm)

{

staticintn=0;

n+=m;returnn;}

main(){

intn=0;

printf("%d,",f(++n));

printf("%d\n",f(n++));}

程序运行后的输出结果是

A)1,1

B)1,2

C)2,3

D)3,3

(54)有以下程序

#include

intfun()

{staticintx=1;

x*=2;returnx;

}

main()

{inti,s=1;

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

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

}

程序运行后的输出结果是

A)4

B)1

C)0

D)8

(55)有下列程序:

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

}

程序运行后的输出结果是

A)28

B)24

C)32

D)36

一维数组的定义和元素的引用

(56

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

当前位置:首页 > 表格模板 > 合同协议

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

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