C语言练习4函数参考答案.docx

上传人:b****8 文档编号:10364654 上传时间:2023-02-10 格式:DOCX 页数:17 大小:23.90KB
下载 相关 举报
C语言练习4函数参考答案.docx_第1页
第1页 / 共17页
C语言练习4函数参考答案.docx_第2页
第2页 / 共17页
C语言练习4函数参考答案.docx_第3页
第3页 / 共17页
C语言练习4函数参考答案.docx_第4页
第4页 / 共17页
C语言练习4函数参考答案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言练习4函数参考答案.docx

《C语言练习4函数参考答案.docx》由会员分享,可在线阅读,更多相关《C语言练习4函数参考答案.docx(17页珍藏版)》请在冰豆网上搜索。

C语言练习4函数参考答案.docx

C语言练习4函数参考答案

C语言(函数,变量作用范围)

一、选择题

1下列定义不正确的有(C)。

A)#definePI3.141592B)#defineS345

C)intmax(x,y);D)charc;

intx,y;

{}

2下列程序结构中,不正确的是(B)。

A)main()B)main()

{floata,b,c;{floata,b,c;

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

c=add(a,b);c=add(a,b);

...........

}}

intadd(floatx,floaty)floatadd(floatx,floaty)

{...}{...}

C)floatadd(floatx,floaty);D)floatadd(floatx,floaty)

main(){...}

{floata,b,c;main()

scanf("%f,%f",&a,&b);{floata,b,c;

c=add(a,b);scanf("%f,%f",&a,&b);

......c=add(a,b);

}.....

floatadd(floatx,floaty)}

{...}

3一个C语言的程序总是从(A)开始执行的.

A)main函数

B)文件中的第一个函数

C)文件中的第一个子函数调用

D)文件中的第一条语句

4以下正确的函数定义是(D).

A)doublefun(intx,inty)

{z=x+y;returnz;}

B)doublefun(intx,inty);

{intz;

z=x+y;returnz;}

C)fun(intx,y)

{intz;returnz;}

D)doublefun(intx,inty)

{doublez;

z=x+y;returnz;}

5以下正确的函数声明形式是(D).

A)doublefun(intx,inty)

B)doublefun(intx;inty)

C)doublefun(int,int)

D)doublefun(int,int);

6以下说法中正确的是(A)

在C语言中

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

B)实参与其对应的形参占用同一个存储单元

C)只有当实参与形参同名时才占用同一个存储单元

D)实参占用存储单元,但形参是虚拟的,不占用存储单元

7设有如下函数定义:

intf(char*s)

{char*p=s;

while(*p!

='\0')p++;

return(p-s);

}

如果在主程序中用下面的语句调用上述函数,则输出结果为(A).

printf("%d\n",f("goodbye!

"));

的输出结果是

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

8下面程序段中,主函数中变量a被初始化为(C)。

intf()

{

return3.5;

}

main()

{

inta=f();

}

A)3.5B)无确定值

C)3D)程序出错

9下面叙述不正确的是(D).

A)在函数中,通常用return语句传回函数值;

B)在函数中,可以有多条return语句;

C)在C中,主函数main后的一对圆括号中也可以带有形参;

D)在C中,调用函数必须在一条独立的语句中完成;

10-C语言函数返回值的类型是由(C)决定的。

A)调用该函数的主调函数类型B)定义函数时所指定的函数类型

C)return语句中的表达式类型D)以上都错

11-以下说法中正确的是(A).

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

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

C)实参可以为任意类型

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

12-C语言中规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B).

A)地址传递

B)单向值传递

C)由实参传给形参,再由形参传给实参

D)由用户指定传递方式

13-以下程序的输出结果是(A)。

intpower(intx,inty);

main()

{floata=2.6,b=3.4;

intp;

p=power((int)a,(int)b);

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

}

intpower(intx,inty)

{inti,p=1;

for(i=y;i>0;i--)

p=p*x;

returnp;

}

A)8B)9C)27D)81

14-以下不正确的描述为(B).

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

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

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

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

15-下列语句中,不正确的是(C)。

A)chara[]={"China"};B)chara[]="China";

