数组的使用方法

题目总数:62
总分数:310
时间:不限时
第 1 题    单选题

下列关于C++语言数组的叙述中,错误的是

A.

数组中所有元素的类型都相同

B.

定义数组时必须显式给定数组各元素的初始值

C.

定义多维数组时各维大小可以不相同

D.

可以通过下标来访问数组的各元素

第 2 题    单选题

下列函数模板实现了通用的数组元素求和操作,下划线处应填入的是

#include<iostream>

using namespace std;

template <class T>

T Sum(T *ar T.intN)

{

_______

for(int i=0;i<N;i++)

m+=arr[i];

return m;

}

int main(){

int a[5]=(1,2,3,4,5);

int m=Sum(a,5);

double b[5]={1.1,2.2,3.3,4.4,5.5};

double n=Sum(b,5);

cout<<m<<','<<n<<endl;

return 0;

}


A.

int m=0

B.

int m

C.

T m=0

D.

T m

第 3 题    单选题

下列关于this指针的叙述中,错误的是

A.

this指针必须显式说明

B.

类的非静态成员函数都有this指针

C.

类的静态成员函数没有this指针

D.

this指针是成员函数所属对象的指针

第 4 题    单选题

有变量定义为"int v1,v2:",若能以"fun(v1,&v2)"形式调用函数fun,则下列选项中,可以作为fun函数原型的是

A.

void fun(int *x: int &y);

B.

void fun(int &x: int &y);

C.

void fun(int &x: int *y);

D.

void fun(int *x: int *y);

第 5 题    单选题

若有如下定义:

struct student{

int num;

int age;

}stu[3]={{1001,20},{1002,19},{1003,21}},  *p=stu;

则下列表达式中,值为19的是


A.

P++->age

B.

(p++)->num

C.

(*++p).age

D.

(*p).age

第 6 题    单选题

下列函数的功能是

Void fun(char *p2,char *p1)

{

while((*p2=*p1)!='\0'){

p1++;

p2++;}

}

A.

将p1所指字符串的地址赋值给指针p2

B.

检查p1和p2所指字符串中是否有'\0'

C.

对p1和P2两个指针所指字符串进行比较

D.

将p1所指字符串复制到p2所指内存空间

第 7 题    单选题

有如下程序:

#include <iostream>

using namespace std;

void fun(int *x,int *y){

cout<<*x<<*y;

*x=3;

*y=4;}

int main(){

int x=1;

int *y=&x;

fun(y, &x) ;

cout<<x<<*y<<endl;

return 0;}

运行后的输出结果是


A.

3414

B.

1144

C.

4134

D.

3344

第 8 题    单选题

若有如下定义:

struct student{

int num;

}int age; stu[3]={{1001,20},{1002,19},{1003,21}}, *p=stu;则下列表达式中,值为1002的是


A.

(*++p).num

B.

(*p).num

C.

p++->num

D.

(p++)->age

第 9 题    单选题

执行下列语句序列后的输出结果是

int arr[ ]={1, 2, 3, 4, 5}, *ptr=arr ;

*(ptr+2)+=2;

cout<<*ptr<<',’<<*(ptr+2);

A.

2,4

B.

1,5

C.

3,5

D.

1,3

第 10 题    单选题

字符串常量"MY”的长度为

A.

1

B.

2

C.

3

D.

4

第 11 题    单选题

若有数组定义"int a[][3] ={1,2,3,4,5,6};",则a[1][0]的值是

A.

1

B.

2

C.

4

D.

5

第 12 题    单选题

若二维数组a有n列,则在a[i][j]之前的元素个数为

A.

j*n+i

B.

i*n+j

C.

i*n+j-1

D.

i*n+j+1

第 13 题    单选题

下列选项中,能够正确进行动态存储分配的是

A.

int p=new int;

B.

int p=new int (10);

C.

int *p=new int(10);

D.

int p[]=new int [10];

第 14 题    单选题

下列语句中,能够对具有5个元素的一维整型数组a进行正确初始化的是


A.

int a[5] = (0,0,0,0,0);

B.

int a(5) = {0,0,0,0,0};

C.

int a[]= {0};

D.

int a[] ={0,0,0,0,0};

第 15 题    单选题

下列语句中,不能对字符数组a进行正确初始化的是

A.

char a[5]="Happy";

B.

