第7章数组答案

发布 2022-09-05 03:12:28 阅读 5726

一选择题。

1. 答案选择:b

考点:一维数组的定义。

分析:一维数组定义的形式为:类型名数组名[常量表达式]

注意点:(1)常量表达式不能省略,不能为变量可以使宏定义名。

(2)数组名是用户定义标示符。

a答案中省略了常量表达式,因此是错误的。c答案中没有0…100这种形式的常量表达式。d答案常量表达式不能为变量。

2. 答案选择:b

考点:循环和数组元素的引用。

分析:int p[8]=

1) i=0,j=0,判断:i++<7为真,i的值为1,判断if中的表达式(p[1]%2)为假,不执行j+=p[1]

2) i=1,j=0,判断:i++<7为真,i的值为2,判断if中的表达式(p[2]%2)为真,执行j+=p[0]后j的值为13

3) i=2,j=13,判断:i++<7为真,i的值为3,判断if中的表达式(p[3]%2)为假,不执行j+=p[1]

4) i=3,j=13,判断:i++<7为真,i的值为4,判断if中的表达式(p[4]%2)为真,执行j+=p[0]后j的值为28

5) i=4,j=28,判断:i++<7为真,i的值为5,判断if中的表达式(p[5]%2)为假,不执行j+=p[1]

6) i=5,j=28,判断:i++<7为真,i的值为6,判断if中的表达式(p[6]%2)为真,执行j+=p[0]后j的值为45

7) i=6,j=45,判断:i++<7为真,i的值为7,判断if中的表达式(p[1]%2)为假,不执行j+=p[1]

8) i=7,j=45,判断:i++<7为假,结束循环。

9) 输出j的值为45

3. 答案选择:d

考点:循环、数组元素的引用和逻辑运算。

分析:int p[7]=

1) i=0,k=0,判断:i<7&&p[0]%2为真,执行k=k+p[0]后k的值为11,执行i++后i的值为1。

2) i=1,k=11,判断:i<7&&p1]%2为真,执行k=k+p[1]后k的值为24,执行i++后i的值为2。

3) i=2,k=24,判断:i<7&&p[2]%2为假,结束循环。注意:2<7&&p[2]%2左边为真,但是右边为假,那么整个表达式为假。

4) 输出k的值为24。

4.答案选择:

考点:循环嵌套,交换。

分析:int x=

第一个嵌套循环。

1) i=0,i<3为真。

1) j=2,j>=0为真,判断(x[3]>x[2])为真,进行交换后x=j--

2) j=1,j>=0为真,判断(x[2]>x[1])为真,进行交换后x=j—

3) j=0,j>=0为真,判断(x[1]>x[0])为真,进行交换后x=j—

4) j=-1,j>=0为假,i++

2) i=1,i<3为真。

1)j=2,j>=1为真,判断(x[3]>x[2])为真,进行交换后x=j--

2)j=1,j>=1为真,判断(x[2]>x[1])为真,进行交换后x=j—

3)j=0,j>=1为假,i++

3) i=2,i<3为真。

1)j=2,j>=2为真,判断(x[3]>x[2])为真,进行交换后x=j--

2)j=1,j>=2为假,i++

4)i=3,i<3为假。

第二个嵌套循环:

1)i=0,i<3为真。

1)j=4,j<7为真,判断(x[5]2)j=5,j<7为真,判断(x[6] 3)j=6,j<7为真,判断(x[7]4)j=7,j<7为假,i++

2) i=1,i<3为真。

1)j=4,j<6为真,判断(x[5]2)j=5,j<6为真,判断(x[6] 3)j=6,j<6为假,i++

3) i=2,i<3为真。

1)j=4,j<5为真,判断(x[5]2)j=5,j<5为假,i++

4) i=3,i<3为假。

第三个循环:

for(i=0;i<8;i++)输出x[i]的值为:75310246

5. 答案选择:b

考点:二维数组的定义。

分析:形式:类型名数组名[常量表达式1][常量表达式2]

a) 定义的时候不能省略常量表达式1

b) 真确,表示定义了一行三列的数组a,即int a[1][3]=

c) 缺少初始化值,int a[3]={和int a[3]=事有区别的,第一种形式没有任何的初始化值,因此数组的元素不确定所以是出错的,第二种形式有值且都为0

d) int a[2][3]=,a数组定义时只有两行三列,但是在赋初始值时却是三行三列的。

6. 答案选择:d

考点:二维数组的定义。

分析:二维数组不能省略列下标。d选项中省略了列下标,因此是错误的。

7. 答案选择:d

考点:二维数组的定义。

分析:a答案中使用了变量作为数组中的常量表达式,因此是错误的。

b答案中定义的时候只定义了一行两列的数组,但是在赋初始值时时二行的,因此是错误的。

d答案中是省略了列下标,因此是错误的。

8. 答案选择:c

分析:int m[3]=

1) i=0,k=2,i<3为真,输出m[k][i],即m[2][0]的值为3,执行i++

