第6章习题及解答0315Word文件下载.docx

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

第6章习题及解答0315Word文件下载.docx

《第6章习题及解答0315Word文件下载.docx》由会员分享,可在线阅读,更多相关《第6章习题及解答0315Word文件下载.docx(52页珍藏版)》请在冰点文库上搜索。

第6章习题及解答0315Word文件下载.docx

B.双向值传递

C.单向值传递

D.地址传递

10.实参用数组名,则传递给对应形参的是()。

A.数组的地址

B.数组的长度

C.数组中每一个元素的地址

D.数组中每一个元素的值

【答】A

11.下列关于函数调用的描述中,错误的是()。

A.在函数调用中,形参是变量名,实参可以是变量、常量和表达式

B.在函数调用中,形参是指针时,实参必须是地址值

C.在传址调用方式中,可以在被调用函数中改变调用函数的参数值

D.在传值调用方式中,可以在被调用函数中改变调用函数的参数值

12.下列关于函数返回值的论述中,错误的是()。

A.函数返回值能够实现函数间的数据传递

B.函数返回值是由return<

表达式>

实现的

C.函数返回的值和值的类型是由返回语句中表达式的值和类型决定的

D.一个函数可有多条返回语句,但只可有一个返回值

【答】C

13.函数返回值的类型由()。

A.调用该函数的函数类型决定B.return语句中表达式的类型决定

C.主函数决定D.该函数的函数类型决定

14.下列关于函数的论述中正确的是()。

A.不允许函数嵌套定义,但允许函数嵌套调用

B.不允许函数嵌套调用,但允许函数嵌套定义

C.函数的定义和调用都允许嵌套

D.函数的定义和调用都不允许嵌套

15.下列关于函数调用的论述中不正确的是()。

A.函数间允许嵌套调用B.函数间允许间接递归调用

C.函数间允许直接递归调用D.函数间不允许直接递归调用

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

A.所有的形式参数都是局部变量

B.不同函数中允许说明并使用相同名字的变量

C.函数内定义的变量其有效范围不超出该函数

D.函数内的复合语句中说明的变量在该函数范围内有效

17.在本程序中能被所有函数使用的变量,其存储类别是()。

A.auto(自动)B.static(静态)C.register(寄存器)D.exern(外部)

【答】D

18.在函数中未说明存储类别的局部变量,其隐含的存储类别是()。

19.下列关于变量的论述中,不正确的是()。

A.外部变量定义与外部变量声明,两者的含义不同

B.外部变量与静态外部变量的存储类型不同(即它们被分配的存储区不同)

C.在同一函数中,既可使用本函数中的局部变量又可使用与局部变量不同名的全局变量

D.在同一程序中,外部变量与局部变量同名时,则在局部变量作用范围内外部变量不起作用

【答】B

20.运行以下程序,其输出结果是()。

voidswap28(intn0,intn1)

{

inttemp;

temp=n0;

n0=n1;

n1=temp;

}

voidswapl4(intn[])

{

inttemp;

temp=n[0];

n[0]=n[1];

n[1]=temp;

}

voidmain()

inta[2]={2,8},b[2]={1,4};

swap28(a[0],a[1]);

swapl4(b);

printf(“%d%d%d%d\n”,a[0],a[1],b[0],b[1]);

A.2814B.2841C.8241D.8214

【答】B

二、填空题

1.若自定义函数要求返回一个值,则在该函数体中应有一条【1】语句;

若自定义函数要求不返回值,则在该函数说明时加一类型说明符【2】。

【答案】

【1】带有表达式的return

【2】void

2.函数调用时的实参与对应的形参都是数组时,参数传递方式为【1】;

都是普通变量时,参数传递方式为【2】。

【1】传地址

【2】传值

3.静态局部变量的作用域是【1】。

【1】定义它的函数或复合语句的内部

4.函数形参的作用域是【1】。

全局的外部变量与函数体内定义的局部变量同名时,在函数体内,【2】变量起作用。

【1】整个函数体内

【2】局部

5.下列函数sub()的功能是求两个参数的差,并将差值返回调用函数。

该函数中错误的部分是【1】,改正后应为【2】。

voidsub(doublex,doubley)

doublez;

z=x–y;

returnz;