C)printf("%s",a[0]);D)scanf("%s",a);

16-若有以下函数调用语句fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实际参数的个数是(A).

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

17-下面程序

#include

main()

{

char*a="1234";

fun(a);

printf("\n");

}

fun(char*s)

{chart;

if(*s){t=*s++;fun(s);}

if(t!

='\0')putchar(t);

}

输出为(B).

A)1234B)4321C)1324D)4231

18-C规定,简单变量做实参时,它与对应形参之间的数据传递方式是(B).

A)地址传递

B)单向值传递

C)有实参传递到形参,再由形参传回给实参。

19-执行完下列语句段后,i值为(C).

inti;

intf(intx)

{intk=x+1;

intt;

t=k;k=x;x=t;

returnx;

}

i=f(f

(1));

A)1B)2C)3D)以上都错

20-下列程序段的运行结果为(B).

floatf(intx)

{

x=x+3.6;

returnx;

}

main()

{

printf("%.1f",f

(2));

}

A)6.0B)5.0C)5.6D)以上都不对

21-执行下列程序后,变量a的值应为(A).

intf(intx,inty)

{returnx*y;}

main()

{inta=2;

a=f(f(a,a*a),f(a+a,a/3));

}

A)0B)2C)8D)16

22-若有以下函数定义,则在主函数中正确的调用语句是(B).

viodfun(intarray[3][5])

{………..}

main()

{inta[3][5],b;

……..}

A)fun(a[3][5]);

B)b=fun(a);

C)fun(a);

D)fun(&a);

23-若有以下变量说明和函数定义:

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

charch='x';

floatx,y,z;

sub(intx,inty,charch,float*z)

{switch(ch)

{case'+':

*z=x+y;break;

case'-':

*z=x-y;break;

case'*':

*z=x*y;break;

case'/':

*z=x/y;break;

}

}

则以下合法的函数调用语句是(B).

A)sub(10,20,ch,y);

B)sub(1,2+3,'+',&z);

C)sub(sub(1,2,'+',&y),sub(3,4,'+',&x),'-',&y);

D)sub(a,b,&x,ch);

24-下面程序

#include

f(intx)

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

elsereturn(x–f(x–2)); 

}

main()

{

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

}

输出结果是(A).

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

25-以下说法中正确的是(B).

A)一个函数在它的函数体内调用它自身称为嵌套调用。

B)一个函数在它的函数体内调用它自身称为递归调用。

这种函数称为递归函数。

C)一个函数在它的函数体内调用其它函数称为递归调用。

这种函数称为递归函数。

D)一个函数在它的函数体内不能调用自身

26-以下叙述中不正确的是(D).

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

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

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

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

27-C函数返回值的类型由(D)决定.

A)调用函数时临时

B)return语句中的表达式类型

C)调用该函数的主调函数类型

D)定义函数时指定的函数返回值类型

28-执行下列语句后,程序的运行结果为(A).

inta=10;

f()

{inta;

a=12;

}

main()

{f();

printf("%d",a);

}

A)10B)12C)0D)不确定

29-以下说法中不正确的是(D).

A)主函数中定义的变量只在主函数内部有效

B)形式参数是局部变量

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

D)当全局变量与局部变量同名时,局部变量不起作用

30-当全局变量与函数内部的局部变量同名时,则在函数内部(A).

A)全局变量有效

B)局部变量有效

C)全局变量与局部变量都有效

D)全局变量与局部变量都无效

31-设下面程序段中调用fun函数传送实参a和b:

main()

{chara[10],b[10];

……

fun(a,b);

……

}

则在fun函数头部中,对形参正确的定义是:

(BCD)

A)fun(chara,b)

B)fun(chara1[],chara2[])

C)fun(charp[10],charq[10])

D)fun(char*s1,char*s2)

二、判断题

1形参可以是常量、变量或表达式。

2如函数值的类型与返回值类型不一致,以函数值类型为准。

3下面两种写法等价。

(1)intfun(intx,inty)

(2)intfun(x,y)

intx,y;

4在C语言中,最好使用全局变量.错

5以下说法是否正确:

若调用C标准库函数,调用前必须重新定义。

