4399 C++测试题
一.选择题: 
1.以下代码执行的结果是什么?  a
void main() 
{
     int i; 
    char a[]="String";
    char *p="New Sring";
    char *Temp;
    Temp=a;
    a=malloc(strlen(p) + 1);
    strcpy(a,p);
    p = malloc(strlen(Temp) + 1);
    strcpy(p,Temp);
    printf("(%s, %s)",a,p);
    free(p);
    free(a);
}
a) 交换& a的内容,同时打印出 New string, string
b) 在第8行生成编译错误
c) 在第5行生成编译期错误 
d) 在第7行生成编译期错误 e) 在第1行生成编译期错误 
2. 下面程序的执行结果是?  b
char *gxxx()
{
    static char xxx[1024];
    return xxx;
void main()
{
    char *g="string";
    strcpy(gxxx(),g);
    g = gxxx();
    strcpy(g,"oldstring");
    printf("The string is : %s",gxxx());
}
a) The string is : string 
b) The string is :Oldstring
c) 产生执行期错误
d) 产生编译期语法错误
e) 以上都不对
3. 以下程序的执行结果是?  c 
void myalloc(char *x, int n)
{
    x= (char *)malloc(n*sizeof(char));
    memset(x,\0,n*sizeof(char));七一活动计划
}
main()
{
    char *g="String";
    myalloc(g,20);
    strcpy(g,"Oldstring");
    printf("The string is %s",g);
a) The string is : String
b) 执行期错误
c) The string is : Oldstring
d) 编译期语法错误
e) 以上都不对
 
4.以下代码的执行结果是?  c 
void main()
{
    char p[]="String";
    int x=0;
    if(p=="String")
    {
        printf("Pass 1");
        if(p[sizeof(p)-2]=='g')
            printf("Pass 2");
        else
            printf("Fail 2");
    }
    else
    {
        printf("Fail 1");
        if(p[sizeof(p)-2]=='g')
            printf("Pass 2");
        else
            printf("Fail 2");
    }
a) Pass 1, Pass 2
b) Fail 1, Fail 2
c) Pass 1, Fail 2
d) Fail 1, Pass 2
e) 编译器语法错 
 
5. 对于下面的代码,哪个说法是对的?   b 
const char *p; 以及 char * const p; 
a) 两个字符串内容都不可修改 
b) 第一个不可修改字符串内容,第二个,不可假改指针内容
c) 两个指针都不可修改 
d) 第一个不可修改指针,第二个,不可修改字符串内容
e) 以上说法都不对
6. 以下代码的输出是? c
void main()
{
    char c=-64;
    int i=-32;
    unsigned int u =-16;
    if(c>i)
    {
        printf("pass1,");
        if(c<u)
            printf("pass2");
        else
            printf("Fail2");
    }
    else
    {
        printf("Fail1);
        if(i<u)
            printf("pass2");
        else
            printf("Fail2")
    } 
a) Pass1,Pass2
b) Pass1,Fail2
c) Fail1,Pass2
d) Fail1,Fail2
e) 以上都不对
 
7. 以下代码的输出是  e 
void main()
{
    int i=0;
    for(i=0;i<20;i++)
    {
        switch(i)
        {
        case 0:
            i+=5;
        case 1:
            i+=2;
        case 5:
            i+=5;
        default: 
            i+=4;
        break;
        }
        printf("%d,",i);
    }
}
a) 0,5,9,13,17
b) 5,9,13,17
c) 12,17,22
d) 16,21
e) 语法错误 
 
8. 下面哪个说法是对的? d 
class A
    virtual void func1();
    void func2();