【1】voidsub(doublex,doubley)

【2】doublesub(doublex,doubley)

6.为了使下面程序能够正确运行,程序的第2行应填写的内容是【1】,当输入的数值为66和99时,该程序输出的结果是【2】。

#include<

stdio.h>

【1】

main()

doublex1,x2;

scan(“%lf,%lf”,&

x1,&

x2);

printf(“%lf\n”,max(x2,x1));

getch();

doublemax(doubley1,doubley2)

return(y1>

y2?

y1–y2:

y2-y1);

【1】doublemax(double,double);

【2】33.000000

7.下面程序,在函数sum()中求(m+n)/3+(m-n)/3的值,在主函数中为m、n

输入10、7,并输出计算结果,请填空。

intm,n;

printf(“Pleaseinputm,n:

”);

scanf(“%d,%d”,【2】);

printf(”Thesum=%d\n”,sum(m,n));

intsum(inti,intj)

intk;

k=【3】;

returnk;

【1】intsum();

【2】&

m,&

n

【3】

(i+j)/3+(i-j)/3

8.下面程序功能是求两个浮点数的和,程序内容如下,请填空。

doubleadd(doublex,doubley,doublep)

p=x+y;

doublea=55.44,b=44.55;

doublek;

add(a,b,【2】);

printf(“%.2lf\n”,k);

【1】return(p);

【2】k

注:

输出的k值是不确定的!

9.下面程序的运行结果是【1】。

voidfunc(intbr[])

{inti=1;

while(br[i]<

=10)

{

printf("

%5d"

br[i]);

i++;

intar[]={2,4,8,10,8,4,11,9,7};

func(ar+1);

\n"

);

getch();

【1】81084

10.函数acopyb将整型数组aarra的内容逆序复制到整型数组barra中(-32768作为数组

元素值的结束标志),请填空。

voidacopyb(intaa,intba)

inti=0,j=0;

while(aa[j]!

=-32768)j++;

ba[j]=aa[j];

j--;

while(aa[i]!

=-32768)

【2】

staticintaarra[]={1,3,5,7,9,2,4,6,8,10,-32768};

intbarra[20];

inti=0;

acopyb(【1】);

while(barra[i]!

=-32768)

%3d"

【3】);

printf("

【1】aarra,barra

【2】ba[j]=aa[i];

【3】barra[i++]

11.在【1】处填写适当内容,使下面程序的输出结果为264。

intfunc(intm,intn)

return(m*n);

inta=3,b=11,c=8,d;

d=func(func(【1】),c);

%d\n"

d);

【1】a,b或者b,a

12.下面程序的输出结果为【1】。

#include<

#defineN10

voidoutput(int*p,intn)

inti;

for(i=0;

i<

n;

i++)

*p++);

intx[N],i,*q;

N;

i++)x[i]=2*i;

q=x;

output(q,N);

for(i=0;

i++)printf("

x[i]);

【1】024681012141618

024681012141618

13.函数small()从5x5矩阵(即从5行、5列二维数组)中,找出主对角线上元素的最小值。

在主函数中为数组输入数据。

请填写适当内容。

intsmall(inta[5][5])

inti,vm;

vm=a[0][0];

for(i=1;

i<

5;

i++)

if(vm>

a[i][i])

vm=【1】

return(vm);

inti,j,vmin;

intarray[5][5];

for(i=0;

i++)

for(j=0;

j<

j++)

scanf(”%d”,【2】);

vmin=small(array);

printf(”vmin=%d\n”,vmin);

【1】a[i][i];

array[i][j]

14.函数max_value()求3x4矩阵所有元素中的最大值。

请在下面程序中【1】、【2】处填写适当内容。

voidmain()

intmax_value(intarray[][4]);

inta[3][4]=({1,3,5,7},{2,4,6,8},{15,17,34,12});

printf(”maxvalueis%d\n”,【1】);

intmax_value(intarray[][4])

inti,j,max;

max=array[0][0];

for(i=0;

3;

4;

if(array[i][j]>

max)

【2】=array[i][j];

return(max);

【1】max_value(a)

【2】max

15.下面程序的功能是调用选择排序法函数select(),对数组中的整数按从小到大的顺序排列,请填写适当内容。

voidmain()

voidselect(inta[],intn);

intb[10],i;

Input10numbers:

"

10;

scanf("

%d"

【1】);

select(【2】,10);

b[i]);

}

