第32练 第6章 字符数组应用举例《C语言程序设计》(电子工业出版社)一课一练
|
2份
|
7页
|
28人阅读
|
0人下载
内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(电子工业出版社)一课一练的第6章的第32练,内容涵盖第6章数组的6.3.7 字符数组应用举例。
《C语言程序设计》(电子工业出版社)一课一练 第32练
第6章 数组
6.3.7 字符数组应用举例
1、 单项选择题(本题共4小题)
1、在手动复制字符串的程序中,执行str2[i] = '\0';的主要作用是( )
A. 给目标数组赋值 0,清空多余内容
B. 标记目标数组为合法的 C 语言字符串,确保输出正常
C. 占用内存空间,避免数组溢出
D. 与源字符串的结束标志对应,无实际意义
2、使用scanf("%s", str1)输入字符串时,无法输入的内容是( )
A. 英文字母
B. 数字
C. 空格
D. 标点符号
3、字符串删除程序中,遍历源字符串的循环条件设置为str1[i] != '\0',原因是( )
A. 确保遍历到数组的最后一个元素
B. 避免数组下标越界
C. 遍历字符串的所有有效字符,直到结束标志为止
D. 简化循环逻辑,减少代码量
4、下列关于手动复制字符串的步骤,错误的是( )
A. 复制完成后直接输出目标数组,无需额外操作
B. 循环条件设置为str1[i] != '\0',遍历源字符串
C. 初始化循环变量i = 0,作为字符下标
D. 复制结束后给目标数组的对应位置添加 '\0'
2、 判断题(本题共3题)
1、手动复制字符串时,不需要给目标数组添加 '\0',系统会自动补充该标志。( )
2、字符串删除程序中,只要遍历到要删除的字符位置,就可以终止循环。( )
3、gets函数可以读取包含空格、制表符的整行字符串,直到遇到换行符为止。( )
3、 填空题(本题共2题)
1、手动复制字符串的核心逻辑是:通过____遍历源字符串的每个有效字符,将其逐个赋值给目标数组,最后给目标数组添加字符串结束标志 '\0'。
2、在字符串删除程序中,当遍历到需要删除的字符时,应____该字符,继续遍历下一个字符;当遍历到有效字符时,将其复制到目标数组。
4、 读程序写结果题(本题共1题)
1、阅读下面的 C 语言程序,写出程序运行后的输出结果。
【程序代码】
#include <stdio.h>
int main() {
char src[] = "student";
char dest[10];
int i = 0;
while(src[i] != '\0') {
dest[i] = src[i];
i++;
}
dest[i] = '\0';
printf("%s", dest);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(电子工业出版社)一课一练的第6章的第32练,内容涵盖第6章数组的6.3.7 字符数组应用举例。
《C语言程序设计》(电子工业出版社)一课一练 第32练
第6章 数组
6.3.7 字符数组应用举例
1、 单项选择题(本题共4小题)
1、在手动复制字符串的程序中,执行str2[i] = '\0';的主要作用是( )
A. 给目标数组赋值 0,清空多余内容
B. 标记目标数组为合法的 C 语言字符串,确保输出正常
C. 占用内存空间,避免数组溢出
D. 与源字符串的结束标志对应,无实际意义
【答案】B
【解析】手动逐个字符复制时,系统不会自动给目标数组添加字符串结束标志 '\0',如果不手动添加,输出目标数组时会读取到内存中的随机数据,导致乱码;添加 '\0' 后,目标数组才是合法的 C 语言字符串,能被正确输出。
2、使用scanf("%s", str1)输入字符串时,无法输入的内容是( )
A. 英文字母
B. 数字
C. 空格
D. 标点符号
【答案】C
【解析】scanf的%s格式输入字符串时,会将空格、制表符或换行符视为输入结束的标志,因此无法读取包含空格的字符串,若需要输入带空格的字符串应使用gets函数。
3、字符串删除程序中,遍历源字符串的循环条件设置为str1[i] != '\0',原因是( )
A. 确保遍历到数组的最后一个元素
B. 避免数组下标越界
C. 遍历字符串的所有有效字符,直到结束标志为止
D. 简化循环逻辑,减少代码量
【答案】C
【解析】C 语言中字符串的有效字符是从起始地址到第一个 '\0' 之前的部分,用该条件可以准确遍历所有需要处理的有效字符,不会遗漏或多处理无关内存单元。
4、下列关于手动复制字符串的步骤,错误的是( )
A. 复制完成后直接输出目标数组,无需额外操作
B. 循环条件设置为str1[i] != '\0',遍历源字符串
C. 初始化循环变量i = 0,作为字符下标
D. 复制结束后给目标数组的对应位置添加 '\0'
【答案】A
【解析】直接输出未添加 '\0' 的目标数组时,程序无法识别字符串的结束位置,会输出随机乱码,必须手动添加 '\0' 后才能正常输出。
2、 判断题(本题共3题)
1、手动复制字符串时,不需要给目标数组添加 '\0',系统会自动补充该标志。( )
【答案】×
【解析】系统仅会在使用字符串常量初始化字符数组时自动添加 '\0',手动逐个字符复制属于手动操作,系统不会自动补充,必须手动添加 '\0' 才能保证目标数组是合法字符串。
2、字符串删除程序中,只要遍历到要删除的字符位置,就可以终止循环。( )
【答案】×
【解析】需要遍历源字符串的所有有效字符(直到 '\0'),才能将所有不需要删除的字符都复制到目标数组,若提前终止循环,会导致后续有效字符被遗漏。
3、gets函数可以读取包含空格、制表符的整行字符串,直到遇到换行符为止。( )
【答案】√
【解析】这是gets函数的核心特性,区别于scanf("%s")的输入限制,适合输入带空格的自然语言字符串,比如用户输入的 "im boy"。
3、 填空题(本题共2题)
1、手动复制字符串的核心逻辑是:通过____遍历源字符串的每个有效字符,将其逐个赋值给目标数组,最后给目标数组添加字符串结束标志 '\0'。
【答案】while(或 for)循环
【解析】手动复制字符串必须依靠循环依次遍历每个字符,不能直接整体赋值,完成赋值后必须添加字符串结束符才能正常使用。
2、在字符串删除程序中,当遍历到需要删除的字符时,应____该字符,继续遍历下一个字符;当遍历到有效字符时,将其复制到目标数组。
【答案】跳过
【解析】跳过需要删除的字符,才能保证目标数组中不包含该字符,实现删除的效果。
4、 读程序写结果题(本题共1题)
1、阅读下面的 C 语言程序,写出程序运行后的输出结果。
【程序代码】
#include <stdio.h>
int main() {
char src[] = "student";
char dest[10];
int i = 0;
while(src[i] != '\0') {
dest[i] = src[i];
i++;
}
dest[i] = '\0';
printf("%s", dest);
return 0;
}
【答案】
程序运行结果:
student
【解析】
程序初始化循环变量 i=0,通过 while 循环逐个将 src 数组的字符复制到 dest 数组,直到遍历到 src 的字符串结束标志 '\0'。复制完成后,给 dest 数组的对应位置添加 '\0',确保 dest 是合法字符串,最后通过 printf 输出 dest 的内容,结果为 "student"。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$