• c++面试题


    http://blog.csdn.net/miaolinjie/article/details/8462440

    1、以下程序的运行结果是()

        int main(void) 
        { 
            printf("%s , %5.3s ","computer","computer"); 
            return 0; 
        } 

    A、computer , puter                                      B、computer , com
    C、computer , computer                                D、computer , compu.ter 

    B
    2、以下程序的功能是()

        #include<stdio.h> 
        int main(void) 
        { 
            FILE *fp; 
            long int n; 
            fp = fopen("wj.txt","rb"); 
            fseek(fp , 0 , SEEK_END); 
            n = ftell(fp); 
            fclose(fp); 
            printf("%ld",n); 
        } 

    A、计算文件wj.txt内容的字节数
    B、计算文件wj.txt的终止地址
    C、计算文件wj.txt的起始地址
    D、将文件指针定位到文件末尾

    A
    3、若输入B,则以下程序运行后的输出结果是()

        int main(void) 
        { 
            char grade; 
            scanf("%c",&grade); 
            switch(grade) 
            { 
            case 'A': 
                printf(">=85"); 
            case 'B': 
            case 'C': 
                printf(">=60"); 
            case 'D': 
                printf("<60"); 
            default: 
                printf("error."); 
            } 
        } 

    A、error.
    B、>=60
    C、>=85
    D、>=60<60error.

    D
    4、以下程序的输出结果是()

        int power(int x , int y); 
        int main(void) 
        { 
            float a = 2.6 , b = 3.4; 
            int p; 
            p = power((int)a , (int)b); 
            printf("%d ",p); 
            return 0; 
        } 
        int power(int x , int y) 
        { 
            int i , p = 1; 
            for(i = y ; i > 0 ; i--) 
                p *= x; 
            return p; 
        } 

    A、27                       B、9                             C、8                                  D、81

    8

    5、以下程序段的输出结果是()

        int p = 1234; 
            printf("%2d ",p); 

    A、12                       B、34                            C、1234                                 D、提示出错、无结果

    C

    6、以下程序运行后的输出结果是()

        int main(void) 
        { 
            int a; 
            char c = 10; 
            float f = 100.0; 
            double x; 
            a = f /= c *= (x=6.5); 
            printf("%d %d %3.1f %3.1f ",a,c,f,x); 
            return 0; 
        } 

    A、1     65     1         6.5
            return 0; 
        } 

    A、1 ,2                       B、1 , 1                                   C、0,2                              D、0,1     答案A
    8、以下语句的输出结果是()(主要考察逗号表达式)

        int main(void) 
        { 
            int x = 10 , y = 3 , z; 
         
            printf("%d ",z = (x%y , x/y)); 
            return 0; 
        } 

    A、4              B、0                   C、3                      D、1                   答案 C
    逗号表达式的一般形式:
    表达式1,表达式2,表达式3......表达式n
    它的值为表达式n的值。
    括号表达式要求按顺序逐一计算各个子表达式,并以最后一个子表达式的值作为括号表达式的结果,最后将该结果赋给变量。
    printf("%d %d %d",(a,b,c),b,c);
    则(a,b,c)是一个逗号表达式,它的值等于c的值。括号内的逗号不是参数间的分隔符而是逗号运算符。括号中的内容是一个整体,作为printf函数的第一个参数。
    9、设有语句  char a = '72'; 则变量a()
    A、包含2个字符                                          B、说明不合法
    C、包含1个字符                                          D、包含3个字符                      答案 C
    10、已知数据表A中每个元素距其最终位置不远,为节省时间,应该采用的算法是()
    A、直接选择排序
    B、堆排序
    C、快速排序
    D、直接插入排序    答案C
    11、以下程序段的运行结果是()

        int main(void) 
        { 
            char aa[][3] = {'a','b','c','d','e','f'}; 
            char (*p)[3] = aa; 
            p++; 
         
            printf("%c ",**p); 
            return 0; 
        } 

    A、b                        B、a                    C、c                    D、d     答案 D
    12、在C语言中,下列()是合法的标示符。   答案C
    A、4x                   B、1P234
    C、COUNT            D、short
    13、C语言中的标识符只能有字母、数字和下划线三种字符组成,且第一个字符()B
    A、必须为字母
    B、必须为字母或下划线
    C、必须不是字母或下划线
    D、必须为下划线
    14、下面程序的输出是()

        int main(void) 
        { 
            enum team { my , your = 9 , his , her = his + 3}; 
         
            printf("%d %d %d %d ",my , your , his , her); 
            return 0; 
        } 

    A、0     9    10   13                 B、0     8    11   12
    C、0     8    10   12                 D、0     8    12   9    答案A
    15、以下程序

        int main(int argc, char** argv)  
        { 
            int n = 0 , i; 
            for(i = 1 ; i < argc ; i++) 
                n = n * 10 + *argv[i]-'0'; 
            printf("%d ",n); 
            return 0; 
        } 

    经编译链接生成可执行文件tt.exe,若运行时输入以下命令行   tt   12   345   678,则程序运行的输出结果是()
    A、136              B、12345              C、12345678               D、12                               答案A
    解析:主函数的第一个参数argc为整型参数,记下从命令行输入参数的个数;第二个参数argv是一个字符型的指针数组,它的每一个元素分别指向命令行输入的各字符串。在本例中argc的值为4,argv[0]指向字符串“tt”,argv[1]指向字符串“12”,argv[2]指向字符串“345”, argv[3]指向字符串“678”。程序中,通过一个for循环,遍历了后面的三个参数字符串,每次将n自乘10,然后累加argv[i]-‘0’,即第i个参数字符串的首字符减去‘0’。  一个数字字符减去‘0’字符,即可得到这个数字字符的实际数值,因此三次循环的结果是让n的值变为136,故本题应该选择A。
    16、若已定义:int a[9],*p = a; 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是()
    A、++p            B、a+1            C、p+1            D、a++   答案D
    17、若执行下面的程序时,从键盘上输入5,则输出是()

        int main(int argc, char** argv)  
        { 
            int x; 
            scanf("%d",&x); 
            if(x++ > 5) 
                printf("%d ",x); 
            else 
                printf("%d ",x--); 
            return 0; 
        } 

    A、7                 B、4                   C、6                  D、5    答案为C
    18、已知有如下的变量定义,那么第二行的表达式的值是多少()(主要考察运算符的优先级)

        int main(void)  
        { 
            int x = 3 , y = 4 , z = 5; 
            !(x + y) + z-1 && y + z/2; 
            return 0; 
        } 

    A、6             B、2               C、0                  D、1    答案 D
    19、下列运算符函数中,肯定不属于类Value的成员函数是()
    A、Value operator/(Value);
    B、Value operator-(Value,Value);B
    C、Value operator+(Value);
    D、Value operator*(int);
    20、以下关于函数模板和模板函数的描述中,错误的是()
    A、函数模板是定义重载函数的一种工具
    B、模板函数在编译时不生成可执行代码 B
    C、函数模板是一组函数的样板
    D、模板函数是函数模板的一个实例
    21、以下关于文件操作的描述中,不正确的是()
    A、关闭文件的目的之一是释放内存中的文件对象
    B、关闭文件的目的之一是保证将输出的数据写入硬盘文件
    C、文件读写过程中,程序将直接与磁盘文件进行数据交换  C
    D、打开文件的目的是使文件对象与磁盘文件建立联系
    22、在重载一运算符时,若运算符函数的形参表中没有参数,则不可能的情况是()
    A、该运算符函数是类的友元函数  A
    B、该运算符函数有一个隐含的参数this
    C、该运算符函数是类的成员函数
    D、该运算符是一个单目运算符
    23、下列哪一个是析构函数的特征()
    A、析构函数定义只能在类体内
    B、一个类中只能定义一个析构函数 B
    C、析构函数名与类名不同
    D、析构函数可以有一个或多个参数
    24、数据流程图(DFD图)是()
    A、软件概要设计的工具
    B、软件详细设计的工具
    C、结构化方法的需求分析工具  C
    D、面向对象方法的需求分析工具
    25、执行 int a = ( 1 , 3 , 11); int b = a; 后,b的值是多少?
    A、11  A
    B、1
    C、3
    D、15
    E、{ 1 , 3 , 11}
    26、设a=1,b=2,则(a++)+b 和 a+++b 这两个表达式的值分别是()
    A、4 , 4
    B、3 , 4
    C、4 , 3
    D、3 , 3  D
    27、如果A类型是B类型的子类型,则A类型必然适应于B类型  B
    A、错                B、对
    28、条件语句不能作为多路分支语句。 B
    A、对                B、错
    29、下列while循环的次数是()
    [cpp] view plaincopy

        void main() 
        { 
            while(int i = 0) 
                i--; 
        } 

    A、无限 B
    B、0
    C、1
    D、5
    30、关于纯虚函数,下列表述正确的是()
    A、派生类必须实现基类的纯虚函数
    B、纯虚函数的声明总是以”=0“结束    B
    C、纯虚函数是给出实现版本(即无函数体定义)的虚函数
    D、含有纯虚函数的类一定是派生类
    31、下列静态数据成员的特性中,()是错误的
    A、引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
    B、说明静态数据成员时前边要加关键字static来修饰
    C、静态数据成员在类体外进行初始化
    D、静态数据成员不是所有对象所共有的  D
    32、关键词explicit的作用是什么?
    A、它使一个默认构造函数的声明变为强制性的
    B、它可以使一个变量存在主内存中而不是处理器的缓存中
    C、它可以防止单参数的构造函数被用于隐式转换  C
    33、下列输出字符‘A’的方法中,()是错误的
    A、char A = 'A';   cout<<A;
    B、cout<<'A';
    C、cout<<put('A');
    D、cout.put('A');  C
    34、对于int *pa[5]; 的描述,()是正确的。A
    A、pa是一个具有5个元素的指针数组,每个元素是一个int类型的指针;
    B、pa[5]表示某个数组的第5个元素的值;
    C、pa是一个指向数组的指针,所指向的数组是5个int类型的元素;
    D、pa是一个指向某个数组中第5个元素的指针,该元素是int类型的变量;
    35、C++中关于函数不正确的是()
    A、函数调用语句必须写在函数定义的前面  A
    B、函数可以没有返回值
    C、函数声明就是原型声明
    D、不允许嵌套定义
    A应该修改为:函数调用语句必须写在函数声明的前面
    36、若二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()
    A、n-1
    B、n+1  B
    C、2n
    D、n/2
    37、在多文件结构的程序中,通常把含有main()函数的文件称为()
    A、主文件 A
    B、头文件
    C、实现文件
    D、程序文件
    38、在以下一组运算符中,优先级最高的运算符是()
    A、 && A
    B、 =
    C、 <=
    D、 %
    39、关于read()函数的下列描述中,()是对的。
    A、该函数只能从键盘输入中获取字符串
    B、该函数只能按规定读取所指定的字符数
    C、该函数只能用于文本文件的操作中
    D、该函数所获取的字符多少是不受限制的  D
    40、有如下程序:

        #include<iostream> 
        using namespace std; 
         
        class MyClass 
        { 
        public: 
            MyClass(int i = 0) 
            { 
                cout<<i; 
            } 
            MyClass(const MyClass &x) 
            { 
                cout<<2; 
            } 
            MyClass& operator=(const MyClass &x) 
            { 
                cout<<3; 
                return *this; 
            } 
            ~MyClass() 
            { 
                cout<<4; 
            } 
        }; 
         
        int  main()  
        { 
            MyClass obj1(1) , obj2(2) , obj3(obj1); 
            return 0; 
        } 

    运行时的输出结果是()  C
    A、11214444
    B、11114444
    C、122444
    D、11214445
    E、121444
    41、以下程序段的输出结果是()

        #include<iostream> 
        using namespace std; 
         
        class A 
        { 
        public: 
            A(int i ) 
            { 
                cout<<"A "; 
            } 
            ~A()  { } 
        }; 
        class B 
        { 
        public: 
            B(int j ) 
            { 
                cout<<"B "; 
            } 
            ~B()  { } 
        }; 
        class C 
        { 
        public: 
            C(int k ) 
            { 
                cout<<"C "; 
            } 
            ~C()  {    cout<<"~C ";   } 
        }; 
         
        class D : public C 
        { 
        public: 
            D(int i , int j , int k ) : a(i) , b(j) , C(k) 
            { 
                cout<<"D "; 
            } 
            ~D()  {    cout<<"~D ";   } 
        private: 
            B b; 
            A a; 
        }; 
         
        int  main()  
        { 
            C *pc = new D(1 , 2 , 3); 
            delete pc; 
            return 0; 
        } 

    A、A  B  C  D ~D
    B、A  B  C  D ~C
    C、C  B  A  D ~D
    D、C  B  A  D ~C
    42、关于运算符重载,下列说法正确的是()
    A、重载时,运算符的结合性可以改变
    B、重载时,运算符的优先级可以改变
    C、重载时,运算符的功能可以改变
    D、重载时,运算符的操作数个数可以改变
    43、下面哪一个不是由标准模板库提供的合法的哈希表?
    A、hash_multiset
    B、hash_table
    C、hash_set
    D、hash_multimap
    E、hash_map
    44、int x = 2 , y = 3 , z = 4; 则表达式!x+y>z的值为()
    A、1
    B、FALSE
    C、TRUE
    D、0
    45、下面的程序段的输出结果是()
    [cpp] view plaincopy

        void main() 
        { 
            char *x = "abcd"; 
            x += 2; 
            cout<<x; 
        } 

    A、指针变量x的地址
    B、字符c的地址
    C、c
    D、cd
    46、下面对于友元函数的描述正确的是()
    A、友元函数不能访问类的私有成员
    B、友元函数是类的成员
    C、友元函数的实现必须在类的内部定义
    D、友元函数破坏了类的封装性和隐藏性
    47、内存释放的原则是谁申请谁释放()
    A、错                        B、对
    48、已知int a , *pa=&a; 输出指针pa十进制的地址值的方法是()
    A、cout<<*pa;
    B、cout<<long(&pa);
    C、cout<<pa;
    D、cout<<&pa;
    49、被非静态成员函数访问的类的数据成员()
    A、不可能是类的静态数据成员
    B、只能是类的非静态数据成员
    C、只能是类的静态数据成员
    D、可以是非静态数据成员或静态数据成员
    50、有如下程序
    [cpp] view plaincopy

        class Name 
        { 
            char name[20]; 
        public: 
            Name() 
            { 
                strcpy(name , ""); 
                cout<<'?'; 
            } 
            Name(char *fname) 
            { 
                strcpy(name , fname); 
                cout<<'?'; 
            } 
        }; 
        void main() 
        { 
            Name names[3] = {Name("张三") , Name("李四") }; 
        } 

    运行此程序输出符号?的个数是()
    A、1
    B、2
    C、0
    D、3

  • 相关阅读:
    基于sshpass批量实现主机间的key验证脚本
    一键安装mysql5.7.30脚本
    centos8网卡名称修改
    mysql分库备份脚本
    centos一键二进制编译安装mariadb-10.2.31脚本
    chrony时间同步服务简介及配置
    linux基于key验证
    expect 脚本语言中交互处理常用命令
    shell中数值测试和算术表达式比较
    JAVA Math的简单运用
  • 原文地址:https://www.cnblogs.com/heruonan/p/8428033.html
Copyright © 2020-2023  润新知