1、函数练习题及问题详解单项选择=题号:2914函数定义时的参数为形参,调用函数时所用的参数为实参,则下列描述正确的是().A、实参与形参是双向传递B、形参和实参可以同名C、实参类型一定要在调用时指定D、形参可以是表达式答案:B题号:4060以下程序的输出结果是main()int k=4,m=1,p;p=fun c(k,m);printf(%d,p);p=fun c(k,m);printf(%dn,p);fun c(int a,int b)static int m,i=2;i+=m+1;m=i+a+b;return(m);A、8,20B、8,16C、8,17D、8,8答案:C题号:2491请阅读以
2、下程序: #include#includevoid fun(int b) static int i=0; do bi+=bi+1; while(+i2);main() int k,a5=1,3,5,4,9; fun(a); for(k=0;k5;k+)printf(%d,ak); 上面程序的输出是(). A、48579B、48549C、48999D、13579答案:B题号:2643有以下程序:#includevoid fun(int a,int n)int i,t;for(i=0;in/2;i+)t=ai;ai=an-1-i;an-1-i=t;main()int k10=1,2,3,4,5,6
3、,7,8,9,10,i;fun(k,5);for(i=2;i8;i+)printf(%d,ki);printf(n);程序的运行结果是().A、876543B、321678C、1098765D、345678答案:B程序设计=题号:5340/*-【程序设计】-题目: 给定n个数据, 求最小值出现的位置 (如果最小值出现多次,求出第一次出 现的位置即可)。-注意:部分源程序给出如下。请勿改动主函数 main和其它函数中的任何容,仅在函数 station的花括号中填入所编写的若干语句。*Begin*和* End *不可删除-*/#include stdio.hint station(int s,in
4、t n)/*Begin*/* End */ main() int a100,n,i,t; scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); t=station(a,n); printf(the min_value position is:%dn,t); TestFunc(); TestFunc()FILE *IN,*OUT;int n;int i10;int o;IN=fopen(in.dat,r);if(IN=NULL)printf(Read File Error);OUT=fopen(out.dat,w);if(OUT=NULL)printf(Writ
5、e File Error);for(n=0;n10;n+) fscanf(IN,%d,&in);o=station(i,10);fprintf(OUT,%dn,o);fclose(IN);fclose(OUT);示例代码:int i,k; k=0; for(i=1;in;i+) if(sisk) k=i; return(k);题号:5371/*-【程序设计】-功能:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。例如若n为1000时,程序输出应为:s=153.909064。*Begin*和* End *不可删除-*/void TestFunc(); #include
6、#include double fun( int n) /*Begin*/ /* End */main() printf(s=%lfn,fun(1000); TestFunc();void TestFunc() FILE *IN,*OUT; int i; double s; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); fscanf(IN,%d,&i); s=fun(i); fprintf(OUT,%lf,
7、s); fclose(IN); fclose(OUT);示例代码:int i; double s=0; for(i=1;i= 2 & _) /*FILL*/ if (k%13 = 0 | _) m=m+k; mc+; k-; /*FILL*/ _;main ( ) printf(%dn, fun (500);答案:位置 1:int k位置 2:mc mc 【或】 mc = mc位置 3:k%17 = 0 【或】 !(k%17) 【或】 k/17*17=k位置 4:return m 【或】 return (m)题号:546/* 给定程序中,函数fun的功能是: 将NN矩阵中元素的值按列右移1个位
8、置,右边被移出矩阵的元素绕回左边。 例如,N=3,有下列矩阵 1 2 3 4 5 6 7 8 9 计算结果为 3 1 2 6 4 5 9 7 8 请在程序的下划线处填入正确的容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! */#include #define N 4void fun(int (*t)N)int i, j, x;/*FILL*/ for(i=0; i=1; j-) tij=tij-1;/*FILL*/ ti_3_=x; main()int tN=21,12,13,24,25,16,47,38,29,11,32,54,42, 21,33,10
9、, i, j; printf(The original array:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); printf(n); fun(t); printf(nThe result is:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); printf(n); 答案:位置 1:N位置 2:N-1位置 3:0题号:543/* 给定程序中,函数fun的功能是: 将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。 例如,
10、输入一个整数:27638496,函数返回值为:64862。 请在程序的下划线处填入正确的容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! */#include unsigned long fun(unsigned long n)unsigned long x=0; int t; while(n) t=n%10;/*FILL*/ if(t%2=_1_)/*FILL*/ x=_2_+t;/*FILL*/ n=_3_; return x;main()unsigned long n=-1; while(n99999999|n0) printf(Please inp
11、ut(0n100000000): ); scanf(%ld,&n); printf(nThe result is: %ldn,fun(n);答案:位置 1:0位置 2:10*x位置 3:n/10程序改错=题号:708/* 给定程序中函数fun的功能是:求三个数的最小公倍数。 例如,给主函数中的变量x1、x2、x3分别输入15 11 2,则输出结果应当是:330。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 */#include /*ERROR*/fun(int x, y, z)int j,t ,n ,m; j = 1 ; t=j
12、%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*/ return i;main()int x1,x2,x3,j ; printf(Input x1 x2 x3: ); scanf(%d%d%d, &x1,&x2,&x3); printf(x1=%d, x2=%d, x3=%d n,x1,x2,x3); j=fun(x1,x2,x3); printf(The minimal common multiple is : %dn,j);答案:位置 1:int fun(int x, int y,
13、 int z)位置 2:return j;题号:693/* 给定程序中函数fun的功能是: 用选择法对数组中的n个元素按从小到大的顺序进行排序。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行和删行,也不得更改程序的结构! */#include #define N 20void fun(int a, int n)int i, j, t, p; for (j = 0 ;j n-1 ;j+) /*ERROR*/ p = j for (i = j;i n; i+) if(ai ap)/*ERROR*/ p = j; t = ap ; ap = aj ; aj = t
14、; main() int aN=9,6,8,3,-1,i, m = 5; printf(排序前的数据:); for(i = 0;i m;i+) printf(%d ,ai); printf(n); fun(a,m); printf(排序后的数据:); for(i = 0;i m;i+) printf(%d ,ai); printf(n);答案:位置 1:p=j;位置 2:p=i;题号:692/* 给定程序中函数fun的功能是:计算n!。 例如,给n输入5,则输出120.000000。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! */#include double fun (int n)double result = 1.0 ;/*ERROR*/ if n = = 0 return 1.0 ; while(n 1 & n 170)/*ERROR*/ result *= n- return result ;main ()int n ; printf(Input N:); scanf(%d, &n); printf(nn%d! =%lfnn, n, fun(n);答案:位置 1:if(n=0)位置 2:result *=n-;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1