函数练习题及答案.docx

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

函数练习题及答案.docx

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

函数练习题及答案.docx

函数练习题及答案

单项选择

==================================================

题号:

2914

函数定义时的参数为形参,调用函数时所用的参数为实参,则下列描述正确的是().

A、实参与形参是双向传递

B、形参和实参可以同名

C、实参类型一定要在调用时指定

D、形参可以是表达式

答案:

B

 

题号:

4060

以下程序的输出结果是

main()

{intk=4,m=1,p;

p=func(k,m);

printf("%d,",p);

p=func(k,m);

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

}

func(inta,intb)

{staticintm,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

A、8,20

B、8,16

C、8,17

D、8,8

答案:

C

 

题号:

2491

请阅读以下程序:

#include

#include

voidfun(intb[])

{staticinti=0;

do

{b[i]+=b[i+1];

}while(++i<2);}

main()

{intk,a[5]={1,3,5,4,9};

fun(a);

for(k=0;k<5;k++)printf("%d",a[k]);}

上面程序的输出是().

A、48579

B、48549

C、48999

D、13579

答案:

B

 

题号:

2643

有以下程序:

#include

voidfun(inta[],intn)

{inti,t;

for(i=0;i

}

main()

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

fun(k,5);

for(i=2;i<8;i++)printf("%d",k[i]);

printf("\n");

}

程序的运行结果是().

A、876543

B、321678

C、1098765

D、345678

答案:

B

 

程序设计

==================================================

题号:

5340

/*------------------------------------------------

【程序设计】

--------------------------------------------------

题目:

给定n个数据,求最小值出现的位置

(如果最小值出现多次,求出第一次出

现的位置即可)。

--------------------------------------------------

注意:

部分源程序给出如下。

请勿改动主函数

main和其它函数中的任何内容,仅在函数

station的花括号中填入所编写的若干语句。

*********Begin**********和**********End**********不可删除

------------------------------------------------*/

#include"stdio.h"

intstation(ints[],intn)

{

/*********Begin**********/

 

/**********End**********/

}

main()

{

inta[100],n,i,t;

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

t=station(a,n);

printf("themin_valuepositionis:

%d\n",t);

TestFunc();

}

TestFunc()

{

FILE*IN,*OUT;

intn;

inti[10];

into;

IN=fopen("in.dat","r");

if(IN==NULL)

{printf("ReadFileError");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{printf("WriteFileError");

}

for(n=0;n<10;n++)

{

fscanf(IN,"%d",&i[n]);

}

o=station(i,10);

fprintf(OUT,"%d\n",o);

fclose(IN);

fclose(OUT);

}

 

示例代码:

inti,k;

k=0;

for(i=1;i

if(s[i]

return(k);

 

题号:

5371

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:

求小于形参n同时能被3与7整除的所有自然数之和的平方根,

并作为函数值返回。

例如若n为1000时,程序输出应为:

s=153.909064。

*********Begin**********和**********End**********不可删除

------------------------------------------------*/

voidTestFunc();

#include

#include

doublefun(intn)

{

/*********Begin**********/

 

/**********End**********/

}

main()

{printf("s=%lf\n",fun(1000));

TestFunc();

}

voidTestFunc()

{

FILE*IN,*OUT;

inti;

doubles;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("ReadFILEError");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("WriteFILEError");

}

fscanf(IN,"%d",&i);

s=fun(i);

fprintf(OUT,"%lf",s);

fclose(IN);

fclose(OUT);

}

 

示例代码:

inti;

doubles=0;

for(i=1;i

if(i%3==0&&i%7==0)

s+=i;

returnsqrt(s);

 

程序填空

==================================================

题号:

599

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

功能:

计算并输出500以内最大的10个能被13或17整除的自然数之和。

-------------------------------------------------------*/

#include"stdio.h"

/***********FILL***********/

intfun(_____)

{

intm=0,mc=0,j,n;

/***********FILL***********/

while(k>=2&&_____)

{

/***********FILL***********/

if(k%13==0||_____)

{

m=m+k;

mc++;

}

k--;

}

/***********FILL***********/

_____;

}

main()

{

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

}

 

答案:

位置1:

intk

位置2:

mc<10【或】10>mc【或】mc<=9【或】9>=mc

位置3:

k%17==0【或】!

(k%17)【或】k/17*17==k

位置4:

returnm【或】return(m)

 

题号:

546

/*给定程序中,函数fun的功能是:

将N×N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。

例如,N=3,有下列矩阵

123

456

789

计算结果为

312

645

978

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

不得增行或删行,也不得更改程序的结构!

*/

#include

#defineN4

voidfun(int(*t)[N])

{inti,j,x;

/**********FILL**********/

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

{

/**********FILL**********/

x=t[i][___2___];

for(j=N-1;j>=1;j--)

t[i][j]=t[i][j-1];

/**********FILL**********/

t[i][___3___]=x;

}

}

main()

{intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;

printf("Theoriginalarray:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

fun(t);

printf("\nTheresultis:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

}

答案:

位置1:

N

位置2:

N-1

位置3:

0

 

题号:

543

/*给定程序中,函数fun的功能是:

将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。

例如,输入一个整数:

27638496,函数返回值为:

64862。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

不得增行或删行,也不得更改程序的结构!

*/

#include

unsignedlongfun(unsignedlongn)

{unsignedlongx=0;intt;

while(n)

{t=n%10;

/**********FILL**********/

if(t%2==__1__)

/**********FILL**********/

x=__2__+t;

/**********FILL**********/

n=__3__;

}

returnx;

}

main()

{unsignedlongn=-1;

while(n>99999999||n<0)

{printf("Pleaseinput(0

");scanf("%ld",&n);}

printf("\nTheresultis:

%ld\n",fun(n));

}

 

答案:

位置1:

0

位置2:

10*x

位置3:

n/10

 

程序改错

==================================================

题号:

708

/*给定程序中函数fun的功能是:

求三个数的最小公倍数。

例如,给主函数中的变量x1、x2、x3分别输入15112,则输出结果应当是:

330。

请改正程序中的错误,使它能得出正确结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

*/

#include

/**********ERROR**********/

fun(intx,y,z)

{intj,t,n,m;

j=1;

t=j%x;

m=j%y;

n=j%z;

while(t!

=0||m!

=0||n!

=0)

{j=j+1;

t=j%x;

m=j%y;

n=j%z;

}

/**********ERROR**********/

returni;

}

main()

{intx1,x2,x3,j;

printf("Inputx1x2x3:

");scanf("%d%d%d",&x1,&x2,&x3);

printf("x1=%d,x2=%d,x3=%d\n",x1,x2,x3);

j=fun(x1,x2,x3);

printf("Theminimalcommonmultipleis:

%d\n",j);

}

答案:

位置1:

intfun(intx,inty,intz)

位置2:

returnj;

 

题号:

693

/*给定程序中函数fun的功能是:

用选择法对数组中的n个元素按从小到大的顺序进行排序。

请修改程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行和删行,也不得更改程序的结构!

*/

#include

#defineN20

voidfun(inta[],intn)

{inti,j,t,p;

for(j=0;j

/**********ERROR**********/

p=j

for(i=j;i

if(a[i]

/**********ERROR**********/

p=j;

t=a[p];a[p]=a[j];a[j]=t;

}

}

main()

{

inta[N]={9,6,8,3,-1},i,m=5;

printf("排序前的数据:

");

for(i=0;i

fun(a,m);

printf("排序后的数据:

");

for(i=0;i

}

答案:

位置1:

p=j;

位置2:

p=i;

 

题号:

692

/*给定程序中函数fun的功能是:

计算n!

例如,给n输入5,则输出120.000000。

请改正程序中的错误,使程序能输出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

*/

#include

doublefun(intn)

{doubleresult=1.0;

/**********ERROR**********/

ifn==0

return1.0;

while(n>1&&n<170)

/**********ERROR**********/

result*=n--

returnresult;

}

main()

{intn;

printf("InputN:

");

scanf("%d",&n);

printf("\n\n%d!

=%lf\n\n",n,fun(n));

}

答案:

位置1:

if(n==0)

位置2:

result*=n--;

 

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

当前位置:首页 > 工程科技

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

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