一、语法判断题 (35 分)
1、若有说明int c;则while(c=cin.get());是正确的C++语句。 (错)
2、unsigned 和void 在 C++中都是保留字。 (对)
3、若有 int ⅰ=10, j=0; 则执行完语句 if (j=0) ⅰ+ +; else ⅰ- -; ⅰ的值为 11。 (错)
4、若有int i=10, j=2; 则执行完 ⅰ* =j+8;后 ⅰ的值为28。 (错,100)
5、若一个C++ 程序中说明一个全局变量int ⅰ; (在所有函数之外说明的),
则该程序任何一点都可引用全局变量 ⅰ。(错,extern )
6、若 i为某函数func 之内说明的变量,则当 func 执行完后,ⅰ值无定义。
(对)
7、一个可执行的 C++语言程序可以包含若干个函数,但至少必须包含一
个main( )函数。(错,有且只有一个 )
8、一个 C++语言程序可由若干个源程序文件构成,每个源程序文件也必
须包含一个main()函数。(错 )
9、一个可执行的C++语言程序总是从main()函数的入口地址处开始执行。
(对)
10、在变量定义int sum , SUM; 中sum 和 SUM 是两个相同的变量名。(错)
11、字符串”china”在内存中占据的存储空间是 5 个字节。(错,6个)
12、在C++语言中,”A”和’A’是等价的。(错)
13 、C++表达式4/7 和4.0/7 的值是相等的,且都为double 型。(错)
14、关系表达式a=b>c 等价于a=(b>c) ,同时也等价于a==b>c。(错)
15、(a=3)>(b=5) 是合法的关系表达式。(对)
16、逻辑表达式’c’&&’d’的值为1 。( 对)
17、一个变量的地址就称为该变量的“指针”。(错)
18、C++语言中直到型循环结构为:do 循环体 while(表达式); 但这种循环
是当表达式为真时反复执行循环体,表达式为假时结束循环。( 对)
19、for ( ; ; ) 语句 等价于while (1) 语句 ,即不设初值、不判断条件、无
终止地执行循环体。(对 )
20、break 语句不能用于循环语句和switch 语句之外的任何其它语句中。(对)
21、continue 语句和break 语句的区别是:break 语句提前跳出 switch 结构
或结束循环的执行;continue 语句只结束本次循环,而不是终止整个循环
的执行。(对 )
22、数组是一种构造型数据,即是若干相同类型的数据的集合。(对*)
23、C++语言中,二维数组中元素排列的顺序是:按行存放,即在内存中
先顺序存放第一行的元素,再存放第二行的元素。(错,线性)
24、若有int a[3][4]; 则a[3][4]是对二维数组的正确访问。(错 )
25、一个C++源程序文件由一个或多个函数组成,由此可见函数是一个独
立的编译单位。(错)
26、在C++语言中
,所有函数都是平行的,即在定义函数时是互相的,
一个函数并不从属于另一个函数。(对)
27、C++中,在定义函数时的参数是“形式参数”,在调用函数时的参数是“实
际参数”。( 对)
28、#include 含到当前源文件中来。(对 ) 29、C++语言中允许函数“嵌套调用”和“递归调用”,所谓“递归调用”就是指: 在调用一个函数的过程中又出现直接或间接地调用该函数本身。( 对) 30、C++中,如果在定义函数时省略extern,则隐含为外部函数。(错 ) 31、 引用是一种可做函数参数的变量。 (对) 32、函数体和循环语句的循环体都可为空。(对) 33、数组下标只能是常量,不能是表达式。 (错,是常量表达式) 34、使用 delete运算符释放一个用 new 创建的数组时,每次只能释放一个 元素。 (错) 35、设置函数参数默认值只能用常量,不能用表达式。 二、选择题 (40 分) 1. C++语言是从早期的 C 语言逐渐发展演变而来的.与 C 语言相比,它在 求解问题方法上进行的最大改进是(B) A .面向过程 B.面向对象 C.安全性 D.复用性 2. C++语言的跳转语句中,对于 break 和 continue 说法正确的是(B) A.break 语句只应用与循环体中 B.continue 语句只应用与循环体中 C.break 是无条件跳转语句,continue 不是 D.break 和 continue 的跳转范围不够明确,容易产生问题 3. for(int x= 0,y=o;!x& &y<=5;y++)语句执行循环的次数是(A) A. 0 B. 5 C. 6 D.无次数 4. 考虑函数原型 void test(int a,int b=7,char="*"),下面的函数调用中,属 于不合法调用的是(C) A.test(5); B.test(5,8); C.test(6,"#") D.test(0,0."*"); 5. 下面有关重载函数的说法中正确的是(C) A.重载函数必须具有不同的返回值类型; B.重载函数形参个数必 须不同; C.重载函数必须有不同的形参列表 D . 重载函数名可以不 同; 6 下面关于数组的描述错误的是(D ) A.在C++语言中数组的名字就是指向该数组第一个元素的指针 B.长度为n 的数组,下标的范围是0~n-1 C.数组的大小必须在编译时确定 D.数组只能通过值参数和引用参数两种方式传递给函数 7.下面的哪个选项不能作为函数的返回类型?( C) A.void B.int C.new D.long 8.下列程序的输出结果为( D) #include int func(int n) {if(n<1) return 1; else return n+func(n-1); return 0;} void main() {cout< 9.设 int a=10,b=11,c=12;,表达式 A.2 B.0 C.-2 D.1 10.下列语句中不是死循环的是( ) A.int i=10; B.for(int i=1;i<10;i++) C.int i=0; D.int i=1; while(1) { do{ for(;;) { i--; i++; i=i+1; i--; } }while(i>=0); if(i==1)break; } 11.下面程序的运行结果是(C) #include void main() { int num=1; int &ref=num; ref=ref+2; cout<< ref num=num+3; cout< A.13 B.16 C.36 D.33 12.若二维数组 a 有 m 列,则计算任一元素a[i][j]在数组中相对位置的公式 为(假设 a[0][0]位于数组的第一个位置上)( A) A.i*m+j B.j*m+i C.i*m+j-1 D.i*m+j+1 13.有以下程序 #include void main() { int a=5,b=0,c=0; if(a=b+c)cout<<″***″; else cout<<″$$$″; 下列选项叙述正确的是( D) A.有语法错不能通过编译 B.可以通过编译但不能通过连接 C.输出*** D.输出$$$ 14.以下程序中循环体总的执行次数是(A ) int i,j; for(i=6;i>1;i--) for(j=0;j<4;j++) {……} A.20 B.261 C.15 D.25 15.下列关于C++函数的描述中正确的是(B ) A.主函数是程序的入口,它由用户定义的函数调用 B.函数在调用之前必须先被声明 C.每个用户定义的函数只能被其他函数调用一次 D.函数是C++中面向对象程序设计框架的基本组成单元 * 16.若定义 int k=7,x=12;,则能使值为3 的表达式是( ) A.x%=(k%=5) B.x%=(k-k%5) C.x&=k-k%5 D.(x%=k)-(k%=5) 17.以下赋值语句中,合法的是(ACD)。* A.a=b=58; B.i++; C.a=58,b=58; D.k=int(a+b); *18.下列语句中,错误的是(B)。 A.const int buffer=256; B.const int temp; C.const double *point; D.const double *rt=new double(5.5); 19.下列声明语句中没有起到定义作用的是() A.int count; B.donst double pi=3.14159; C.int max(int a,int b){return a>b?a:b;} D.extern long index; 20.下列关于 break 语句的描述中正确的是( B) A.break 语句可用于循环体内,它将退出该次循环 B.break 语句可用于 switch 语句中,它将退出 switch 语句 C.break 语句可用于 if 体内,它将退出 if 语句 D.break 语句在一个循环体内可执行几次 三、 阅读以下程序写出运行结果 (15 分) 1. #include void main() { int a=40; while(--a) { if(a==20) break; if(a%2==0||a%3==0||a%5) continue; cout< } 答案:34 24 2. #include void main() { int x(5); int & fun(int &); int y=fun(x)--; cout< int w; int & fun(int &i) { w=i*i; return w; } 答案:25 3. #include int y=3; int fun(int,int =2,int &c=y); void main() { int a(2),b(3),c(4); int x=fun(a); 7 int y=fun(a,b); 8 int z=fun(a,b,c); 10 cout< int fun(int a,int b,int &c) { a=b; b=c; c=a;