Class B: public class A
    void func1()
    {
        cout << "fun1 in class B" << endl;
    }
    virtual void func2()
    {
        cout << "fun2 in class B" << endl;
    }
}
a) A中的func1B中的func2都是虚函数
b) A中的func1B中的func2都不是虚函数如何把多张照片合成一张. 
c) A中的func2是虚函数.B中的func1不是虚函数
d) A中的func2不是虚函数,B中的func1是虚函数
9. coutI/O流库预定义的什么?.  b 
a)
关于莲的故事b)对象
c)包含文件
d)常量 
10. 32位系统下,已知int a,*pa=&a;,输出指针pa十进制的地址值的方法是? d 
a)cout<<pa;
b)cout<<*pa;
c)cout<<&pa;
d)cout<<unsigned long(&pa);
11. 32位系统下,有一个类A定义如下:
Class A
{
    Int M1; 
    Float M2; 
    Virtual void F1( void ); 
    Void  F2( void );
    Static void F3( void ); 
}; 
定义一个A的实例a,请问a在常规的编译实现下,所占的内存空间有多大b
a)8
b)12
c)16
d)20
e)24
f) 以上答案都不对
12. 32位系统下,有一个类A定义如下: 
定义一个A的实例a,请问a在常规的编译实现下,所占的内存空间有多大
Class A
{
    Int M1; 
    Float M2; 
    Static Float M3; 
    Static const Int M4; 
    Enum M5
    {
        E1 = 1; 
        E2 = 2;
    } 
}; 
定义一个A的实例a,请问a在常规的编译实现下,所占的内存空间有多大 d
a)8   
b) 12 
c)16 
d)20 
e)24 
f) 以上答案都不对 
13. 已知类型定义如下:
class A
    int x; 
    virtual ~A(){}
};
class B: public A
{
    int y;
}
以下表达式的输出为:  c 
A* pa = New A; //假定pa赋值后的地址为0x111111;
B* pb = dynamic_cast< B*>( pa );
寇仲宋玉致请问以上代码执行后,pb的值是:
a)0 
b)pa相同,即为0x111111 
c)抛出异常
d)pa地址上,进行类型换算偏移后的地址 
e)以上结果都不对 
14. 已知类型定义如下:
class A
    int x; 
    virtual ~A(){}
}; 
class B: public A
{
    int y;
}
以下表达式的输出为
A* pa = New A; //假定pa赋值后的地址为0x111111;
B& b = dynamic_cast< B&>(* pa ); 
请问以上代码执行后, b的地址是:  c
a)0 
b)pa相同,即为0x111111 
c)抛出异常 
d)pa地址上,进行类型换算偏移后的地址 
e)以上结果都不对
15. 关于this指针的说法错误的是梅花的句子唯美短句  d 
a) this指针不需要显示说明
b) 虚函数拥有this指针
c) 成员函数拥有this指针
d) 静态成员函数拥有this指针
董洁的老公
16. 下面对构造函数的不正确描述是 a 
a) 系统可以提供默认的构造函数
b) 构造函数可以有参数,所以可以有返回值
c) 构造函数可以重载
d) 构造函数可以设置默认参数
17.下列对模板的声明,正确的是  c 
a) template <T>
b) template <class T1,T2> 
c) template <class T1,class T2>
d) template <class T1;class T2> 
 
18. 什么函数只能访问静态成员变量。 b   
a) 静态函数
b) 虚函数
c) 构造函数
d) 析构函数
19 假定类定义如下:
Class A
{
    ~A(void){}
}
Class B
{
    ~B( void){}
}
Class C :public B
    ~C( void ){}
    A a;
现有C的实例c,则当C被销毁时,调用的析构函数的顺序为   e 
a)  ~C(), ~A(), ~B(); 
b)  ~A(),~C(),~B() 
c)  ~B(),~A(),~C() 
d)  ~C(),~B(),~A() 
e)  ~A,~B(),~C() 
f)  ~B(),~C(),~A()   
20假定类定义如下
Class A 
{
    A(void){}
Class B 
{
    B( void){} 
Class C :public B 
    C( void ){} 
    A a; 
现有C的实例c,则当C被创建时,调用的建构函数的顺序为   a 
a)   C(),A(),B(); 
b)   A(),C(),B() 
c)   B(),A(),C() 
d)   C(),B(),A() 
e)   A, B(),C() 
f)   B(),C(),A()
二.问答题 
1.以下程序的输出是
#include<iostream.h> 
#define MAX(a,b)  a > b ? a : b
void main ()