char a[6] = {'H', a','p', p,'y};

C.

char a[]="Happy";

D.

char a[] = {'H','a','p','p','y};

第 16 题    单选题

有如下程序:

#include<iostream>
using namespace std;
int main(){
int a[10];
for(int* p=a;p<a+10;p++) 
*p=(p-a)*2+1;
cout<<a[2]+a[8]<<endl;
return 0;}

运行时的输出结果是


A.

20

B.

21

C.

22

D.

23

第 17 题    单选题

下列关于new和delete运算符的叙述中,错误的是

A.

delete运算符用于释放用new分配的内存空间

B.

new运算符创建类对象时要调用构造函数

C.

使用new创建数组时可以为数组元素指定初值

D.

使用new和delete运算符可以动态建立或删除对象

第 18 题    单选题

下列关于new运算符的叙述中,错误的是

A.

new运算符用于申请动态存储空间

B.

new运算符返回指向申请到的动态存储空间的指针

C.

使用new运算符创建类对象时要调用类的构造函数

D.

使用new运算符创建数组时必须为数组元素指定初值

第 19 题    单选题

下列对一维数组a的定义中,语法正确的是

A.

int a(10);

B.

int n=7,a[n];

C.

int n; cin>>n;int a[n];

D.

const int size=10;int a[size];

第 20 题    单选题

若字符指针p所指向的字符串为“abcdefg",在执行语句

char* ap=new char[strlen(p)+1];之后,ap指向的字符数组的元素个数为


A.

9

B.

8

C.

7

D.

6

第 21 题    单选题

已知函数的原型是"void f(int*x, int &y);",变量v1、v2的定义是”intv1,v2.",下列调用语句中,正确的是

A.

f(v1,v2);

B.

f(v1,&v2);

C.

f(&v1,v2);

D.

f(&v1,&v2);

第 22 题    单选题

有如下语句序列:

int x=100,&r=x;

cout<<x<<'-'<<r<<endl:已知其中变量x的地址为0012FF7C,则执行该语句序列的输出结果为

A.

100-100

B.

100-0012FF7C

C.

0012FF7C-100

D.

0012FF7C-0012FF7C

第 23 题    单选题

要定义一个引用变量p,使用引用类MyClass的一个对象,正确的定义语句是

A.

MyClass p=MyClass;

B.

MyClass p=new MyClass;

C.

MyClass &p=new MyClass;

D.

MyClass a, &p=a;

第 24 题    单选题

要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是


A.

int x[3]={0,0,0};

B.

int x[]={0};

C.

static int x[3]={0};

D.

int x[]={0,0,0};

第 25 题    单选题

有如下类定义:

class A{

char *a;

public:

A():a(0) {}

A(char *aa){ //把aa所指字符串拷贝到a所指向的存储空间

a=______;

strcpy(a, aa) ;

}

`A() {delete []a;}

};

横线处应填写的表达式是


A.

new char[strlen(aa)+1]

B.

char[strlen(aa)+1]

C.

char[strlen(aa)]

D.

new char[sizeof(aa)-1]

第 26 题    单选题

已知数组arr的定义如下:

int arr[5]={1, 2,3,4,5}下列语句中输出结果不是2的是


A.

cout<<*arr+1<<endl;

B.

cout<<*(arr+1)<<endl;

C.

cout<<arr[1]<<endl;

D.

cout<<*arr<<endl;

第 27 题    单选题

已知有数组定义

char a[3][4];下列表达式中错误的是


A.

a[2]="WIN"

B.

strcpy(a[2],"WIN")

C.

a[2][3]='W'

D.

a[0][1]=a[0][1]

第 28 题    单选题

下列语句中,正确的是

A.

char *myString="Hello-World!"

B.

char myString="Hello-World!"

C.

char myString[11]="Hello-World!"

D.

char myString[12]="Hello-World!"

第 29 题    单选题

有如下定义

int a[5]=(1,3,5,7,9), *p=a;下列表达式中不能得到数值5的是


A.

a[2]

B.

a[3]

C.

*(p+2)

D.

*p+4

第 30 题    单选题

语句int*p=&k;定义了指针p ,与这个语句等效的语句序列是

A.

int *p;p=&k;

B.

int *p;p=k;

C.

int *p;*p=&k;

D.

int*p;*p=k;

第 31 题    单选题

有如下程序段:

int i=0,j=l;

int &r=i;   // 1

r=j;          //  2

int *p=&i; //  3

*p=&r;     //  4

其中会产生编译错误的语句是


A.

4

B.

3

C.

2

D.

1

第 32 题    单选题

有如下说明

int a[10]={1,2,3,4, 5,6,7,8, 9, 10}, *p=a;则数值为9的表达式是


A.

*p+9

B.

*(p+8)

C.

*p+=9

D.

p+8

第 33 题    单选题

有如下程序:

#include <iostream>

#include <iomanip >

using namespace std;

int main(){

cout.fill('*');

cout<<left<<setw(4)<<123<<"OK"<<endl;

return 0;}

执行这个程序的输出结果是


A.

123*OK

B.

123*OK**

C.

*123OK

D.

*123**OK

第 34 题    单选题

有如下程序

#include <iostream>

using namespace std;

int main( ){

int *p;

*p=9;

cout<<"The value at p:"<< *p;

return 0;

}


A.

编译时出现语法错误,不能生成可执行文件

B.

运行时一定输出:The value at P:9

C.

运行时一定输出: The value at P:*9

D.

运行时有可能出错

第 35 题    单选题

有如下程序:

#include <iostream>
void fun(int &x,int y)
{int t=x;x=y;y=t;}
int main(){
int a[2]=(23,42);
fun(a[1l, a[0]) ;
std::cout<<a[0]<<","<<a[1]<<std::endl;
return 0;}

执行后的输出结果是


A.

42,42

B.

23,23

C.

23,42

D.

42, 23

第 36 题    单选题

要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是

A.

int vect[]={30,50,-88};

B.

int vect[]={30,50,-88,0,0};

C.

int vect[5]=(30,50,-88};

D.

int vect[5]={30,50,-88,0,0};

第 37 题    单选题

已知n是一个int型变量,下列语句中错误的是

A.

long *p=new long[n]

B.

long p[n];

C.

long *p=new long(n)

D.

long p[10];

第 38 题    单选题

针对数组定义int data[10];,下列表述中错误的是

A.

用*data可以访问到数组的首元素

B.

用data[9]可以访问到数组的末元素

C.

用data[10]访问数组元素会超出数组边界

D.

data中共有10个元素,其首元素是data[1]

第 39 题    单选题

要定义数组A,使得其中每个元素的数据依次为:3、9、4、8000错误的定义语句是

A.

 int A[]= {3,9,4,8,0,0,0}

B.

int A[7]= {3,9,4,8,0,0,0}

C.

.int A[]={3,9,4.8}

D.

int A[7]={3,9,4,8}

第 40 题    单选题

已知数组A和指针p定义为: int A[20][10],*p;,要使p指向A的首元素,正确的赋值表达式是

A.

p=&A或 p=A[0][0]

B.

p=A[0] 或 p=&A[0][0]

C.

p=A或 p=&A[0][0]

D.

p=&A[0] 或 p=A[0][0]

第 41 题    单选题

当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为

A.

n-2

B.

n-1

C.

n

D.

n+1

第 42 题    单选题

已知:类A中一个成员函数说明如下:

void Set(A&a)

其中,A&的含义是


A.

指向类A的指针为a

B.

将a的地址值赋给变量Set

C.

a是类A对象的引用,用来作函数Set()的参数

D.

变量A与a按位与作为函数Set()的参数

第 43 题    单选题

在下列表示引用的方法中是正确的。已知: int m=10;

A.

int &x=m

B.

int &y=10

C.

int &z

D.

float &t=&m

第 44 题    单选题

对于"int*pa[5];"的描述中,————是正确的

A.

pa是一个指向数组的指针,所指向的数组是5个int型元素

B.

pa是一个指向某数组中第5个元素的指针,该元素是int型变量

C.

pa [5]表示某个元素的第5个元素的值

D.

pa是一个具有5个元素的指针数组,每个元素是一个int型指针

第 45 题    单选题

设"char **s;",以下正确的表达式是

A.

s="computer"

B.

*s="computer"

C.

**s="computer"

D.

s='c'

第 46 题    单选题

在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是

A.

1

B.

0

C.

6

D.

2

第 47 题    单选题

在下面的一维数组定义中_____有语法错误

A.

int a[]={1,2,3}

B.

int a[10]={0}

C.

int a[]

D.

int a[5]

第 48 题    单选题

下面程序的输出结果是

#include<iostream>

using namespace std;

int fun(char *);

int main(){

cout<<fun("hello") ;

return 0;}

int fun(char *s){

char *t=s;

while(*t!=’ \0')t++;

return (t-s);

}

A.

语法错误

B.

5

C.

6

D.

0

第 49 题    单选题

14、下列程序的输出结果是

#include<iostream>

using namespace std;

int n[][3]={10,20,30, 40, 50, 60} ;

int main(){

int (*p)[3];

p=n;

cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<endl;

return 0;}

A.

10 30 50

B.

10 20 30

C.

20 40 60

D.

10 30 60

第 50 题    单选题

下列程序的功能是将数组中的所有元素全部输出,对于程序中缺少的语句,下列语句填入其中不正确的是

int a[]=(1,2,3,4);

int *pa=a;

for(int i=0;i<4;i++)

————

A.

cout<<*a++<<' 

B.

cout<<*pa++<<' 

C.

cout<<*(a+i)<<' 

D.

cout<<*(pa+i)<<'

第 51 题    单选题

执行下面程序后,输出的结果是

#include<iostream>

using namespace std;

char *x[]=("First","Second","Third"};

void f(char *z[]){

cout<<*++z<<endl;

int main(){

char **y;

y=x;

f(y);

return 0;

}

A.

First

B.

Second

C.

Third

D.

S

第 52 题    单选题

设有如下程序

#include<iostream>

using namespace std;

int main(){

int **x,*y,z=10;

y=&z;

x=&y;

cout<<**x+1<<endl;

return 0;}

以上程序的输出结果是


A.

y的地址

B.

z的地址

C.

11

D.

运行错误

第 53 题    单选题

10、执行下列语句后,输出的结果是

#include<iostream>

using namespace std;

int main(){

int j;

int m[3][2]={10,20,30,40,50,60};

for(j=0;j<2;j++)

cout<<m[2-j][j]<<' ';

return 0;}


A.

10 30

B.

20 40

C.

50 40

D.

60 40

第 54 题    单选题

正确的定义一个整型数指针的语句是

A.

int *pa;

B.

int &pa;

C.

int pa*;

D.

int pa&;

第 55 题    单选题

定义一个整型数a的引用,正确的是

A.

int b=&a;

B.

int &b=&a,

C.

int b=a;

D.

int &b=a;

第 56 题    单选题

对于下列语句动态分配的内存,其释放语句正确的是

int *pa=new[10];

A.

delete pa[0];

B.

delete pa;

C.

delete *pa;

D.

delete Ipa;

第 57 题    单选题

执行下列语句后,屏幕的输出结果是

#include<iostream>

using namespace std;

int main(){

int a=5;

int *pa=&a;

int &b=a;

b++;

cout<<(*pa)++<<endl;

return 0;}


A.

5

B.

6

C.

7

D.

8

第 58 题    单选题

关于指针,下列说法错误的是

A.

指针中存放的实际上是内存单元的地址

B.

指针根据其所指向变量的类型的不同,其所占用内存大小也不同

C.

可以在指针定义的同时对其进行初始化

D.

相同类型的指针之间可以相互赋值

第 59 题    单选题

将数组int a[4]=(1,2,3,4}全部输出,下列语句正确的是

A.

cout<<a;

B.

cout<<a[4];

C.

for(int i=0;i<=4;i++)

cout<<a[i];


D.

for(int i=0;i<4;i++)

cout<<a[i];


第 60 题    单选题

关于动态存储分配,下列说法正确的是

A.

new和delete是C++语言中专门用于动态内存分配和释放的函数

B.

动态分配的内存空间也可以被初始化

C.

当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间

D.

当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new

第 61 题    单选题

下列程序的输出结果是

#include<iostream>

using namespace std;

int main()

{char a[]="Hello, World”;

char *ptr=a;

while(*ptr){

if(*ptr>='a'&&*ptr<='z')

cout<<char(*ptr+'A'-'a');

else cout<<*ptr;

ptr++;}

return 0;}


A.

HELLO,WORLD

B.

Hello,World

C.

hELLO,WORLD

D.

hello,world

第 62 题    单选题

己知: int m=10;在下列定义引用的语句中,正确的是

A.

int &x=m;

B.

int y=&m;

C.

int &z;

D.

int &t=&m;