1、 B 双向值传递 C 单向值传递D 地址传递10实参用数组名,则传递给对应形参的是( )。 A数组的地址 B数组的长度 C数组中每一个元素的地址 D数组中每一个元素的值【答】A11下列关于函数调用的描述中,错误的是( )。 A在函数调用中,形参是变量名,实参可以是变量、常量和表达式 B在函数调用中,形参是指针时,实参必须是地址值C在传址调用方式中,可以在被调用函数中改变调用函数的参数值D在传值调用方式中,可以在被调用函数中改变调用函数的参数值12下列关于函数返回值的论述中,错误的是( )。 A函数返回值能够实现函数间的数据传递 B函数返回值是由return实现的 C函数返回的值和值的类型是由返
2、回语句中表达式的值和类型决定的 D一个函数可有多条返回语句,但只可有一个返回值 【答】C13函数返回值的类型由( )。 A调用该函数的函数类型决定 Breturn语句中表达式的类型决定 C主函数决定 D该函数的函数类型决定14下列关于函数的论述中正确的是( )。A不允许函数嵌套定义,但允许函数嵌套调用B不允许函数嵌套调用,但允许函数嵌套定义C函数的定义和调用都允许嵌套D函数的定义和调用都不允许嵌套15下列关于函数调用的论述中不正确的是( )。A函数间允许嵌套调用 B函数间允许间接递归调用 C函数间允许直接递归调用 D函数间不允许直接递归调用16以下说法不正确的是( )。A所有的形式参数都是局部
3、变量B不同函数中允许说明并使用相同名字的变量C函数内定义的变量其有效范围不超出该函数D函数内的复合语句中说明的变量在该函数范围内有效17在本程序中能被所有函数使用的变量,其存储类别是( )。Aauto(自动) Bstatic(静态) Cregister(寄存器) Dexern(外部)【答】 D18在函数中未说明存储类别的局部变量,其隐含的存储类别是( )。19下列关于变量的论述中,不正确的是( )。A外部变量定义与外部变量声明,两者的含义不同B外部变量与静态外部变量的存储类型不同(即它们被分配的存储区不同)C在同一函数中,既可使用本函数中的局部变量又可使用与局部变量不同名的全局变量D在同一程序
4、中,外部变量与局部变量同名时,则在局部变量作用范围内外部变量不起作用【答】 B 20运行以下程序, 其输出结果是( )。void swap28(int n0,int n1) int temp;temp=n0;n0=n1;n1=temp;void swapl4(int n) int temp; temp=n0; n0=n1; n1=temp; void main() int a2=2,8,b2=1,4;swap28(a0,a1); swapl4(b); printf(“d d d dn”,a0,a1,b0, b1);A2814 B2841 C8241 D8214【答】 B二、填空题1若自定义函数
5、要求返回一个值,则在该函数体中应有一条 【1】 语句;若自定义函数要求不返回值,则在该函数说明时加一类型说明符 【2】 。【答案】【1】带有表达式的return【2】void2函数调用时的实参与对应的形参都是数组时,参数传递方式为 【1】 ;都是普通变量时,参数传递方式为 【2】 。【1】传地址【2】传值3静态局部变量的作用域是 【1】 。【1】定义它的函数或复合语句的内部4函数形参的作用域是 【1】 。全局的外部变量与函数体内定义的局部变量同名时,在函数体内, 【2】 变量起作用。【1】整个函数体内【2】局部5下列函数sub( )的功能是求两个参数的差,并将差值返回调用函数。该函数中错误的部
6、分是 【1】 ,改正后应为 【2】 。void sub(double x, double y) double z;z= x y;return z;【1】void sub(double x, double y)【2】double sub(double x, double y)6. 为了使下面程序能够正确运行,程序的第2行应填写的内容是 【1】 ,当输入的数值为66和99时,该程序输出的结果是 【2】 。#include 【1】 main() double x1,x2; scan(“lf,lf”,&x1,&x2) ;printf(“%lfn”,max(x2,x1) ;getch( ) ;doubl
7、e max(double y1,double y2)return(y1y2 ? y1y2 : y2-y1);【1】double max(double ,double ) ;【2】 33.000000 7. 下面程序,在函数sum( ) 中求(m + n)3 + (m - n)3的值,在主函数中为m、n输入10、7,并输出计算结果,请填空。int m,n;printf(“Please input m,n:”);scanf(“d,d”, 【2】 );printf(”The sum=dn”,sum(m,n);int sum(int i,int j)int k;k= 【3】 ;return k;【1】
8、int sum( );【2】&m,&n【3】(i+j)3+(i-j)3 8. 下面程序功能是求两个浮点数的和,程序内容如下, 请填空。double add(double x,double y,double p)p=x+y; double a=55.44, b=44.55 ; double k; add(a,b, 【2】 );printf(“2lfn”,k);【1】return(p);【2】k 注:输出的k值是不确定的!9下面程序的运行结果是 【1】 。void func(int br) int i=1; while(bri=10) printf(%5d,bri); i+; int ar=2,4
9、,8,10,8,4,11,9,7; func(ar + 1);n); getch();【1】 8 10 8 410. 函数acopyb将整型数组aarra的内容逆序复制到整型数组barra中(-32768作为数组元素值的结束标志),请填空。void acopyb(int aa ,int ba ) int i=0,j=0; while(aaj!=-32768) j+; baj=aaj; j-; while(aai!=-32768) 【2】 static int aarra=1,3,5,7,9,2,4,6,8,10,-32768; int barra20; int i=0; acopyb( 【1】
10、 ); while(barrai!=-32768)%3d, 【3】 );printf(【1】aarra ,barra 【2】baj=aai;【3】barrai+11. 在 【1】 处填写适当内容,使下面程序的输出结果为264。int func(int m, int n) return (m * n); int a=3,b=11,c=8,d; d=func(func( 【1】 ),c);%dn,d);【1】a ,b或者b , a12下面程序的输出结果为 【1】 。#include #define N 10void output(int *p,int n) int i; for(i=0;in; i
11、+),*p+); int xN,i, *q;N;i+) xi=2*i; q=x;output(q,N);for(i=0; i+) printf(,xi);【1】0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 1813. 函数small()从5x5矩阵(即从5行、5列二维数组)中,找出主对角线上元素的最小值。在主函数中为数组输入数据。请填写适当内容。int small(int a55) int i,vm; vm = a00; for(i =1;i aii) vm = 【1】 return(vm);int i,j,vmin; int array55;
12、for(i = 0;i+) for(j = 0;j max)【2】 =arrayij;return(max);【1】max_value(a)【2】max15下面程序的功能是调用选择排序法函数select( ),对数组中的整数按从小到大的顺序排列,请填写适当内容。void main( )void select(int a,int n); int b10,i;Input 10 numbers: 10; scanf(%d, 【1】 );select( 【2】 ,10);,bi); void select(int a,int n) int i,j,k,temp; n - 1;k = i; for(j
13、= i+1; n; if(aj ak) k=j; if(k 【3】 i)temp = ak; ak = 【4】 ; ai = temp;【1】&bi【2】b【3】!=【4】ai16下面程序的运行结果是 【1】 ,函数sort( )采用的算法是 【2】 。#define M 5#define N 6void sort(int a,int n)int i, j,temp;n-1; for (j=i+1;j if(ai aj) temp = ai; ai = aj; aj = temp;,ai);int i;int x=7,3,9,5,1;int y=46,55,91,64,82,73;sort(x
14、,M);sort(y,N);M;,yi);【1】 9 7 5 3 1 91 82 73 64 55 46 9 7 5 3 1【2】函数sort( )采用的是冒泡排序法。17下面程序的功能是利用函数的递归调用求1!+2!+3!+ +9!,请填写适当内容。long int fracsum(int n)if(n=1)return ( 1 );elsereturn (n* 【1】 ); int i=1;long int sum;sum= 【2】 while(i=9) sum+= 【3】 ;i+;%ldn,sum );【1】fracsum( n-1)【2】0【3】fracsum(i)18下面程序的功能是
15、 【1】 ,程序运行结果是 【2】 。 int fib(int n);10; if(i%5=0) printf() ;%10d,fib(i);int fib(int n) if(n=0 | n=1) return n; else return fib(n-2)+fib(n-1);【1】计算斐波那契(Fibonacci)数列前10项的值。【2】 0 1 1 2 35 8 13 21 3419运行下面程序,函数func( )中输出的结果是 【1】 ,主函数中输出的结果是【2】 。int n=10;int func(int p)n += p;p += n;%d,%dn,p,n);return (n)
16、; int m=6, pand=8; pand=func(m);n%d,%d,%dn,m,pand,n);【1】22 16【2】6 16 1620运行下面程序,输出的结果是 【1】 。int m,n;int fun( ) m=88; n=99; return ( n); int m=55, n=66;n%d,%d,%d,%dn,m, fun( ), m, n);【1】 55,99,55,6621运行下面程序,输出的结果是 【1】 。int m=9;int func(int a, int b ) int m=1;n%dn,+m); return (a*b-m); int x=2, y=35;,f
17、unc(x,y)/m);【1】2 和 722运行下面程序,函数fun( )中输出的结果是 【1】 ,主函数中输出的结果是【2】 。void fun(int s) static int i=0;int j; do si+=si+1;while( +i3 );for(j=0;5;j+) printf(,sj); int i,a10=0,1,2,3,4; for(i=1;3;i+) fun(a);i+) printf(【1】13534 13574【2】1357423运行下面程序,输出的结果是 【1】 。int n=98;int fun() static int n=1; n+=2; return (
18、n);n%d, %dn,+n,fun() );,n+,fun() );【1】101, 3 101, 5三、程序设计题1 输入任意3个整数,利用函数的嵌套调用,求出3个数中的最小值。参考程序代码如下: int mintwo(int, int); /*函数声明 */ int minthree(int,int,int); /*函数声明 */ int x,y,z,min;nPlease input three integer:%d,%d,%d,&x,&y,&z); min=minthree(x,y,z);nMin is %d,min);int mintwo(int a,int b) return(ab?a:b); /*使用条件表达式,并将计算结果返回 */int minthree(int a,int b,int c) int z; z=mintwo(a,b); /*嵌套调用函数mintwo()*/ z=mintwo(z,c); return(z);2 由键盘输入两个整数,编写两个函数,分别求这两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。long int gcd(long int,long int); /* 函数声明 */lo
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2