C语言题库第4章 函数.docx
- 文档编号:23657877
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:19
- 大小:136.32KB
C语言题库第4章 函数.docx
《C语言题库第4章 函数.docx》由会员分享,可在线阅读,更多相关《C语言题库第4章 函数.docx(19页珍藏版)》请在冰豆网上搜索。
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言题库第4章 函数 语言 题库