第四章习题答案 下载本文

第4章 数组

4.1 选择题

1.以下对一维数组 a 的定义正确的是( C )。 (A)int n = 5, a[n];

(B)int a(5);

(D)int n; cin>>n; int a[n]; (B)int a[] = { 0, 1, 2 };

(C)const int N = 5; int a[N]; (A)int a[3] = { 0, 1, 2, 3 };

2.下列数组定义语句中,不合法的是( A )。

(C)int a[3] = { 0, 1, 2 }; (D)int a[3] = { 0 }; 3.已知 int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, ?p = a;,不能表示数组 a 中元素的式子是( C )。 ..(A)?a

(B)?p (B)?(++p)

(C)a

(D)a[ p?a ]

4.已知 int a[] = { 0,2,4,6,8,10 }, ?p = a+1; 其值等于0的表达式是( D )。 (A)? (p++)

(C)?(p??)

(D)?(??p)

5.以下不能对二维数组a进行正确初始化的语句是( C )。 (A)int a[2][3] = { 0 };

(B)int a[][3] = { { 0,1 }, { 0 } };

(C)int a[2][3] = { { 0, 1 }, { 2, 3 }, { 4, 5 } }; (D)int a[][3] = { 0, 1, 2, 3, 4, 5 };

6.已知int a[][3] = { { 0, 1 }, { 2, 3, 4 }, { 5, 6 }, { 7 } }; 则 a[2][1]的值是( C )。 (A)0

(B)2

(C)6

(D)7

7.已知int a[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 不能表示数组元素a[2][1]的地址是( B )。 (A)&a[2][1] (A)t

(B)?(a[2]+1) (C)a[2]+1 (B)一个地址值

(C)java

(D)?(a+2)+1

(D)javac++

8.已知char ?a[]={ \,则 cout<

(B)数组的第一个元素值 (D)数组元素的个数

10.设有char ?s1=\?s2=\?s3=s1;,下列表达式中值等于true的是( D )。 (A)strcmp(s1,s2) (B)strcmp(s1,s3)==1 (C)strcmp(s2,s3)==-1(D)strcmp(s1,s3) ==0 11.设char ?s1, ?s2;分别指向两个字符串,可以判断字符串s1和s2是否相等的表达式为( D )。 (A)s1=s2

(B)strlen(s1,s2) (D)strcmp(s1,s2)==0 (B)strcmp(s1,s2)==0 (D)strcmp(s2,s1)>0

(C)strcpy(s1,s2)==0 (A)strcmp(s1,s2)<0 (C)strcmp(s1,s2)>0

12.设char ?s1, ?s2;分别指向两个字符串,可以判断字符串s1是否大于字符串s2的表达式为( C )。

4.2 阅读下列程序,写出运行结果

1.

#include

using namespace std; int main() {

int i, count=0, sum=0; double average;

int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for( i=0; i<10; i++ ) {

if( a[i] % 2 == 0 )

continue; sum += a[ i ]; count ++; }

average = sum/count;

cout << \} 【解答】

conut = 5 average = 5 2.

#include using namespace std; int main() {

int a[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int ?p = a, sum = 0; for(; p

sum += ?p;

cout << \} 【解答】

sum = 20 3.

#include #include using namespace std; const int N = 5; int main() {

int a[N][N]={ 0 }, i, j, k; for( k=1, i=0; i= 0; j--, k++ ) a[j][i - j ] = k; for( i=0; i

for( j=0; j

cout << setw( 3 ) << a[i][j]; cout << endl; } } 【解答】

1 3 6 10 15 2 5 9 14 0 4 8 13 0 0 7 12 0 0 0 11 0 0 0 0

4.

#include using namespace std; int f(int [],int); int main() {

int a[] = { -1, 3, 5, -7, 9, -11 }; cout << f( a, 6 ) << endl; }

int f( int a[], int size ) {

int i, t=1;

for( i=0; i0 ) ?= a[i]; return t; } 【解答】

135 5.

#include using namespace std; int f( int [][3], int, int ); int main() {

int a[][3] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; cout << f( a, 3, 3 ) << endl; }

int f( int a[][3], int row, int col ) {

int i, j, t=1;

for( i=0; i

{

a[i][j]++;

if( i == j ) t ?= a[i][j]; }

return t; } 【解答】

45 6.

#include using namespace std; void test1( int ?a1 ) {

a1 = new int( 5 );

cout << \?a1 = \?a1 << endl; }

void test2(int ? & a2) {

a2 = new int( 5 );

cout << \?a2 = \?a2 << endl; } int main() {

int ?p = new int( 1 ); test1( p );

cout << \?p1 = \?p << endl; test2( p );

cout << \?p2 = \?p << endl; } 【解答】

*a1= 5 test1: *p1= 1 *a2= 5 test2: *p2= 5 7.

#include using namespace std; int main() {

char s[] = \int i; char c;

for( i = 1; ( c=s[i] ) != '\\0'; i ++ ) {

switch( c ) {

case 'a' : cout << '%'; continue; case 'b' : cout << '$'; break; case 'c' : cout << '?'; break; case 'd' : continue;