第27练 单元6 二维数组、字符串的应用《C语言程序设计》(高教版第2版)一课一练
|
2份
|
7页
|
25人阅读
|
0人下载
内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元6的第27练,内容涵盖单元6“考试系统”的数据存储的 6.3.2~6.3.3 二维数组、字符串的应用。
《C语言程序设计》(高教版第2版)一课一练 第27练
单元6 “考试系统”的数据存储
6.3.2~6.3.3 二维数组、字符串的应用
1、 单项选择题(本题共5小题)
1、对于 n 阶方阵(行列数均为 n 的二维数组),主对角线元素的下标特征是( )
A. 行下标等于列下标(i == j)
B. 行下标加列下标等于 n(i + j = n)
C. 行下标等于列下标加 1(i = j + 1)
D. 行下标加列下标等于 n-2(i + j = n-2)
2、计算 5 个学生 5 门课程的每门课程总分时,正确的遍历方式是( )
A. 按行遍历,累加每行的所有元素
B. 按列遍历,累加每列的所有元素
C. 随机遍历数组元素并累加
D. 只累加数组的第一行和最后一行元素
3、手动统计字符串长度时,循环终止的判断条件是( )
A. 遇到空格字符 ' '
B. 遇到字符串结束符 '\0'
C. 遇到回车符 '
'
D. 遍历到数组的最后一个元素
4、使用二维数组存储 5 个学生的 5 门课程成绩,并额外添加一列存储每个学生的平均分,该二维数组的列数应定义为( )
A. 5
B. 6
C. 7
D. 8
5、手动实现两个字符串连接时,存放第一个字符串的字符数组必须满足的条件是( )
A. 数组长度等于第二个字符串的长度
B. 数组长度足够容纳两个字符串的总有效字符数加 1(含 '\0')
C. 数组必须是全局数组
D. 数组长度小于第二个字符串的长度
2、 判断题(本题共4题)
1、3 阶方阵的辅对角线元素下标满足行下标加列下标等于 3(i + j = 3)。( )
2、手动统计字符串长度时,统计结果包含字符串结束符 '\0' 的长度。( )
3、计算每个学生的平均分时,需要先累加该学生所在行的所有课程成绩,再除以课程门数。( )
4、实现字符串连接时,可以直接将第二个字符串的数组名赋值给第一个字符串的数组名,比如str1 = str2;。( )
3、 程序填空题(本题共1题)
1、题目描述:以下程序用于计算 3 阶方阵的主对角线和辅对角线元素之和,需补充缺失代码;
#include <stdio.h>
int main() {
int a[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
int sum_main = (1)____, sum_sub = 0;
int i;
for(i = 0; i < 3; i++) {
// 累加主对角线元素
sum_main += (2)____;
// 累加辅对角线元素
sum_sub += a[i][(3)____];
}
printf("主对角线元素之和:%d
", sum_main);
printf("辅对角线元素之和:%d
", sum_sub);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元6的第27练,内容涵盖单元6“考试系统”的数据存储的 6.3.2~6.3.3 二维数组、字符串的应用。
《C语言程序设计》(高教版第2版)一课一练 第27练
单元6 “考试系统”的数据存储
6.3.2~6.3.3 二维数组、字符串的应用
1、 单项选择题(本题共5小题)
1、对于 n 阶方阵(行列数均为 n 的二维数组),主对角线元素的下标特征是( )
A. 行下标等于列下标(i == j)
B. 行下标加列下标等于 n(i + j = n)
C. 行下标等于列下标加 1(i = j + 1)
D. 行下标加列下标等于 n-2(i + j = n-2)
【答案】A
【解析】主对角线是从矩阵左上到右下的元素,每个元素的行下标和列下标完全相等,例如 3 阶方阵的主对角线元素为 a [0][0]、a [1][1]、a [2][2],符合 i==j 的特征。
2、计算 5 个学生 5 门课程的每门课程总分时,正确的遍历方式是( )
A. 按行遍历,累加每行的所有元素
B. 按列遍历,累加每列的所有元素
C. 随机遍历数组元素并累加
D. 只累加数组的第一行和最后一行元素
【答案】B
【解析】二维数组中每列代表一门课程的所有学生成绩,按列遍历并累加每列元素,才能得到对应课程的总分,符合成绩单数据的存储逻辑。
3、手动统计字符串长度时,循环终止的判断条件是( )
A. 遇到空格字符 ' '
B. 遇到字符串结束符 '\0'
C. 遇到回车符 '
'
D. 遍历到数组的最后一个元素
【答案】B
【解析】C 语言规定 '\0' 是字符串的结束标志,手动统计长度时,只要遇到 '\0' 就说明已遍历完所有有效字符,此时计数器的值即为字符串的有效长度。
4、使用二维数组存储 5 个学生的 5 门课程成绩,并额外添加一列存储每个学生的平均分,该二维数组的列数应定义为( )
A. 5
B. 6
C. 7
D. 8
【答案】B
【解析】5 门课程需要 5 列,再添加 1 列存储平均分,因此总列数为 5+1=6,符合二维数组扩展列存储统计结果的需求。
5、手动实现两个字符串连接时,存放第一个字符串的字符数组必须满足的条件是( )
A. 数组长度等于第二个字符串的长度
B. 数组长度足够容纳两个字符串的总有效字符数加 1(含 '\0')
C. 数组必须是全局数组
D. 数组长度小于第二个字符串的长度
【答案】B
【解析】字符串连接需要将第二个字符串的内容追加到第一个字符串末尾,因此第一个数组必须预留足够空间,避免内存溢出,额外的 1 个字节用于存储最终的 '\0' 结束符。
2、 判断题(本题共4题)
1、3 阶方阵的辅对角线元素下标满足行下标加列下标等于 3(i + j = 3)。( )
【答案】×
【解析】C 语言数组下标从 0 开始,3 阶方阵的辅对角线元素为 a [0][2]、a [1][1]、a [2][0],下标和为 2,即 i + j = 3-1=2,而非 3。
2、手动统计字符串长度时,统计结果包含字符串结束符 '\0' 的长度。( )
【答案】×
【解析】'\0' 是字符串的结束标志,不属于有效字符,手动统计长度时只计算 '\0' 之前的有效字符数,不包含 '\0' 本身。
3、计算每个学生的平均分时,需要先累加该学生所在行的所有课程成绩,再除以课程门数。( )
【答案】√
【解析】二维数组中每行对应一个学生的所有课程成绩,累加行内元素得到总分,除以课程门数即可得到该学生的平均分,符合成绩统计的逻辑。
4、实现字符串连接时,可以直接将第二个字符串的数组名赋值给第一个字符串的数组名,比如str1 = str2;。( )
【答案】×
【解析】数组名是常量地址,不能被赋值,字符串连接需要找到第一个字符串的 '\0' 位置,逐个字符复制第二个字符串的内容到该位置开始的内存区域。
3、 程序填空题(本题共1题)
1、题目描述:以下程序用于计算 3 阶方阵的主对角线和辅对角线元素之和,需补充缺失代码;
#include <stdio.h>
int main() {
int a[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
int sum_main = (1)____, sum_sub = 0;
int i;
for(i = 0; i < 3; i++) {
// 累加主对角线元素
sum_main += (2)____;
// 累加辅对角线元素
sum_sub += a[i][(3)____];
}
printf("主对角线元素之和:%d
", sum_main);
printf("辅对角线元素之和:%d
", sum_sub);
return 0;
}
【答案】
(1)0
(2) a [i][i]
(3) 2 - i
【解析】(1) 求和计数器初始化为 0 是累加类程序的标准规范,避免非零初始值导致求和结果出现偏差;
(2) 主对角线元素的行下标与列下标相等,使用 a [i][i] 可以准确遍历 3 阶方阵的所有主对角线元素(a [0][0]、a [1][1]、a [2][2]);
(3) 3 阶方阵的辅对角线元素列下标等于 2 - 行下标(满足 i+j=2),这样可以依次访问 a [0][2]、a [1][1]、a [2][0] 三个辅对角线元素,实现准确求和。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$