? 函数
一、选择题
1、以下正确的函数定义形式是 A 。 A) double fun(int x,inty) B)double fun(int x;int y) C) double fun(int x,y) D)double fun(int x,y;) 2、按C语言的规定,以下不正确的说法是 C 。
A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以为任意类型 D)形参应与其对应的实参类型一致
3、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 B 。 A)地址传递 B)单向值传递 C)由实参传给形参 D)由用户指定传递方式 4、在C语言程序中,以下正确的描述是 B 。 A) 函数的定义可以嵌套,但函数的调用不可以嵌套 B) 函数的定义不可以嵌套,但函数的调用可以嵌套 C) 函数的定义和函数的调用均不可以嵌套 D) 函数的定义和函数的调用均可以嵌套
5、若用数组名作为函数调用的实参,传递给形参的是 A 。 A)数组的首地址 B)数组第一个元素的值 C)数组中全部元素的值 D)数组元素的个数
6、如果在一个函数中的复合语句中定义了一个变量,则该变量 A 。 A)只在该复合语句中有效 B)在该函数中有效 C)在本程序范围内有效 D)为非法变量
7、若使用一维数组名作函数实参,则以下正确的说法是 A 。 A) 必须在主调函数中说明此数组的大小 B) 实参数组类型与形参数组类型可以不匹配 C) 在被调函数中不需要考虑形参数组的大小 D) 实参数组名与形参数组名必须一致
8、凡是函数中未指定存储类型的局部变量,其隐含的存储类型为 A 。 A) auto B) static C)extern D)register 9、在宏定义#define PI 3.14159中,用宏名PI代替一个 A 。
A)常量 B)单精度数 C)双精度数 D)字符串 10、有以下程序: #include int f(int b[ ][4]) { int i,j,s=0; for(j=0;j<4;j++){ i=j;if(i>2) i=3-j;s=s+b[i][j];} return s; }
void main() { int a[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}}; cout<
25
}
执行后的输出结果是 D 。
A)12 B)11 C) 18 D)16 12、以下描述不正确的是 B 。 A)调用函数时,实参可以是表达式
B)调用函数时,实参与形参可以共用内存单元 C)调用函数时,将为形参分配内存单元
D)调用函数时,实有与形参的类型必须一致
13、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是 B 。 A)地址传递 B)值传递
C)由实参传给形参,并由形参回传给实参 D)由用户指定传递方式
14、在一个源文件中定义的全局变量的作用域为 D 。 A)本文件的全部范围 B)本程序的全部范围 C)本函数的全部范围
D)从定义该变量的位置开始至本文件结束为止 15、有一个如下定义的函数: func(a) { cout<则该函数的返回类型是 A 。 A)与参数a的类型相同 B)void类型 C)没有返回值 D)无法确定
16、以下程序的输出结果是 A 。 #include int func(int a,int b,int c) { int d; d=a+b+c; return d; }
void main() { int x=1,y=2,z=3,r; r=func(x+y+z,x,y); cout<17、以下程序的输出结果是 A 。
26
#include int func(int x) { int p; if(x==0||x==1) return(3); p=x-func(x-2); return p; }
void main() { cout<A)7 B)2 C)0 D)3 解:func()是一个递归函数,调用func(9)时,执行p=9-func(7);调用func(7)时,执行p=7-func(5);调用func(5)时,执行p=5-func(3); 调用func(3)时,执行p=3-func(1);调用func(1)返回3;返回p=3-func(1)=3-3=0,func(3)=0;返回p=5-func(3)=5-0=5,func(5)=5;返回p=7-func(5)=7-5=2,func(7)=2;返回p=9-func(7)=9-2=7,func(9)=7。
二、填空题:
1、以下程序的运行结果是 7 6 7 2 7 5 。 #include fun(int i,int j)
{int x=7;cout<
void main() { int i=2,x=5,j=7; fun(j,6); cout<
2、以下程序的运行结果是 1 1 1 。 #include increment()
{int x=0;x=x+1;cout<void main() { increment();increment();increment(); }
3、以下程序的运行结果是 2 。 #include max(int x,int y)
{int z;z=(x>y)?x:y;return(z);
27
}
void main() { int a=1,b=2,c;c=max(a,b);cout<<\最大值是\}
4、以下程序的运行结果是 第一次:x=2 y=3 z=0 第二次 x=4 y=9 z=5 第三次 x=2 y=3 z=0 。 #include add (int x,int y,int z) {z=x+y;x=x*x;y=y*y;
cout<<\第二次:x=\}
void main()
{int x=2,y=3,z=0;
cout<<\第一次:x=\add(x,y,z);
cout<<\第三次:x=\}
5、以下程序的运行结果是 5 10 9 。 #include f(int a[ ]) {int i=0;
while(a[i]<=10) {cout<void main()
{int a[ ]={1,5,10,9,11,7}; f(a+1); }
6、以下程序的运行结果是 6 。 #include func(int a[ ][3]) {int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++)
{a[i][j]=i+j;if(i==j) sum=sum+a[i][j];} return (sum); }
void main()
{int a[3][3]={1,3,5,7,9,11,13,15,17};int sum; sum=func(a); cout<7、以下程序的功能是根据输入的”y”(“Y”)与”n”(“N”),在屏幕上分别显示出”This is YES.”与”This is No.”。请填空。
28