C/C++易错题解析

来源:互联网 发布:政府大数据解决方案 编辑:程序博客网 时间:2024/05/21 10:40

1.下列程序的输出结果为:(B)  
#include<iostream.h>
void main()
{
char* a[ ] = { "hello", "the", "world"};

char** pa = a;

pa++;

cout<<”*pa<<endl;

}

A) theworld    B) the   C) ello    D) ellotheworld

分析:考察二维数组和指针的题目,pa++指针直接就指向二维数组表示的矩阵中第二行了,输出结果为B

2.下面关于数组的初始化正确的是:(B)

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中字符变量不能存放字符串,C中维度错了,D和A的问题一样

3. 下列运算符中,在C++语言中不能重载的是:(C)

A) *                B) >=             C) ::              D) delete

4.下面关于多态性的描述,错误的是:(C)

A) C++语言的多态性分为编译时的多态性和运行时的多态性

B) 编译时的多态性可通过函数重载实现

C) 运行时的多态性可通过模板和虚函数实现

D) 实现运行时多态性的机制称为动态绑定

分析:模板的是编译时多态性,而虚函数是运行时。

5.引用标准库时,下面的说法你认为哪个是正确的:(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<> 相反先从系统目录,后从本地目录。

6.设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)

A) 0               B) 1               C) 2               D) 7

分析:m=a>b后m=0,表达式为假,&&后半部分不会操作,因此n为初始值2

7.下列for循环的循环体执行次数为:(A)

for(int i(10), j(1); i=j=0; i++, j--)

A) 0;       B) 1;       C) 无限;        D)以上都不对

分析:条件判断为假,不执行

8.

有下列程序段:

char *p, *q;

p = (char*) malloc(sizeof(char) * 20);

q = p;

scanf(“%s %s”, p, q);

printf(“%s %s/n”, p, q);

若从键盘输入:abc def, 则输出结果是(A)

A) def def                     B) abc def

C) abc d                       D) d d

分析:q=p;因此p,q指向的是同一段内存.scanf先是把abc写到p指向的空间,再把def写到q指向的空间,也就是同一段空间,因此abc被def覆盖了。

9.函数fun(char* p) { return p;}的返回值是(B)

A)无确切值                                              B) 行参p中存放的地址值

C) 一个临时存储单元的地址                               D) 行参p自身的地址值

10.设有如下说明:

       typedef struct ST{ long a; int b; char c[2]; } NEW;

则下面叙述中正确的是:(C)

A)以上的说明形式非法                            B)ST是一个结构体类型
C)NEW是一个结构体类型                           D)NEW是一个结构体变量 

11. 下列表达式正确的是:(C)

A) 9++                  B) (x+y)++              C) c+++c+++c++                D) ++(a-b--)

12.在int b[ ][3] = {{1},{3,2},{4,5,6},{0}};中,sizeof(b) = (D)

A) 4                      B) 12                    C) 28                    D) 48

 13若有以下定义和语句:

int u=010, v= 0x10, w=10;

printf(“%d,%d,%d/n”,u,v,w);

则输出结果是:(A)

A)8,16,10     B)10,10,10      C)8,8,10      D)8,10,10

分析:各种进制之间的转换,简单题,0x表示十六进制,0表示八进制。

 14有如下程序段:

int i, n = 0;

double x = 1, y1 = 2.1/1.9, y2 = 1.9/2.1;

for( i = 1; i<22; i++)

x = x*y1;

while( x!=1.0)

{

x =x*y2;

n++;

}

printf(“%d/n”, n);

请问执行结果是:(A)

A) 21                    B) 22                    C)无限循环                  D) 程序崩溃

15用树形结构表示实体之间联系的模型是(C)

A) 关系模型                       B) 网状模型                C) 层次模型                D)以上三个都是

16.用递归将合数分解为质因数相乘形式,如12=2*2*3(因为分解质因数是一个可递归的过程)

void toPrimMulti(int n, int m) {
 
    if (n >= m) {
 
        while (n % m != 0)
            m++;
        n /= m;
        printf("%d ", m);
        toPrimMulti(n, m);
    }
 
}

void main()

{
toPrimMulti(12, 2);
}

运行结果: 

17.有语句char str[] = "abcde";请问表达式sizeof(str)的值是(D)
A、1              B、4               C、5                D、6

18.函数的局部变量所需存储空间,是在哪里分配的(D)

A、进程的数据段      B、进程的栈上    C、进程的堆上       D、以上都可以

19在使用浏览器打开一个网页的过程中,浏览器会使用的网络协议包括(ABC)

A、DNS         B、TCP        C、HTTP            D、Telnet

20.下列关于虚函数的说法正确的是(BCD)

A、在构造函数中调用类自己的虚函数,虚函数的动态绑定机制还会生效。

B、在析构函数中调用类自己的虚函数,虚函数的动态绑定机制还会生效。

C、静态函数不可以是虚函数

D、虚函数可以声明为inline

原链接:http://www.lampw3c.com/?p=4749

0 0
原创粉丝点击