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