2) i=1,k=2,i<3为真,输出m[k][i],即m[2][1]的值为6, 执行i++

3) i=2,k=2,i<3为真,输出m[k][i],即m[2][2]的值为9, 执行i++

4) i=3,k=2,i<3为假。

5) 输出的结果为:3 6 9

9. 答案选择:a

分析:int a[3]=,

1) i=0,i<3为真,判断if表达式(i<2)为真,a[1][0]=a[1][0]-1,a[1][0]=3,那么数组a中元素变为:,}执行i++后i的值为1

2) i=1,i<3为真,判断if表达式(i<2)为真,a[1][1]=a[1][1]-1,a[1][1]=4,那么数组a中元素变为:,}执行i++后i的值为2

3) i=2,i<3为真,判断if表达式(i<2)为假,执行else:a[1][2]=1,那么数组a中元素变为:,}执行i++后i的值为3

4) i=3,i<3为假,结束循环。

5) 输出a[0][1]+a[1][1]+a[1][2]的值为7

10.答案选择:b

分析:int aa[4][4]=,

1) i=0,s=0,i<4为真,执行s+=aa[0][1],s的值为2,执行i++

2) i=1,s=2,i<4为真,执行s+=aa[1][1],s的值为8,执行i++

3) i=2,s=8,i<4为真,执行s+=aa[2][1],s的值为17,执行i++

4) i=3,s=17,i<4为真,执行s+=aa[3][1],s的值为19,执行i++

5) i=4,s=19,i<4为假,结束循环。

6) 最终输出s的值为19

11.答案选择:c

分析:c选项中&aa[0]++首先引用aa[0],后对aa[0]的值增加一,那么&aa[0]++将获得aa[0]的地址,不是aa[0]的地址。

12.答案选择:d

分析:int a=p=a, i ;指针p指向了数组a的首地址。

a答案a[p-a]表示a[0]

b答案*(&a[i])表示:首先取出a[i]的地址,由于题目给出i的值为0到8,因此不存在下标越界。在(&a[i])前面加上*后表示取出a[i]的值,因此b答案是正确的。

c答案p[i],这主要考查指针当作数组用的,如果一个指针指向了一个一维数组,那么可以将指针当做数组用。如p[i]就表示数组中第i个下标的值。

d答案*(*a+i))用来表示取出二维数组的值,不能用于一维数组。

13.答案选择:a

分析:int a[10]=,p=a;指针p指向了数组a的首地址。执行输出语句中表达式*(p+2)的值,首先指针p指向了数组a的首地址,那么p+2就表示下标为2的数组元素的地址,就是a[2]的地址。

在p+2前面加上*后表示取出对应的值,就是a[2]的值,即为3。

14.答案选择:b

分析:int a[10]=,p=&a[3],*q=p+2;由于p=&a[3]指向了a[3]的地址,那么q=p+2,q指针就指向了a[5]的地址。*p+*q就相当于a[3]+a[5],得到的值为10。

15.答案选择:c

分析:int a=y=0,x,*p;p=&a[1];p指针指向了a[1]的地址,执行循环:

1) x=1,y=0,x<3成立,执行y+=p[1],得到y的中为4,继续执行x++

2) x=2,y=4,x<3成立,执行y+=p[2],得到y的中为10,继续执行x++

3) x=3,y=10,x<3不成立,结束循环。

4) 输出y的值为10

16.答案选择:a

分析:for(p=a ;pfor(i=0;i<10;i++)printf(“%d”,a[i]);区别:for(p=a ;p17.答案选择:d

分析:d答案中输出列表中的表达式为(*p)++首先p指向了数组a的首地址,那么*p的值就是a[0]为2,(*p)++的就是a[0]++得到的值为3。

第7章数组课后作业

1 依次输入五句话,然后将它逆序输出。运行结果如图所示。提示 创建一个字符串数组,每句话作为字符串数組的一个元素,然后从该数组的末尾开。始循环输出。2 某百货商场当日消费积分最高的八名顾客。他们的积分是 编写程序找出最低的积分及它在数组中的原始位置 下标 提示 创建数组points,存储八名顾客的积...

第06章作业 数组

上机练习 1 从键盘接收5个数,用数组存储,找出最大值和最小值。2 从键盘接收5个数,先顺序输出,然后将该数组倒置,再次输出。a 提示 定义一个中间变量。b 例如原数组为 3 5 9 8 4 倒置后输出为 4 8 9 5 3 3 定义一个二维数组,输出九九乘法表,输出格式如下 4 将一个二维数组的行...

第4章数组上机作业

第4章构造数据类型。第一部分数组。通过本节实验作业应达目标。1 学习并掌握一维数组与二维数组的定义 使用及初始化方法。2 熟练掌握字符数组和字符串的使用方法。3 掌握数组的一种排序算法。4 学会用数组保存多个相关的同类数据,并对这一组数据进行各类操作。本章必须上交作业。第一部分数组作业要求 程序4 ...