计算机程序设计基础(C++)(景红版)课后全部习题集与参考答案解析 下载本文

(C) 结束本次循环,直接进行循环条件的判断 (D) 循环执行完后,结束循环 11. 下列程序段循环( )次。 int x=-10; while (++x) { } (A) 9 (B) 10 (C) 11 (D) 无限 12. 在下列运算符中,优先级最低的是( )。

(A) || (B)!= (C) < (D) + 13. 下列描述正确的是( )。

(A) 表示m>n为false或mn&&m

(D) 如果至少有一个操作数为true,则包含||运算符的表达式为true

14. 如果switch语句选择表达式中是整型变量,下面哪一项case子句是合法的( )。 (A) case “2”: (B) case 2: (C) case 2; (D) case ==2 15. 有如下程序段:

……

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

{ if(i%2 == 0) continue; cout<

执行以上程序段的输出结果是( )。

(A) 1, (B) 1,3,4, (C) 1,3, (D) 2,4, 16. 下列运算符中优先级最高的是( )。

(A)! (B) % (C) -= (D) && 17. 用逻辑表达式表示“大于10而小于20的数”,正确的是( )。

(A) 1010||x<20 (C) x>10&x<20 (D)!(x<=10||x>=20) 18. 如果switch语句中的选择表达式是字符型变量code,下面哪一项case子句是合法的( )。 (A) case “3”; (B) case ‘3’; (C) case 3; (D) case =3 19. 设int a=10,b=11,c=12;(a+b)

(A)if 语句结构中必须有else语句 (B)switch语句结构中必须有default语句 (C)C++程序必须有return语句 (D)C++中使用流来执行标准的输入输出操作 21. 下列do-while循环的循环次数是( )。 已知:int i=5;

do{ cout<

}while (i!=0);

(A) 0 (B) 2 (C) 5 (D) 无限次 22. 若m是一个值为10的int型变量,n是一个bool型变量,则表达式!m||n>0的值( )。 (A) 为true (B) 为false (C) 与n的值相反 (D) 与n的值相同

第4章 数组的应用

一、判断题

( )1. 在对全部数组元素赋初值时,不可以不指定一维数组的长度。 ( )2. 在对全部二维数组元素赋初值时,可以不指定二维数组的行数。 ( )3. 在C++程序中,有定义:int a[10];数组a的最小下标是1。 ( )4. 在C++程序中,有定义:int a[10];数组a的最大下标是10。 ( )5. 可以用同一个数组表示以一组数值型数据和字符型数据。

( )6. 有声明: int a[3][2]={1,2,3,4,5,6};那么数组元素a[2][1]的初始值是6。 ( )7. 有声明: char ch[10]={’a’,’b’,’c’,’d’,’e’};那么赋给数组ch的是字符串“abcde”。

( )8. 在对全部二维数组元素赋初值时,必须要指定二维数组的列数。 ( )9. 字符串\在内存中存放时,占用12个字节的空间。

( )10.定义一个一维字符数组有50个元素,用该一维字符数组表示一个字符串数据最

多允许有50个字符。

( )11. C++中各种数据类型的变量在定义后会被自动初始化为0值。 ( )12. 定义数组时可以用变量来定义数组的大小,但不能用表达式。

( )13. 定义一个有50个元素的一维字符数组,用该数组表示一个字符串数据最多允许

有50个字符。

( )14. 定义一个数组后该数组的最小下标取值是0。

( )15. 静态数组被定义时,数组的所有元素自动获取初始值0。 ( )16. 数组是C++的基本数据类型。 ( )17. 数组不能用来存放字符串。

( )18. 同一数组的所有数组元素在内存中是连续存放的。

( )19. 在C++中数组是具有一定顺序关系的若干相同类型变量的集合体。 ( )20. 在给全部数组元素赋初值时,可以不指定二维数组中的常量表达式,

例如:int a[][]={1,2,3,4,5,6}; 二、单项选择题

1. 若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10};则下列( )是对数组元素的正确使用。 (A) a[10] (B) a[a[3]-5] (C) a[a[9]] (D) a[a[4]+4] 2. 对语句:int a[3][4]={0}; 描述正确的是( ) 。 (A) 只有元素 a[0][0] 可得到初值 0 (B) 数组 a 中每个元素均可得到初值 0 (C) 此说明语句不正确

(D) 数组 a 中各元素都可得到初值,但其值不一定为 0 3. 若有以下定义,则数组元素a[2][2]的值是( )。 int a[][3]={{1,2},{3,2,4},{4,5,6},{1,2,3}};

(A) 4 (B) 5 (C) 2 (D) 6 4. 在下面的一维数组定义中,( )有语法错误。

(A) int a[ ]={1,2,3}; (B) int a[ ]; (C) int a[ ]={0}; (D) int a[5]; 5. 在下面的一维数组的定义中,不正确的是( )。