6形式参数和实际参数的个数可以不同。

7数组名做函数的参数时,实参数组和形参数组大小一定要一致。

8用数组名做函数参数,形参数组可以不指定大小。

9C语言中函数的返回值类型是由return语句中的表达式类型决定的。

10数组名作为函数参数,应该在主调函数与被调函数中分别定义数组,不能只在一方定义。

11以数组名作为参数时,数据传送方向是“双向的”。

即形参值可以传回给实参。

12所有的函数都是平行的,一个函数并不从属于另一个函数。

13只有主函数才可以调用其它函数。

14在C语言中,函数可以递归调用或递归定义。

15在同一文件中,外部变量与局部变量同名。

在局部变量的作用范围内,外部变量的值等于局部变量的值。

16main函数中定义变量是全局变量。

17当全局变量与函数内部的局部变量同名时,则在函数内部全局变量有效。

三、填空题

[1]以下程序的输出结果是_____12___.

unsignedfun6(unsignednum)

{unsignedk=1;

do

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

while(num);

returnk;

}

main()

{unsignedn=26;

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

}

[2]以下程序的输出结果是___9.000000_____.

doublesub(doublex,doubley,doublez)

{y-=1.0;

z=z+x;

returnz;

}

main()

{doublea=2.5,b=9.0;

printf("%f\n",sub(b-a,a,a));

}

[3]以下程序的输出结果是____4____.

fun1(inta,intb)

{intc;

a+=a;b+=b;

c=fun2(a,b);

returnc*c;

}

fun2(inta,intb)

{intc;

c=a*b%3;

returnc;

}

main()

{intx=11,y=19;

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

}

[4]下面pi函数的功能是,根据以下公式返回满足精度要求的的值.请填空.

doublepi(doubleeps)

{doubles=0.0,t=1.0;

intn;

for(__n=1___;t>eps;n++)

{s+=t;

t=n*t/(2*n+1);

}

return(2.0*__s___);

}

[5]以下函数用以求x的y次方.请填空.

doublefun(doublex,inty)

{inti;doublez=1;

for(i=1;i__i<=y___;i++)

z=__z*x___;

returnz;

}

[6]以下程序的功能是计算

.请填空.

longf(intn)

{inti;longs;

s=__1___;

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

returns;

}

main()

{longs;intk,n;

scanf("%d",&n);

s=__-1___;

for(k=0;k<=n;k++)s=s+__f(k)___;

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

}

四、编程题

[1]编写函数intmymod(inta,intb)用以求a被b除之后的余数.

intmymod(inta,intb)

{

returna%b;

}

[2]编写函数,根据整型形参m的值,计算如下公式的值.

t=1-1/2*2-1/3*3-...-1/m*m

例如,若m=5,则应输出0.536389.

#include

floatfun(intm)

{

floatt=1;

inti;

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

{

t=t-1.0/(i*i);

}

returnt;

}

voidmain()

{

printf("%f",fun(5));

}

[3]编写函数用以求表达式x*x-5*x+4,x作为参数传送给函数,调用此函数求:

y1=2*2-5*2+4

y2=(x+15)*(x+15)-5*(x+15)+4

y3=sinx*sinx-5*sinx+4

#include

#include

floaty(floatx)

{

returnx*x-5*x+4;

}

voidmain()

{

floaty1,y2,y3;

intx=2;

y1=y(x);

y2=y(x+15);

y3=y(sin(x));

printf("y1=%f,y2=%f,y3=%f\n",y1,y2,y3);

}

[4]编写一个函数,把一个字符串中的大写字母改为小写字母,其余不变。

并从键盘输入一个字符串,然后使用该函数将大写字母变为小写字母后输出。

#include

#include

#defineN80

voidchangestr(charstr[])

{

inti=0;

while(str[i]!

='\0')

{

if(str[i]>='A'&&str[i]<='Z')

{

str[i]=str[i]+('a'-'A');

}

i++;

}

}

voidmain()

{

charst[N];

printf("Inputastring:

");

scanf("%s",st);

changestr(st);

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

}

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

当前位置:首页 > 解决方案 > 学习计划

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

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