C语言题库第4章 函数.docx

上传人:b****0 文档编号:9478332 上传时间:2023-05-19 格式:DOCX 页数:19 大小:136.32KB
下载 相关 举报
C语言题库第4章 函数.docx_第1页
第1页 / 共19页
C语言题库第4章 函数.docx_第2页
第2页 / 共19页
C语言题库第4章 函数.docx_第3页
第3页 / 共19页
C语言题库第4章 函数.docx_第4页
第4页 / 共19页
C语言题库第4章 函数.docx_第5页
第5页 / 共19页
C语言题库第4章 函数.docx_第6页
第6页 / 共19页
C语言题库第4章 函数.docx_第7页
第7页 / 共19页
C语言题库第4章 函数.docx_第8页
第8页 / 共19页
C语言题库第4章 函数.docx_第9页
第9页 / 共19页
C语言题库第4章 函数.docx_第10页
第10页 / 共19页
C语言题库第4章 函数.docx_第11页
第11页 / 共19页
C语言题库第4章 函数.docx_第12页
第12页 / 共19页
C语言题库第4章 函数.docx_第13页
第13页 / 共19页
C语言题库第4章 函数.docx_第14页
第14页 / 共19页
C语言题库第4章 函数.docx_第15页
第15页 / 共19页
C语言题库第4章 函数.docx_第16页
第16页 / 共19页
C语言题库第4章 函数.docx_第17页
第17页 / 共19页
C语言题库第4章 函数.docx_第18页
第18页 / 共19页
C语言题库第4章 函数.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言题库第4章 函数.docx

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

C语言题库第4章 函数.docx

C语言题库第4章函数

第四章函数

一、单项选择

1.有以下程序,程序运行的输出结果(A)

#include

intf(intx);

intmain()

{intn=1,m;

m=f(f(f(n)));printf(“%d\n”,m);

return0;

}

intf(intx)

{returnx*2;}

A.8B.4C.1D.2

2.有以下程序,程序执行后变量w中的值是(C)

#include

intfunl(doublea){returna*=a;}

intfun2(doublex,doubley)

{doublea=0,b=0;

a=funl(x);b=funl(y);return(int)(a+b);

}

intmain()

{doublew;w=fun2(1.1,2.0);……}

3.有以下程序,程序运行后的输出结果是(B)

#include

voidfun(intp)

{intd=2;p=d++;printf(“%d”,p);}

intmain()

{inta=1;

fun(a);printf(“%d\n”,a);

return0;

}

4.有以下程序,程序运行后的输出结果是(B)

#include

intfun()

{staticintx=1;

x*=2;

returnx;

}

intmain()

{inti,s=1;

for(i=1;i<=3;i++)s*=fun();

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

}

5.有以下程序,程序运行后的输出结果是(B)

#include

intfun(intx,inty)

{if(x!

=y)return((x+y)/2);

elsereturn(x);

}

intmain()

{inta=4,b=5,c=6;

printf("%d\n",fun(2*a,fun(b,c)));

return0;

}

6.有以下程序,程序运行后的输出结果是(D)

#include

intf(intx,inty)

{return((y-x)*x);}

intmain()

{inta=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

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

}

7.有以下程序:

程序运行后的输出结果是(A)

#include

intf()

{staticintx=1;

x+=1;returnx;

}

intmain()

{inti,s=1;

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

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

return0;

}

8.设函数中有整形变量n,为保证其在未赋初值的情况下初值为0,应该选择的存储类别是(D)

9.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则(C)

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

11.下列叙述中正确的是(A)

12.以下叙述正确的是(A )

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

14.以下程序的主函数中调用了在其前面定义的fun函数,则以下选项中错误的fun函数首部是(B)

#include

intmain()

{

doublea[15],k;

k=fun(a);

return0;}

15.若有代数式

