1、东 南 大 学 考 试 卷( B 卷) 学号 姓名 密 封 线 课程名称 程序设计与C++语言(上) 考试学期 07-08-2 得分 适用专业 07级非电类专业 考试形式 闭卷 考试时间长度 120分钟 说明:此卷满分为100分。 一、单选题 (每题2分,共20分) 1. 建立C++语言的可执行程序,需要经过编辑源程序、对源程序编译、对多
2、个程序文件进行连接和生成可执行程序等步骤,其中建立或生成文件的顺序如以文件扩展名识别,正确的顺序为 。 A、.exe .cpp .obj B、.cpp .exe .obj C、.obj .cpp .exe D、.cpp .obj .exe 2. 变量a, b, c,d均为double类型且已正确赋值,能够正确表示的表达式是___________。 A、 a+b/2*c-d B、(a+b)/2/(c-d)) C、(a+b)/2*(c-d) D、(a+b)/(2c-2d) 3. 若有如下程序段,其中s, x,
3、 y, z均为已定义的整型变量,且x, z均已赋值(z>0)
s = x; y=1;
while ( y<=z ) { s=s+1; y++; }
则与上述程序段功能等价的赋值语句是___________。
A、 s = x+y; B、s = s+z; C、s = x+z; D、s = y+z;
4. 以下程序段执行时的输出结果是___________。
int a=3, b=5, c=8, d;
cout<<(d=ac?a:c):b)< 4、 D、不确定
5. 设有枚举类型定义:enum col{ left=6, right=1, up, down}; 则枚举量down的值为 。
A、 1 B、 3 C、 4 D、 9
6. 在以下程序段中,while语句的循环次数是 。
int i=2;
while(i<10)
{ if(i<1) continue;
if(i==6) break;
i++;
}
A、5 B、6 C、10 D、无穷循环,
自 觉 遵 守 5、 考 场 纪 律 如 考 试 作 弊 此 答 卷 无 效
7. 在一个程序段中,设已声明int a, b;则与下边语句等价的是____ ___。
switch(a)
{ case 1:
case 2: b=a; break;
case 3:
case 4: b=2*a;
}
A、if((a==1) || (a==2)) b=a; else b=2*a;
B、if((a==1) || (a==2)) b=a; else if((a==3) || (a==4)) b=2*a;
C、if((a==1) && (a==2)) b=a 6、 else if((a==3) && (a==4)) b=2*a;
D、if((a==1)||(a==2)||(a==3)||(a==4)) b=2*a;
8. 以下关于调用函数时,形、实参结合的通用规则不正确的描述为_______。
A、实参可以是变量,也可以是常数或者表达式。
B、实参的个数可以多于形参,也可以少于形参。
C、系统将为形参分配内存单元。
D、实参必须与对应的形参类型相兼容。
9.下列哪个不是重载函数在调用时选择的依据_________。
A、形参类型 B、形参个数
C、函数名 D、函数返回 7、值类型
10.若已定义double使用语句area=Trgl_Area(3.5, 4, 6.2);调用求三角形面积函数,则下列式中 是正确的函数原型说明。
A、float Trgl_Area(float,int, float);
B、int Trgl_Area(x, y, z);
C、double Trgl_Area(double, double, double);
D、int Trgl_Area(float x, float y, float z);
二、概念填空题 (每空2分,共16分)
1. 变量的有效范围与 8、其定义的位置有关,在函数外定义的变量其作用域在
(1) 中都有效。
2. 设有语句 int x; float y; 则计算表达式(x=7/2, y=x/2)后, x的值为
(2) ,y的值为 (3) 。
3. C++中的一些关键字可以代替逻辑运算符,如and代替&&,而not可以代
替 (4) 。
4. 若有宏定义:#defin A 2+radius
#defin B 2*A
#defin F(x)( ( 9、A+B) *x )
则执行语句:int radius=5; int S = 2*( B+F(A+2) ); 后,
S的值是 (5) 。
5. 一个试图从1到100求和的程序段:
int Sum;
for(int I = 1; I <= 100; I++)
Sum += I;
cout << Sum << endl;
执行后,屏幕输出的结果是-858988410,而不是5050,原因是:
(6)
6. 如果定义了如下两个函数:
int Mov 10、eValue(int A, int B = 3);
double MoveValue(double A, int B, int C=1);
那么,调用语句 double X = MoveValue( '2' ); 的错误之处是:
___(7)___ 。
而调用语句 double Y = MoveValue(3.2/ 5, 6 / 7); 则是正确的,它调用的函数
是___(8)_ __ 。
三、阅读理解程序,写出输出结果 (共31分)






