1. 选择题 关于数组初始化,下列说法不正确的是:(C)
A. ⼆维数组初始化的时候,列数是必须给出的,⾏数可以由编译器来数。
B. ⼆维数组初始化的时候,每⾏⼀个{},逗号分隔。
C. 对⼀维数组初始化的时候,即使给全部元素都赋了初值,也不能省略数组⻓度
D. ⼆维数组初始化的时候,最后的逗号可以存在
原因:A、正确 B、正确
C、一维数组初始化时,如果全部元素都进行了赋值,可以省略数组长度,编译器会根据元素数量自动确定数组长度。
D、一维数组初始化,在最后一个元素后面加逗号,编译器允许这种写法,不影响代码格式
答案是C,数组类型属于引用数据类型,存放的是地址,声明的char类型的数组中存放的是地址,不可以用字符串类型来赋值,数据类型不能互相转换。
3、选择题(C)
原因:数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组的第二维的下标是j,说明前面还有j列,有j个元素,所以共有i*m+j个元素
选A
5、
在for循环的遍历过程中,当程序执行到a[0][2]时,由于超出了数组的范围,故直接转换为a[1][0]
=3,然后继续执行a[1][0],当运行到a[1][2]时,同样转换为a[2][0]=5,然后当i=2时,程序跳出for循环,换行。
6、参考学习通上传的PPT「第⼋章 数组」,仿照【例8.7】计算最⾼分,使⽤「数组 + 函 数」,计算最低分。这道题重点考查如何向函数传递⼀位数组。
7、
参考学习通上传的PPT「第⼋章 数组」,仿照【例8.8】⽤交换法对成绩降序排序,使⽤ 「数组 + 函数」,对10个double 类型的数值进⾏从⼩到⼤进⾏排序。
8、8. 附加题 题⽬:输⼊⼀个⼆维数组的⾏数 m(m≤10),列数 n(n≤10),⼆维数组的各元素 值。输出周边元素之和。 说明:「周边元素是指⾸⾏、⾸列、末⾏、末列的数组元素」 输⼊⽰例:3⾏4列,后接具体的3⾏4列数组
/*题目:输入一个二维数组的行数 m(m≤10),列数 n(n≤10),二维数组的各元素
值。输出周边元素之和。
说明:「周边元素是指首行、首列、末行、末列的数组元素*/
#include <stdio.h>
int main() {
int arr[10][10];
int result = 0;
int m,n;
scanf("%d",&m);
scanf("%d",&n);
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
scanf("%d",&arr[i][j]);
for(int i = 0; i < m; i++)
for(int j =0; j <= n; j++)
if(i == 0 || j == 0 ||i == m - 1 || j == n - 1) {
result += arr[i][j];
}
printf("%d",result);
return 0;
}