voidselect(inta[],intn)

inti,j,k,temp;

n-1;

k=i;

for(j=i+1;

n;

if(a[j]<

a[k]).

k=j;

if(k【3】i)

temp=a[k];

a[k]=【4】;

a[i]=temp;

【1】&

b[i]

【2】b

【3】!

=

【4】a[i]

16.下面程序的运行结果是【1】,函数sort()采用的算法是【2】。

#defineM5

#defineN6

voidsort(inta[],intn)

{inti,j,temp;

n-1;

for(j=i+1;

j<

if(a[i]<

a[j])

temp=a[i];

a[i]=a[j];

a[j]=temp;

a[i]);

inti;

intx[]={7,3,9,5,1};

inty[]={46,55,91,64,82,73};

sort(x,M);

sort(y,N);

M;

y[i]);

【1】97531

918273645546

97531

【2】函数sort()采用的是冒泡排序法。

17.下面程序的功能是利用函数的递归调用求1!

+2!

+3!

+……+9!

,请填写适当内容。

longintfracsum(intn)

if(n==1)

return

(1);

else

return(n*【1】);

inti=1;

longintsum;

sum=【2】

while(i<

=9)

sum+=【3】;

i++;

%ld\n"

sum);

【1】fracsum(n-1)

【2】0

【3】fracsum(i)

18.下面程序的功能是【1】,程序运行结果是【2】。

{intfib(intn);

10;

{if(i%5==0)printf("

);

%10d"

fib(i));

intfib(intn)

{if(n==0||n==1)returnn;

else

returnfib(n-2)+fib(n-1);

【1】计算斐波那契(Fibonacci)数列前10项的值。

【2】01123

58132134

19.运行下面程序,函数func()中输出的结果是【1】,主函数中输出的结果是【2】。

intn=10;

intfunc(intp)

n+=p;

p+=n;

%d,%d\n"

p,n);

return(n);

intm=6,pand=8;

pand=func(m);

\n%d,%d,%d\n"

m,pand,n);

【1】2216

【2】61616

20.运行下面程序,输出的结果是【1】。

intm,n;

intfun()

m=88;

n=99;

return(n);

intm=55,n=66;

\n%d,%d,%d,%d\n"

m,fun(),m,n);

【1】55,99,55,66

21.运行下面程序,输出的结果是【1】。

intm=9;

intfunc(inta,intb)

intm=1;

\n%d\n"

++m);

return(a*b-m);

intx=2,y=35;

func(x,y)/m);

【1】2和7

22.运行下面程序,函数fun()中输出的结果是【1】,主函数中输出的结果是【2】。

voidfun(ints[])

{staticinti=0;

intj;

do

s[i]+=s[i+1];

}while(++i<

3);

for(j=0;

5;

j++)printf("

s[j]);

inti,a[10]={0,1,2,3,4};

for(i=1;

3;

i++)fun(a);

i++)printf("

【1】13534

13574

【2】13574

23.运行下面程序,输出的结果是【1】。

intn=98;

intfun()

staticintn=1;

n+=2;

return(n);

\n%d,%d\n"

++n,fun());

n++,fun());

【1】101,3

101,5

三、程序设计题

1.输入任意3个整数,利用函数的嵌套调用,求出3个数中的最小值。

参考程序代码如下:

intmintwo(int,int);

/*函数声明*/

intminthree(int,int,int);

/*函数声明*/

intx,y,z,min;

\nPleaseinputthreeinteger:

%d,%d,%d"

&

x,&

y,&

z);

min=minthree(x,y,z);

\nMinis%d"

min);

intmintwo(inta,intb)

return(a<

b?

a:

b);

/*使用条件表达式,并将计算结果返回*/

intminthree(inta,intb,intc)

intz;

z=mintwo(a,b);

/*嵌套调用函数mintwo()*/

z=mintwo(z,c);

return(z);

2.由键盘输入两个整数,编写两个函数,分别求这两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。

longintgcd(longint,longint);

/*函数声明*/

lo

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

当前位置:首页 > 初中教育 > 语文

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

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