C++选择题带答案

1.下列关于定义一个指向double型变量的指针,正确的是(  B  )。

Aint a(5)double *pd=a                   Bdouble d(2.5)*pd=&d

Cdouble d(2.5)*pd=d                     Ddouble a(2.5)pd=d

2.下列关于创建一个int型变量的引用,正确的是( A   )。

Aint a(3)&ra=a                               Bint a(3),&ra=&a

Cdouble d(3.1)int &rd=d               Dint a(3)ra=a

3.下列关于指针概念的描述中,错误的是()。

A.指针中存放的是某变量或对象的地址值

B.指针的类型是它所存放的数值的类型

C.指针是变量,它也具有一个内存地址值

D.指针的值是可以改变的

4.下列关于引用概念的描述中,错误的是(  A  )。

A.引用是变量,它具有值和地址值

B.引用不可以作数组元素

C.引用是变量的别名

D.创建引用时必须进行初始化

5.已知:int a[5]*p=a;则与++*p相同的是(  D  )。

A*++p                       Ba[0]

C*p++                       D++a[0]

6.已知:int a[ ]={1,2,3,4,5}*p=a;在下列数组元素地址的表示中,正确的是(  C  )。

A&(a+1)                                            B&(p+1)

C&p[2]                                              D*p++

7.已知:int a(5)&ra=a;下列描述中,错误的是(  D  )。

Ara是变量a的引用,即为变量的别名             

Bra的值为5

Cra的地址值为&a                             

D改变ra的值为10,变量a值仍为5

8若有以下定义,则说法错误的是( D )

  int a=100,*p=&a ;

A.声明变量p,其中*表示p是一个指针变量

B.变量p经初始化,获得变量a的地址

C.变量p只可以指向一个整形变量

D.变量p的值为100

9若有以下定义,则赋值正确的是(C  )

int a ,b , *p;

float c, *q;

Ap=&c   Bq=p     Cp=NULL    Dq=new int

10如果x是整型变量,则合法的形式是( D    )

A.&(x+5)           B*x             C&*x            D*&x

11若要建立如下关系,错误的语句组是( A  )

 A.int *p=&x, x;   *p=10;            B. int x, *p=&x;    *p=10;         

C.int *p, x=10;  p=&x;            D.int *p, x; p=&x ; x=10;               

12若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则(  B    )不是对a数组元素的正确引用(其中0≤i<10)。

Ap[i]         B*(*(a+i))                    Ca[p-a]                  D*(&a[i])

13以下程序的输出结果是( B    )

#include <iostream.h>

void main()

{ int a[3]={10,15,20};        // a[0]=10,a[1]=15,a[2]=20

int *p1=a,*p2=&a[1];        // p1a[0]地址,p2a[1]地址

      *p1=*(p2-1)+5;          // a[0]=15,a[1]=15,a[2]=20

*(p1+1)=*p1-5;             // a[0]=15,a[1]=10,a[2]=20

cout<<a[1]<<endl;

}

A5           B10                 C15          D20

14以下程序的输出结果是(  C    )

#include <iostream.h>

void fun(int x,int y,int *cp,int *dp)

{   cp=x+y;     

       dp=x-y;     

}

int main()

{   int a,b,c,d;

a=30,b=50;

fun(a,b,&c,&d);

cout<<c<<","<<d<<endl;

return 0;

}

A50,30          B30,50            C.80,-20              D.80,20

15要求函数的功能是交换xy中的值,且通过正确调用返回交换结果。能正确执行此功能的函数是(   A    )

Afuna(int *x,int *y)                               Bfunb(int x,int y)               

     { int *p=new int ;                                         { int t;

*p=*x;                                                       t=x;

     *x=*y;                                                        x=y;

     *y=*p;  }                                                    y=t;  }

 

Cfunc(int *x,int *y)                               Dfund(int x,int y)               

     {     *x=*y;                                                   {     *x=*x+*y;         

        *y=*x;                                                           *y=*x-*y;

}                                                                   *x=*x-*y; }

16以下程序的输出结果是(  C   )

#include <iostream.h>

void main()

{      char *s="12134211";

       int v1=0,v2=0,v3=0,v4=0;

       for (int k=0;s[k];k++)

              switch(s[k])

              {     default:v4++;

                     case '1':v1++;

                     case '3':v3++;

                     case '2':v2++;

              }

     cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;

}

A4,2,1,1   B4,9,3,1             C5,8,6,1              D8,8,8,8

答案C

分析:C++语言中的switch语句中,如果没有break语句,一旦满足某一条件进入,就一直运行到switch的结束,如在本题s[1]=’1’,除v11之外,v2v3都要加1。故运行结果是“5,861”,选择C。如果程序做下面修改:

­­ switch(s[k])

              {     default:v4++; break;

                     case '1':v1++; break;

                     case '3':v3++;break;

                     case '2':v2++;break;

              }

运行结果是“4,2,1,1”,选择A。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值