● 函数fun1()、fun2()的定义如下所示,已知调用fun1 时传递给形参x的值是-5,若以引用调用(call by reference)的方式调用fun2,则函数fun1的返回值为 (33) ;若以值调用(call by value)的方式调用fun2,则函数fun1的返回值为 (34) 。
fun1(int x) fun2(int x) int a=x-1;
x = fun2(a);
return a-x; x=x+10;
return 3*x;
(33)A. -18 B. -11 C. -8 D. 0
(34)A. -18 B. -11 C. -8 D. 0
答案:A、C
值调用时,原传递参数值不会被修改!
如果是值传递:那么对于fun1中:a=x-1=-6;x=fun2(a)=fun2(-6);那么在fun2中,x=x+10=-6+10=4,返回3*x=12;这时原参数a=-6并不会被修改,也就是说a的值还是-6;这时,a-x=-6-12=-18;
对于引用调用,在fun2中执行语句x=x+10=-6+10=4时,这时a的值也被修改,变为4,所以返回到fun1中执行a-x时应该为a-x=4-12=-8。
下列函数原型声明中错误的是
A.void Fun(int x=O,int y=0);
B.void Fun(int x,int y);
C.void Fun(int x,int y=0);
D.void Fun(int x=0,int y);
以下正确的函数头定义形式是
A.double fun(int x,int y)
B.double fun(int x;int y)
C.double fun(int x,int y);
D.double fun(int x,y);
以下正确的函数原型语句是( )。
A、double fun(int x,int y)
B、double fun(int x;int y)
C、double fun(int,int);
D、double fun(int x,y);
A.3,4
B.3,3
C.2,4
D.2,3
程序设计基础(上)19秋期末考核-0001试卷总分:100 得分:68一、单选题 (共 15 道试题,共 30 分)1.一个浮点法表示的数值由( )两部分组成。A.阶码和尾数B.整数和小数C.指数和基数D.尾数和小数答案:A2.已知“char s=南开大学;”,则数组s的长度为#。A.9B.8C.5D.4答案:A3.计算机系统中采用补码运算的目的是( )。A.简化计算机的设计B.提高运算的精度C.减少存储空间D.与手工运算方式保持一致答案:A4.已知函数定义“void fun(int &a, int b) b+; a+;”,则执行“int x=2,y=3; fun(x,y);”后,变量x、y的值分别为#。A.3,4B.3,3C.2,4D.2,3答案:B5.默认形参值不可以是#。A.静态全局变量B.局部变量C.函数调用D.全局变量答案:B6.已知“int a=1,2,3,4,5,*p=a;”,则以下各选项中对数组元素访问错误的是#。A.pp-aB.*(p+2)C.a5D.a3答案:C7.已知字母“a”的ASCII码是97,则字母“f”的ASCII码是( )。A.103B.102C.101D.100答案:B8.在32位计算机系统中,已知“int a23; fun(a);”,fun函数的形参变量名为p,则在fun()函数体中通过sizeof(p)计算得到的结果为#。A.6B.4C.24D.12答案:B9.已知程序段: int a34,*p3=a0, a1, a2,*pp=p,i; for (i=0; i12; i+) ai/4i%4=i; 则pp12的值是#。A.6B.5C.4D.3答案:A10.二进制数1001101011转换为等值的八进制数是( )。A.9ACB.4651C.26BD.1153答案:D11.字符的ASCII码的表示方法是:使用8位二进制码并且( )。A.最高位为1B.最高位为0C.最低位为1D.最低位为0答案:B12.下面的描述,不正确的是#。A.语句for(i=0;i+)表示无限循环B.语句for(;)表示无限循环C.语句for( )表示无限循环D.while(1)表示无限循环答案:C13.已知“char a=abcd”,*p=a+2;,则语句“couty-2”是算数表达式。答案:错误31.? 高维数据都可以使用一维数组进行存储。答案:正确32.静态局部变量在定义时若没有初始化,则自动初始化为0。答案:正确33.语句for(i=0;i+)和for(;)都表示一次也不循环。答案:错误34.使用全局变量会降低函数之间的独立性,在编写程序时尽量减少全局变量的使用。答案:正确35.将浮点型赋值给整型时,转换后的值可能丢失小数部分,原来的值也可能超出目标类型的取值范围导致结果错误。答案:正确三、问答题 (共 2 道试题,共 20 分)36.下面程序的运行结果是什么?#include using namespace std;int main() char a210=Xyccw, XYcCw ; int i; for (i=0; i5; i+) if(a0i!=a1i) break; if (i=5) cout两个字符串相同a1i) cout较大的字符串为:a0endl; else cout较大的字符串为:a1endl; return 0;答案:较大的字符串为:Xyccw37.下面程序的运行结果是什么?#include using namespace std;void fun(int a, int b, int &sum, int sub) sum = a+b; sub = a-b;int main() int a=5, b=10, sum=0, sub=0; fun(a, b, sum, sub); coutsumendl; coutsubendl; return 0;答案: 150四、简答题 (共 1 道试题,共 10 分)38.请设计“求斐波那契数列”的递归算法,并用C+代码写出求前10项斐波那契数列的完整程序。答案:
对下列程序段的描述正确的是( )。 #include<iostream.h> int Fun(int,int) void main() { cout<<Fun(5,50)<<endl; } int Fun(int x,int y) { return X*X+y*y; }
A.该函数定义正确,但函数调用方式错误
B.该函数调用方式正确,但函数定义错误
C.该函数定义和调用方式都正确
D.该函数定义和调用方式都错误
有以下函数定义: void fun(int n, double x) {……} 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是( )。
A.fun(int y,double m);
B.k=fun(10,12.5);
C.fun(x,n);
D.void fun(n,x);
对下列程序段的描述正确的是( )。 #include<iostream.h> int fun(int,int); void main() { cout<<fun(1,2)<<endl; } int fun(int x,int y) { return x+y; }
A.该函数定义正确,但函数调用方式错误
B.该函数调用方式正确,但函数定义错误
C.该函数定义和调用方式都正确
D.该函数定义和调用方式都错误
主调函数中的两个变量a和b,要求调用函数交换a、b的值,返回交换结果,则以下正确的函数是______。
A.funa(int*x,int*y) {int*p; *p=*x;*x=*y;*y=*p; }
B.funb(int x,int y) {int t; t=x;x:y=y=t;}
C.func(int*x,int*y) {*x=*y;*y=*x;}
D.fund(int *x,int*y) {*x=*x+*y;*y=*x-*y;*x=*x-*y;}
下列函数参数默认值定义错误的是( )。
A.f(int x,int y=O)
B.fun(int x=100)
C.f(int x=0,int y)
D.fun(int x=f())(函数f()已经定义)