第16练 5.2 二维数组的定义和使用 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)

2026-06-25
| 2份
| 10页
| 2人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 作业-同步练
知识点 数组
使用场景 同步教学
学年 2026-2027
地区(省份) 湖南省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 107 KB
发布时间 2026-06-25
更新时间 2026-06-25
作者 xkw_068401954
品牌系列 上好课·一课一练
审核时间 2026-06-25
下载链接 https://m.zxxk.com/soft/58487501.html
价格 1.00储值(1储值=1元)
来源 学科网

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第16练,内容是5.2 二维数组的定义和使用。 《编程语言基础——C语言》(第5版)一课一练 第16练 5.2 二维数组的定义和使用 一、单选题 1. 以下二维数组定义中,合法的是( ) A. int a[3,4]; B. int m=3,n=4; int a[m][n]; C. int a[3][4]; D. int a(3)(4); 2. 定义 int a[3][4]; 则数组a中共有元素个数是( ) A. 7 B. 12 C. 3 D. 4 3. 关于二维数组的初始化,以下说法正确的是( ) A. int a[3][4]={{1,2},{5},{9,10,11}}; 表示为前3行部分赋值 B. 定义二维数组时可以省略列的长度 C. 二维数组不能被部分初始化 D. int a[][4]={{1,2,3,4},{5,6,7,8}}; 数组a的第一维长度由编译器自动确定为2 4. C语言中二维数组在内存中的存储方式是( ) A. 按行优先存储,先存第一行再存第二行 B. 按列优先存储,先存第一列再存第二列 C. 随机存储 D. 按对角线存储 5. 有以下程序段: int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; int i, sum = 0; for (i = 0; i < 3; i++) sum += a[i][i]; 执行后sum的值是( ) A. 6 B. 12 C. 15 D. 45 6. 定义 int a[3][4]; 则以下对数组元素的引用中,合法的是( ) A. a[2][3] B. a[3][4] C. a[3][0] D. a[0][4] 7. 有以下程序段: int a[2][3] = {1, 2, 3, 4, 5, 6}; printf("%d", a[1][2]); 输出结果是( ) A. 1 B. 6 C. 4 D. 3 二、程序运行结果题 8. 以下程序的运行结果是【··】。 #include <stdio.h> main() { int i, j, a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) printf("%3d", a[j][i]); printf(" "); } } 三、程序填空题 9. 以下程序的功能是:输入一个3x3矩阵,输出其转置矩阵(行列互换)。请填空。 #include <stdio.h> main() { int i, j, a[3][3]; for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) scanf("%d", &a[i][j]); printf("转置矩阵: "); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) printf("%3d", ______【1】______); printf(" "); } } 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是求3x3矩阵两条对角线元素之和。程序中有1处逻辑缺陷,请指出所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 main() L3 { L4 int i, j, sum = 0, a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; L5 for (i = 0; i < 3; i++) L6 for (j = 0; j < 3; j++) L7 if (i == j || i + j == 2) L8 sum += a[i][j]; L9 printf("sum = %d ", sum); L10 } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第16练,内容是5.2 二维数组的定义和使用。 《编程语言基础——C语言》(第5版)一课一练 第16练 5.2 二维数组的定义和使用 一、单选题 1. 以下二维数组定义中,合法的是( ) A. int a[3,4]; B. int m=3,n=4; int a[m][n]; C. int a[3][4]; D. int a(3)(4); 【答案】C 【解析】二维数组定义格式为:类型说明符 数组名[常量表达式1][常量表达式2]。选项A分隔符错误,选项B中m、n是变量不允许动态定义,选项D括号错误。 2. 定义 int a[3][4]; 则数组a中共有元素个数是( ) A. 7 B. 12 C. 3 D. 4 【答案】B 【解析】二维数组a[3][4]共有3行4列,元素总数为3x4=12。其中行标范围02,列标范围03。 3. 关于二维数组的初始化,以下说法正确的是( ) A. int a[3][4]={{1,2},{5},{9,10,11}}; 表示为前3行部分赋值 B. 定义二维数组时可以省略列的长度 C. 二维数组不能被部分初始化 D. int a[][4]={{1,2,3,4},{5,6,7,8}}; 数组a的第一维长度由编译器自动确定为2 【答案】D 【解析】全部元素赋值时可省略第一维长度,编译器自动确定。选项A是按行部分赋值;选项B可省略第一维但不可省略第二维;选项C二维数组可以部分初始化,未赋值元素自动为0。 4. C语言中二维数组在内存中的存储方式是( ) A. 按行优先存储,先存第一行再存第二行 B. 按列优先存储,先存第一列再存第二列 C. 随机存储 D. 按对角线存储 【答案】A 【解析】C语言采用行优先的方式存储二维数组,即先在内存中顺序存储第一行(行标为0)的所有元素,再存放第二行的所有元素,以此类推。 5. 有以下程序段: int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; int i, sum = 0; for (i = 0; i < 3; i++) sum += a[i][i]; 执行后sum的值是( ) A. 6 B. 12 C. 15 D. 45 【答案】C 【解析】a[i][i]访问的是主对角线元素:a[0][0]=1, a[1][1]=5, a[2][2]=9。累加和为1+5+9=15。 6. 定义 int a[3][4]; 则以下对数组元素的引用中,合法的是( ) A. a[2][3] B. a[3][4] C. a[3][0] D. a[0][4] 【答案】A 【解析】a[3][4]的行标范围02,列标范围03。a[2][3]在第2行第3列(即最后一行最后一列),是合法的。a[3][4]、a[3][0]、a[0][4]都越界。 7. 有以下程序段: int a[2][3] = {1, 2, 3, 4, 5, 6}; printf("%d", a[1][2]); 输出结果是( ) A. 1 B. 6 C. 4 D. 3 【答案】B 【解析】按一维形式赋值时,按行优先顺序依次填充:a[0][0]=1,a[0][1]=2,a[0][2]=3,a[1][0]=4,a[1][1]=5,a[1][2]=6。a[1][2]的值为6。 二、程序运行结果题 8. 以下程序的运行结果是【··】。 #include <stdio.h> main() { int i, j, a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) printf("%3d", a[j][i]); printf(" "); } } 【答案】 1 4 7 2 5 8 3 6 9 【解析】程序按列优先输出(外循环i为列,内循环j为行)。第一列: a[0][0]=1,a[1][0]=4,a[2][0]=7;第二列: a[0][1]=2,a[1][1]=5,a[2][1]=8;第三列: a[0][2]=3,a[1][2]=6,a[2][2]=9。 三、程序填空题 9. 以下程序的功能是:输入一个3x3矩阵,输出其转置矩阵(行列互换)。请填空。 #include <stdio.h> main() { int i, j, a[3][3]; for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) scanf("%d", &a[i][j]); printf("转置矩阵: "); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) printf("%3d", ______【1】______); printf(" "); } } 【答案】【1】a[j][i] 【解析】转置矩阵是将行和列互换,原矩阵a[i][j]的转置为a[j][i]。输出时用a[j][i]即可实现行列互换。 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是求3x3矩阵两条对角线元素之和。程序中有1处逻辑缺陷,请指出所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 main() L3 { L4 int i, j, sum = 0, a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; L5 for (i = 0; i < 3; i++) L6 for (j = 0; j < 3; j++) L7 if (i == j || i + j == 2) L8 sum += a[i][j]; L9 printf("sum = %d ", sum); L10 } 【答案】程序逻辑本身正确,但中心元素a[1][1]被重复计算(它同时满足i==j和i+j==2)。修改建议:将L7条件改为 if (i == j) sum += a[i][j]; else if (i + j == 2) sum += a[i][j]; 避免中心元素重复累加。 【解析】主对角线条件i==j,副对角线条件i+j==2(n-1=2)。但当n为奇数时,中心元素a[1][1]同时属于两条对角线,用||连接会重复加一次。需要分开处理以避免重复。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第16练 5.2 二维数组的定义和使用 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)
1
第16练 5.2 二维数组的定义和使用 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。