《C++数组》习题


1

《C++数组》习题

学号

姓名

一、 选择题

1、下列对字符数组进行初始化的语句正确的是

A.char a[]= "Hello";

B.char a[][]= {'H','e','l','l','o'};

C.char a[5]="Hello";

D.char a[2][5]= {"Hello","World"};

2、以下一维数组 a 的正确定义是

A.int a(10) ;

B.int n=10,a[n];

C.int n;

D.#define size 10

cin>>n;

int a[size];

int a[n];

3、以下对二维数组 a 进行不正确初始化的是

A.int a[2][3]={0};

B.int a[][3]={{1,2},{0}};

C.int a[2][3]={{1,2},{3,4},{5,6}};

D.int a[][3]={1,2,3,4,5,6);

4、执行以下程序后,s 的值为

int a[]={5,3,7,2,1,5,4,lO);

int s=0,k;

for(k=0;k<8;k+=2)

s+=*(a+k);

A.17 B.27 C.13

D.无定值

5、为了判断两个字符串 sl 和 s2 是否相等,应当使用

A.if (s1==s2)

1

2

B.if (s1=s2)

C.if(strcpy(S1,s2))

D.if(strcmp(s1,s2)==O)

6、有定义 int a[2][5];,若 a[0][1]的地址为 x,则 a[0][O]、a[1][3]地址分

别为(假设一个整型数据占用两个字节的内存空间):

A.x-2,x+14

B.x-1,x+7

C.x+1,x+7

D.x-1,x+14

7、若有定义 float a[m][n];,且 a[1][1]的地址为 x,每个 float 元素占用 4 个字节,则 a[il[j]的地址为

A.x+4*(i-1)*n+4*(j-1)

B.x+(i-1)*n+(j-1)

C.x+4*(i-1)*j+(j-1)

D.x+4*i*j+4*j

二、 填空题

1、char st[20] = "SEU\0\t\\";

cout<<sizeof(st)<<strlen(st)<<endl;则输出的内容是

st 数组定义中的 20 去掉,则输出的内容是



,如将

三、 程序阅读题 1、写出如下程序的运行结果。 int main() {
int i,j; int a[10]={1,1,1,1,1,1,1,1,1,1}; for(i=0; i<10;i++)
for(j=0;j<i; j++) a[i]=a[i]+a[j];
for(i=0; i<10; i++) cout<<a[i]<<'\t';
cout<<'\n'; return 0; } 2、写出如下程序的运行结果。 int main() { int a[3][3] = {1,0,2,2,2,0,0,1,0}; int i,j; for(i=0; i<3; i++)
for(j=0; j<3; j++) {
a[i][j]=a[a[i][j]][a[j][i]]; cout<<a[i][j]<<'\t';

2

3

} return 0; }

四、 程序填空题

1、定义函数,在一维数组中找出最大值和最小值,主函数中调用该函数并输出

数组的最大最小元素。

void cal(int a[],int n,

){

max=a[0];

;

for(int i=1;i<n;i++){

if(a[i]>max)

;

if(a[i]<min) min=a[i];

}

}

int main(){

int a[10];

cout<<"输入 10 个整数:"<<endl;

for(int i=0;i<10;i++) cin>>a[i];

;

cal(

,max,min);

for(i=0;i<10;i++) cout<<a[i]<<" ";

cout<<endl;

cout<<"max="<<max<<",min="<<min<<endl;

return 0;

}

2、下列函数 inverse 的功能是使一个字符串按逆序存放,请填空。

void inverse(char str[])

{

char m;

int i,j;

for(i=0,j=strlen(str);

;i++,

)

{

m=str[i];

str[i]=

;

;

}

}

3、下列程序用于判断字符串 S 是否对称,对称时返回 1,否则返回 0。如 f(”

abba”)返回 1,而 f("abab")返回 0。请填空。

int f(

)

{

int i=0,j=0;

while(s[j]!='\0')

;

3

4

for(j--;i<j&&s[i]==s[j];i++,j--);

return(

);

}

4、下面函数是寻找二维数组中每一行的最大值,请填空。

#define N 5

#define M 5

void max(int a[N][M])

{

int i,j,p;

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

{

;

for(j=1;j<M;j++)

if(a[i][p]<a[i][j])

;

cout<<i<<":"<<a[i][p]<<endl;

}

}

5、下面的程序是把十进制数转换为某个指定的进制,请填空。

int main()

{

int num[65],i=0,base;

long n;

cout<<"input a decimal number:";

cin>>n;

cout<<"input base number:";

cin>>base;

do

{

;

i++;

n=n/base;

}while(

);

for(

;i>=0;i--)

cout<<num[i];

return 0;

}

4


相关文档

c语言 数组习题
C数组习题
c语言数组习题
C语言数组练习题
C语言数组练编程习题
C语言习题课(数组)
C语言习题集合4(数组)
C语言之习题课数组
C语言第六章数组习题答案
C语言习题(学完数组后)
电脑版