本文共 6894 字,大约阅读时间需要 22 分钟。
1. 下列程序的输出结果为:
(B) #include<iostream.h>
void main()
{
char* a[ ] = { "hello", "the", "world"};
A) theworld B) the C) ello D) ellotheworld
2. 已知二叉树后序遍历序列是 bfegcda ,中序遍历序列是 badefcg ,它的前序遍历序列是:
(B) A) abcdefg B) abdcefg C) adbcfeg D) abecdfg
C) 只允许在短点处插入和删除元素 D) 没有共同点
for(a = 0, x = 0; a<=1 && !x++; a++)
5. 下列选项,不正确的是
:(B) while后没有分号 A) for(int a=1; a<=10; a++);
D) for(int a= 1; a<=10; a++)a++;
A) char str[2] = {“a”,”b”};
B) char str[2][3]={“a”,”b”};
C) char str[2][3]={
{‘a’,’b’},{‘e’,’d’},{‘e’,’f’}};
D) char str[] = {“a”, “b”};
A) 内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B) 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
D) 类的内联函数必须在类体外通过关键字 inline 定义
C) 静态数据成员不能受 private 控制符的作用
9. 下列运算符中,在 C++ 语言中不能重载的是:
(C) A) * B) >= C) :: D) delete
A) C++ 语言的多态性分为编译时的多态性和运行时的多态性
C) 运行时的多态性可通过模板和虚函数实现
// 模板的是编译时多态性,而虚函数是运行时 11. 如果进栈序列为 e1,e2,e3,e4,e5, 则可能的出栈序列是:
(D) 12 下面关于类和对象的描述中,错误的是:
(A) A) 类就是 C 语言中的结构体类型,对象就是 C 语言中的结构体变量
C) 对象是类的实例,一个对象必须属于一个已知的类
A) 在C++语言中数组的名字就是指向该数组第一个元素的指针
D) 数组只能通过值参数和引用参数两种方式传递给函数
在把数组作为参数传递给函数时,有值传递(by value)和地址传递(by reference)两种方式。
在值传递方式中,要在数组参数的尾部加上一对方括号([]),调用函数时只需将数组的地址(即数组名)传递给函数。
例如:如果数组x被声明为:int x[10];
那麽函数被说明为:void byval_func(int[]);
参数int[]告诉编译程序byval_func()函数只有一个参数,即一个由int型值组成的数组。 函数调用时只需将数组名传递给函数:byval_func(x);
在值传递方式中,数组x将被复制一份,复制所得的数组将被存放在栈中,然后由byval_func()函数接收并打印出来。由於传递给byval_func()函数的是初始数组的一份拷贝,因此在byval_func()函数内部修改传递过来的数组对初始数组没有任何影响。
值传递方法的开销是很大的,因为首先它要完整地复制初始数组并将这份拷贝存放到栈中,这将耗费相当可观的运行时间, 因而值传递方法效率较低;其次,初始化数组的拷贝需要占用额外的内存空间(栈中的内存);最后,编译程序需要专门产生一部分用来复制初始数组的代码,这将使程序变大。
地址传递方法克服了值传递方法的缺点。在地址传递方法中,传递给函数的是指向初始数组的指针,不用复制数组,因此程序变得简练,也节省了栈中的内存空间。在地址传递过程中,只需在函数原形中将函数的参数说明为指向数组元素数据类型的一个指针。
例如同样定义一个数组x:int x[10];
那麽函数被说明为:int const_funt(const int*);
参数const int*告诉编译程序const_funt()函数只有一个参数,即指向一个int类型常量的指针。
函数调用时只需将数组的地址传递给函数:const_func(x);
void const_func(const int*);
void const_func(const int*i)
在值传递方式中,没有复制初始数组并将其拷贝存放在栈中,const_func()函数只接收到指向一个int类型常量的指针,因此在编写程序时要保证传递给const_func()函数的是指向一个由int类型常量组成的数组的指针。const修饰符的作用是防止意外修改初始数组中的某一个元素。
14. 引用标准库时,下面的说法你认为哪个是正确的:
(B) A) 语句#include “stdlib.h”是正确的,但会影响程序的执行速度
B) 语句#include <stdlib.h>是正确的,而去程序执行速度比#include “stdlib.h”要快
C) 语句#include <stdlib.h>和#include “stdlib.h”都是正确的,程序执行速度没有区别
D) 语句#include “stdlib.h”是错误的
注释:include ""是先从本地目录开始寻找,然后去寻找系统路径,而Include <> 相反先从系统目录,后从本地目录,
15.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为:
(C) #include< iostream. h>
int func(int n)
{
if 〔 n<1)return 1;
return 0;
}
void main()
{
18. 建立派生类对象时 ,3 种构造函数分别是 a( 基类的构造函数 ) 、 b( 成员对象的构造函数 ) 、 c( 派生类的构造函数 ) 这 3 种构造函数的调用顺序为 :
(A) 19. 如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是:
(D) 解析:C++中用友元函数重载运算符至少有一个参数,重载一目运算符要有一个参数,重载二目运算符要有两个参数。
#define F(X,Y) (X)--; (Y)++ (X)*(Y);
for( i = 0; i<5; i++) F(a,b)
21. 下列for循环的循环体执行次数为:
(A) for(int i(10), j(1); i=j=0; i++, j--)
A) 0; B) 1; C) 无限; D)以上都不对
char *p1= “123”, *p2 = “ABC”, str[50]= "xyz";
strcpy(str+2,strcat(p1,p2));
printf(“%d, %d, %d/n”, sizeof(str), sizeof(p), sizeof(n));
p = (char*) malloc(sizeof(char) * 20);
若从键盘输入:abc def, 则输出结果是
(A) 解析:q=p;因此p,q指向的是同一段内存.scanf先是把abc写到p指向的空间,再把def写到q指向的空间,也就是同一段空间,因此abc被def覆盖了.
int sz = sizeof(Thunder);
p = (char*) malloc (100);
strcat(str+2, “Downloader”);
A) Thunder Downloader B) under Downloader
C) Thunderownloader D) 程序崩溃
解析:
在函数中给指针分配空间,实际上是给指针的临时变量分配空间,函数结束后,这个临时变量也消亡,而str仍然为NULL,没有为其分配空间,此时strcpy()是肯定会出错的。 36. 函数调用exec((v1,v2), (v3,v4,v5),v6,v7);中,实参的个数是(A)
37. p是指向类X的成员m的指针,s是类X的一个对象。现要给m赋值,
(C)是正确的。 38. 函数fun(char* p) { return p;}的返回值是
(B) C) 一个临时存储单元的地址 D) 行参p自身的地址值
39.a,b均为不等于0的整形变量,以下关系式恒成立的是:
(C) A) a*b/a*b == 1 B) a/b*b/a == 1
C) a/b*b + a%b == a D) a/b*b == a
typedef struct ST{
long a; int b; char c[2]; } NEW;
A )以上的说明形式非法 B ) ST 是一个结构体类型
C ) NEW 是一个结构体类型 D ) NEW 是一个结构体变量
A) 9++ B) (x+y)++ C) c+++c+++c++ D) ++(a-b--)
42.在int b[ ][3] = {
{1},{3,2},{4,5,6},{0}};中,sizeof(b) =
(D)。
printf(“%d/n”,M(a+b,b+c,c+a));
int u=010, v= 0x10, w=10;
printf(“%d,%d,%d/n”,u,v,w);
A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,10
enum {a, b=5, c, d=4, e} k; k =c;
double x = 1, y1 = 2.1/1.9, y2 = 1.9/2.1;
A) 21 B) 22 C)无限循环 D) 程序崩溃
48. 用树形结构表示实体之间联系的模型是
(C) A) 关系模型 B) 网状模型 C) 层次模型 D)以上三个都是
char *s = “one”, a[5] = {0}, (*f1)(char *) = fun, ch;
A) *f1(&a); B) f1(*s); C) f1(&ch) D) ch = *f1(s); 要改成( *f1 ) (s) 才正确
A) 0 B) 46 C) 23 D) 以上都不对
转载地址:http://crbmb.baihongyu.com/