第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 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 int a[N][N]={ 0 }, i, j, k; for( k=1, 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 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; i 135 5. #include 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 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 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;