(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是( A )

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

17.设有如下函数定义,若执行调用语句:

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

intfun(intk)

{if(k<1)return0;

elseif(k==1)return1;

elsereturnfun(k-1)+1;

}

18.以下正确的函数定义形式是:

(A)

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

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

二、程序设计

/*请编写函数fun,其功能是:

将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。

例如,输入17,则应输出46891012141516。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

*/

#include

#include

#include

intfun(intm,intxx[])

{

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

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

}

intmain()

{

FILE*wf,*in;

intm,n,k,zz[100];

printf("\nPleaseenteranintegernumberbetween10and100:

");

scanf("%d",&n);

m=fun(n,zz);

printf("\n\nThereare%dnon-primenumberslessthan%d:

",m,n);

for(n=0;n

printf("%4d\n",zz[n]);

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

wf=fopen("out01.dat","w");

fscanf(in,"%d",&k);

m=fun(k,zz);

for(n=0;n

fprintf(wf,"%d\n",zz[n]);

fclose(in);

fclose(wf);

return0;

}

【参考代码】

inti,k,j=0;

for(i=2;i

for(k=2;k

if(i%k==0)break;

if(k

}

returnj;

三、程序改错

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

将十进制正整数m转换成

进制数,并按位输出。

例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。

请改正函数fun中的错误,使它能得出正确的结果。

注意:

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

试题程序:

*/

#include

#include

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

voidfun(intm,intk);

{intaa[20],i;

for(i=0;m;i++)

{

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

aa[i]=m/k;

m/=k;

}

for(;i;i--)

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

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

}

intmain()

{

intb,n;

printf("\nPleaseenteranumberandabase:

\n");

scanf("%d%d",&n,&b);

fun(n,b);

printf("\n");

return0;

}

【改错1】voidfun(intm,intk)

【改错2】aa[i]=m%k;

【改错3】printf("%d",aa[i-1]);

2.如当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。

符合此条件的累加值应为42,126,366,570,1010。

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

注意:

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

试题程序:

*/

#include

#defineN20

intfun(intn,inta[])

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

{inti,j,k,sum;

sum=0;

for(k=3,i=0;i

{sum=sum+k;

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

if(sum%4=2)

a[j++]=sum;

}

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

returnj-1;

}

intmain()

{

inta[N],d,n,i;

printf("\nEntern(4<=n<=50):

");

scanf("%d",&n);

d=fun(n,a);

printf("\n\nTheresult:

\n");

for(i=0;i

printf("\n\n");

return0;

}

【改错1】inti,j=0,k,sum;

【改错2】if(sum%4==2)

【改错3】returnj++;

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

用递归算法计算斐波拉契级数列中第n项的值。

从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入7,该项的斐波拉契级数值为13。

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

注意:

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

试题程序:

*/

#include

longfun(intg)

{

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

switch(g);

{case0:

return0;

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

case1;case2:

return1;

}

return(fun(g-1)+fun(g-2));

}

intmain()

{

longfib;intn;

printf("Inputn:

");

scanf("%d",&n);

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

fib=fun(n);

printf("fib=%d\n\n",fib);

return0;

}

【改错1】switch(g)

【改错2】case1:

case2:

return1;

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

按如下递归公式求函数值。

例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。

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

注意:

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

试题程序:

*/

#include

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

intfun(n)

{

intc;

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

if(n=1)

c=10;

else

c=fun(n-1)+2;

return(c);

}

intmain()

{

intn;

printf("Entern:

");

scanf("%d",&n);

printf("Theresult:

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

return0;

}

【改错1】intfun(intn)

【改错2】if(n==1)

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

计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。

其中x和y不相等,z和y不等。

例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。

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

注意:

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

试题程序:

*/

#include

#include

#include

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

#defineFU(m,n)(m/n)

floatfun(floata,floatb,floatc)

{floatvalue;

value=FU(a+b,a-b)+FU(c+b,c-b);

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

return(Value);

}

intmain()

{floatx,y,z,sum;

printf("Inputxyz:

:

");

scanf("%f%f%f",&x,&y,&z);

printf("x=%f,y=%f,z=%f\n",x,y,z);

if(x==y||y==z)

{printf("Dataerror!

\n");

exit(0);}

sum=fun(x,y,z);

printf("Theresultis:

%5.2f\n",sum);

return0;

}

【改错1】#defineFU(m,n)(m)/(n)

【改错2】return(value);

四、程序填空

/*请补充函数fun,函数fun的功能是求n的阶乘。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

*/

#include

longfun(intn)

{

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

if([1])

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

return(n*fun([2]));

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

return[3];

}

intmain()

{

printf("10!

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

return0;

}

【空1】if(n>1)

【空2】return(n*fun(n-1));

【空3】return1;

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

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

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

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