第28练 单元6 从杨辉三角形到回文诗及考试系统实现《C语言程序设计》(高教版第2版)一课一练
|
2份
|
7页
|
73人阅读
|
0人下载
内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元6的第28练,内容涵盖单元6“考试系统”的数据存储的6.4~6.5 从杨辉三角形到回文诗及考试系统实现。
《C语言程序设计》(高教版第2版)一课一练 第28练
单元6 “考试系统”的数据存储
6.4~6.5 从杨辉三角形到回文诗及考试系统实现
1、 单项选择题(本题共5小题)
1、在 C 语言中判断汉字回文诗时,由于单个汉字占 2 个字节,比对前后对应汉字的正确条件是( )
A. poem[i] == poem[j]
B. poem[i] == poem[j-1] && poem[i+1] == poem[j]
C. poem[i] == poem[j] && poem[i+1] == poem[j+1]
D. poem[i+1] == poem[j]
【答案】B
【解析】汉字占 2 字节,前一个汉字的两个字符需与后一个汉字的两个字符反向匹配(前汉字第 1 字节 = 后汉字第 2 字节,前汉字第 2 字节 = 后汉字第 1 字节),选项 B 符合该逻辑;其他选项仅比对单个字符或顺序错误,无法正确判断汉字是否相同。
2、从杨辉三角形的斜线方向提取的数列是( )
A. 等差数列
B. 等比数列
C. 斐波那契数列
D. 素数数列
【答案】C
【解析】杨辉三角形的斜线方向(如从左上角到右下角的斜线)提取的数值依次为 1、2、3、5、8…,完全符合斐波那契数列 “前两项为 1,从第三项开始是前两项之和” 的定义。
3、定位汉字字符串末尾结束符'\0'的循环条件,正确的是( )
A. while(poem[j] == '\0')
B. while(poem[j] != '\0')
C. while(j < 100)
D. while(poem[j] != ' ')
【答案】B
【解析】字符串以'\0'作为结束标志,循环需遍历到该字符为止,因此条件为当当前字符不是'\0'时继续循环,选项 B 正确;选项 A 逻辑相反,选项 C 未考虑实际字符串长度,选项 D 仅跳过空格,无法定位末尾。
4、回文诗判断的循环终止条件,合理的是( )
A. i > j
B. i >= j
C. i < j
D. i == j
【答案】B
【解析】当i >= j时,说明前后对应的汉字已全部比对完成,无需继续循环;若i > j会提前终止部分对称场景的比对,i < j是循环执行的条件而非终止条件。
5、在 GBK 编码标准下,单个汉字在 C 语言字符串中占用的字节数是( )
A. 1 字节
B. 2 字节
C. 3 字节
D. 4 字节
【答案】B
【解析】GBK 编码是中文常用编码标准,单个汉字固定占用 2 字节存储空间,这是汉字回文判断中双字符比对的核心依据。
2、 判断题(本题共4题)
1、在 C 语言中存储汉字字符串时,每个汉字占用 2 个字节的存储空间。( )
【答案】√
【解析】在 GBK 等常用中文编码中,单个汉字占用 2 字节,这是处理汉字字符串的基础常识,也是回文诗判断的核心前提。
2、杨辉三角形的每一行数字顺读和反读完全相同,具有回文特性。( )
【答案】√
【解析】杨辉三角形每行数字对称,例如第五行 “1、4、6、4、1”,顺读和反读一致,符合回文的定义。
3、判断汉字回文诗时,循环变量i每次加 1、j每次减 1 即可完成所有汉字的比对。( )
【答案】×
【解析】汉字占 2 字节,若步长为 1 会拆分单个汉字的两个字节,导致比对错误,正确步长应为i += 2、j -= 2。
4、杨辉三角形的斜线方向提取的数列是等差数列。( )
【答案】×
【解析】斜线方向提取的数列是斐波那契数列,相邻项的差值不固定,不符合等差数列 “差值恒定” 的特征。
3、 程序填空题(本题共1题)
1、题目描述:以下程序用于判断输入的汉字诗句是否为回文诗,请补充缺失代码使程序正常运行。
#include <stdio.h>
int main() {
char poem[100];
int i = 0, j = 0;
// 输入诗句
printf("请输入诗句:
");
gets(poem);
// 找到字符串末尾的结束符'\0'位置
while( (1)____ ) {
j++;
}
// 定位到最后一个汉字的第二个字节位置
j = j - 3;
// 循环比对前后对应汉字
while( (2)____ ) {
// 判断当前前后汉字是否相同
if( (3)____ ) {
// 移动到下一组待比对的汉字
i += 2;
j -= 2;
} else {
printf("该诗句不是回文诗!
");
return 0;
}
}
printf("该诗句是回文诗!
");
return 0;
}
【答案】
(1) poem[j] != '\0'
(2) i < j
(3) poem[i] == poem[j-1] && poem[i+1] == poem[j]
【解析】
(1)通过循环遍历字符串,直到遇到结束符'\0',此时j指向结束符的位置,为后续定位最后一个汉字做准备。
(2)当i < j时,说明仍有未比对的汉字对,继续循环;当i >= j时,所有汉字比对完成,判定为回文。
(3)单个汉字占 2 字节,前一个汉字的两个字节需与后一个汉字的两个字节反向匹配,确保两个汉字完全相同,这是回文判断的核心条件。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元6的第28练,内容涵盖单元6“考试系统”的数据存储的6.4~6.5 从杨辉三角形到回文诗及考试系统实现。
《C语言程序设计》(高教版第2版)一课一练 第28练
单元6 “考试系统”的数据存储
6.4~6.5 从杨辉三角形到回文诗及考试系统实现
1、 单项选择题(本题共5小题)
1、在 C 语言中判断汉字回文诗时,由于单个汉字占 2 个字节,比对前后对应汉字的正确条件是( )
A. poem[i] == poem[j]
B. poem[i] == poem[j-1] && poem[i+1] == poem[j]
C. poem[i] == poem[j] && poem[i+1] == poem[j+1]
D. poem[i+1] == poem[j]
2、从杨辉三角形的斜线方向提取的数列是( )
A. 等差数列
B. 等比数列
C. 斐波那契数列
D. 素数数列
3、定位汉字字符串末尾结束符'\0'的循环条件,正确的是( )
A. while(poem[j] == '\0')
B. while(poem[j] != '\0')
C. while(j < 100)
D. while(poem[j] != ' ')
4、回文诗判断的循环终止条件,合理的是( )
A. i > j
B. i >= j
C. i < j
D. i == j
5、在 GBK 编码标准下,单个汉字在 C 语言字符串中占用的字节数是( )
A. 1 字节
B. 2 字节
C. 3 字节
D. 4 字节
2、 判断题(本题共4题)
1、在 C 语言中存储汉字字符串时,每个汉字占用 2 个字节的存储空间。( )
2、杨辉三角形的每一行数字顺读和反读完全相同,具有回文特性。( )
3、判断汉字回文诗时,循环变量i每次加 1、j每次减 1 即可完成所有汉字的比对。( )
4、杨辉三角形的斜线方向提取的数列是等差数列。( )
3、 程序填空题(本题共1题)
1、题目描述:以下程序用于判断输入的汉字诗句是否为回文诗,请补充缺失代码使程序正常运行。
#include <stdio.h>
int main() {
char poem[100];
int i = 0, j = 0;
// 输入诗句
printf("请输入诗句:
");
gets(poem);
// 找到字符串末尾的结束符'\0'位置
while( (1)____ ) {
j++;
}
// 定位到最后一个汉字的第二个字节位置
j = j - 3;
// 循环比对前后对应汉字
while( (2)____ ) {
// 判断当前前后汉字是否相同
if( (3)____ ) {
// 移动到下一组待比对的汉字
i += 2;
j -= 2;
} else {
printf("该诗句不是回文诗!
");
return 0;
}
}
printf("该诗句是回文诗!
");
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$