(A) int x[10][10]; (B) int x[ ][10]={{1,3},5,7}; (C) int x[ ][ ]; (D) int x[10][10]={0};

6. 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为( )。 (A) N+1 (B) N (C) (N+1)/2 (D) N/2 7. 将两个字符串连接起来组成一个字符串时,用( )函数。

(A) strcat (B) strlen (C) strcpy (D) strcmp 8. 希尔排序法属于哪一种类型的排序法( )。

(A) 交换类排序法 (B) 插入类排序法 (C) 选择类排序法 (D) 建堆排序法 9. 若定义了一个4行3列的数组,则第8个元素是( )。

(A) a[1][3] (B) a[2][3] (C) a[3][1] (D) a[2][1] 10.判断两个字符串(分别用a、b表示)是否相等的操作为( )。

(A) a= =b (B) if(a= =b) (C) if(strcmp(a,b)) (D) if(strcpy(a,b)) 11. 定义一个一维数组,正确的语句是( )。

(A)int a(10); (B)int n=10;int a[n]; (C)int n;cin>>n;int a[n]; (D)const int n=10;int a[n]; 12. 以下那种说法错误?( )。

(A)数组中的元素在某些方面彼此相关; (B)数组中的所有元素具有相同的下标; (C)数组中的所有元素具有相同的数据类型; (D)数组中的所有元素具有相同的名字; 13. 语句 int a[]={0,1,2}执行后,数组的元素个数是( )。

(A)2 (B)3 (C)4 (D)不知道 14. 下面数组定义错误的是( )。

(A)#define n 5 (B)const int n=5;

char a[n]={“good”}; char a[n]= {“good”}; (C)int n=5; (D)const int n=5;

char a[n]={“good”}; char a[n+2]={“good”}; 15. 执行下列语句:int c[4]={0,1,2,3}; for(int i=0; i<4;i++) c[i]=c[i]+i; 则c[3]的值是( )。

(A)0 (B)4 (C)6 (D)8 16. 下列程序执行后 d[5]结果是( )。 int d[10]; int I; for (i=0;i<=9;i++)

d[i]=i;

for( i=0;i<=9;i++) d[i]=d[9-i];

(A)0 (B)4 (C)5 (D)6 17. 数组 int area[4]={1,2,3,4}, 执行程序 for (int i=1;i<=4;i++)

area[i-1]=1;

那么 area[4]的值是( )。

(A)4 (B)3 (C)1 (D)错误 18. 二维数组在内存中的存放顺序是( )。

(A)按行存放 (B)按列存放 (C)由用户自己定义 (D)由编译器决定 19. 下面初始化不正确的是( )。

(A)int a[2][3]={1,2,3,4,5,6}; (B)int a[][2]={7,8,9};

(C)double a[][3]={1,2,3,4,5,6,7}; (D)double a[3][2]={{1.5,2.0},{3.5},{5,6,7}}; 20. 若有定义:int a[3][4]={0}; 则以下描述中正确的是( )。 (A)只有a[0][0]元素得到初值 (B)不正确语句

(C)各元素均得到初值,但不一定为0 (D)各元素均得到初值且为0 21. 下列对字符数组进行初始化的语句正确的是( )。

(A)char a[]= “abcd”; (B)char a[][]= “abcd”;

(C)char a[4]= “abcd”; (D)char a[2][2]= {“ab”, “cd”};

22. 二维字符数组[10][10]能够存储( )个字符串,每个字符串的长度至多为( )。 (A)10,10 (B)10,9 (C)9,10 (D)9,9 三、阅读程序题

1.#include void main( ) { int a[4],i,j,k; for(i=0;i<4;i++) a[i]=1; k=3;

for(i=0;i

cout<

当执行以上程序时,输出结果是:

2.#include

#include using namespace std; void main()

{ int s[3][3],i,j,k; for(i=0;i<3;i++) for(j=0;j<3;j++)

s[i][j]=i-j;

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

for(j=i+1;j<3;j++)

{k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;} for(i=0;i<3;i++)

{ for(j=0;j<3;j++)

cout<

}

当执行以上程序时,输出结果是:

3. #include

using namespace std; void main( ) { int a[4],i,j,k; for(i=0;i<4;i++) a[i]=0; k=2;

for(i=0;i

cout<

4. #include using namespace std; void main( ) { int a[2][3],j,k;

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

a[j][k]=(j+1)*(k+1); for(j=0;j<2;j++)

{ for(k=0;k<3;k++) cout<<\cout<

5. #include #include using namespace std; void main( )

{ int s[4][4],i,j,k; for(i=0;i<4;i++) for(j=0;j<4;j++) s[i][j]=i-j; for(i=0;i<3;i++)

for(j=i+1;j<4;j++)

{k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;} for(i=0;i<4;i++)

{ for(j=0;j<4;j++)

cout<