第21练 5.3-5.4 字符串处理函数、数组应用实例 《C语言》 (第五版) 一课一练 (山东省)

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

资源信息

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

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《C语言》(第五版)《一课一练》第21练,内容是5.3-5.4 字符串处理函数、数组应用实例。 《C语言》(第五版)一课一练 第21练 5.3-5.4 字符串处理函数、数组应用实例 一、单选题 1. 以下选项中,能够从键盘读取一行字符串(含空格)存入字符数组s的函数是( ) A. scanf("%s", s); B. getchar(s); C. gets(s); D. scanf("%c", s); 2. 已知 char str[]="Hello"; 执行 puts(str); 后输出的内容是( ) A. Hello并自动换行 B. Hello(不自动换行) C. 输出一个空行,无文本内容 D. 输出"Hello"并带双引号 3. 已知 char s1[20]="Hello", s2[]="World"; 执行 strcat(s1, s2); 后s1的内容是( ) A. "Hello"(s2因空间不足以连接被忽略) B. "WorldHello"(s2被连接到s1之前) C. "Hello World"(中间自动添加空格) D. "HelloWorld"(s2被连接到s1末尾) 4. 已知 char a[20]; 要将字符串"China"复制到数组a中,正确语句是( ) A. a = "China"; B. strcpy(a, "China"); C. strcpy("China", a); D. strcat(a, "China"); 5. 已知 char s[]="ABCDEF"; 则以下函数调用返回值最大的是( ) A. sizeof(s) B. strlen(s) C. strcmp(s, "ABCDEF") D. strcmp(s, "abc") 6. 已知 char s1[20]="C", s2[20]="Language"; strcat(s1, " "); strcat(s1, s2); printf("%s", s1); 输出结果是( ) A. CLanguage B. C Language C. C Language D. Language C 7. 冒泡排序对数组{3,1,4,1,5}进行第一轮排序(从后向前比较)后,数组变为( ) A. {1,3,4,1,5} B. {3,1,1,4,5} C. {1,1,3,4,5} D. {1,3,1,4,5} 二、简答题 8. 以下程序的运行结果是【··】。 #include <stdio.h> #include <string.h> main() { char s1[30] = "Tsingtao", s2[30] = "Beer"; strcat(s1, " "); strcat(s1, s2); printf("%s ", s1); printf("%d ", strlen(s1)); } 三、案例分析题 9. 以下程序的功能是不使用strcat函数,将字符串t连接到字符串s的末尾。请填空。 #include <stdio.h> main() { char s[50] = "Hello", t[] = "World"; int i = 0, j = 0; while (s[i] != '【1】') i++; while (t[j] != '\0') { s[【2】] = t[j]; i++; 【3】; } s[i] = '\0'; puts(s); } 四、综合应用题 10. 编写一个C程序:从键盘输入8个整数存入一维数组,使用选择排序法(Selection Sort)将数组从小到大排序,最后输出排序后的数组元素。 选择排序原理:每轮从未排序部分选出最小元素,将该元素交换到当前轮次的起始位置。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《C语言》(第五版)《一课一练》第21练,内容是5.3-5.4 字符串处理函数、数组应用实例。 《C语言》(第五版)一课一练 第21练 5.3-5.4 字符串处理函数、数组应用实例 一、单选题 1. 以下选项中,能够从键盘读取一行字符串(含空格)存入字符数组s的函数是( ) A. scanf("%s", s); B. getchar(s); C. gets(s); D. scanf("%c", s); 【答案】C 【解析】gets()函数可以读入包含空格的一整行字符串,直到遇到换行符为止,不会因为空格而截断输入。scanf("%s",s)遇到空格会停止读取,不能完整读取含空格的字符串。getchar()每次读一个字符。scanf("%c",s)也读取单个字符。 2. 已知 char str[]="Hello"; 执行 puts(str); 后输出的内容是( ) A. Hello并自动换行 B. Hello(不自动换行) C. 输出一个空行,无文本内容 D. 输出"Hello"并带双引号 【答案】A 【解析】puts()函数输出字符串后会自动追加一个换行符。因此puts(str)输出Hello,光标自动换到下一行。与之对比,printf("%s",str)输出后不会自动换行。puts要求的参数是一个字符串,输出的内容不包含双引号。 3. 已知 char s1[20]="Hello", s2[]="World"; 执行 strcat(s1, s2); 后s1的内容是( ) A. "Hello"(s2因空间不足以连接被忽略) B. "WorldHello"(s2被连接到s1之前) C. "Hello World"(中间自动添加空格) D. "HelloWorld"(s2被连接到s1末尾) 【答案】D 【解析】strcat(s1,s2)的功能是将s2的内容连接到s1的末尾。执行前s1="Hello",s2="World",连接后s1="HelloWorld"。使用strcat时要求s1的字符数组有足够空间容纳连接后的全部字符。strcat不会自动在中间添加空格,也不会改变s2的内容。 4. 已知 char a[20]; 要将字符串"China"复制到数组a中,正确语句是( ) A. a = "China"; B. strcpy(a, "China"); C. strcpy("China", a); D. strcat(a, "China"); 【答案】B 【解析】strcpy(目标,源)将源字符串复制到目标数组中,包括'\0'。B写法正确,将"China"复制到a。A中通过赋值运算符无法对数组整体赋值,写法错误。C中参数顺序反了,strcpy第一个参数是目标数组。D中strcat是连接函数,功能不同于复制操作。 5. 已知 char s[]="ABCDEF"; 则以下函数调用返回值最大的是( ) A. sizeof(s) B. strlen(s) C. strcmp(s, "ABCDEF") D. strcmp(s, "abc") 【答案】A 【解析】strlen(s)返回字符串长度6(不含'\0')。strcmp(s,"ABCDEF")比较相等返回0。strcmp(s,"abc")因大写字母ASCII值小于小写,返回负值。sizeof(s)求数组变量占用的内存字节数,s含6个字符+1个'\0',共7字节。7是四个选项中的最大值。 6. 已知 char s1[20]="C", s2[20]="Language"; strcat(s1, " "); strcat(s1, s2); printf("%s", s1); 输出结果是( ) A. CLanguage B. C Language C. C Language D. Language C 【答案】C 【解析】执行过程:s1初始为"C",strcat(s1," ")连接空格后s1="C ",strcat(s1,s2)继续连接s2="Language"后s1="C Language"。两次strcat调用将三个部分依次连接到s1末尾。s2的内容未被修改,输出结果包含C空格Language。 7. 冒泡排序对数组{3,1,4,1,5}进行第一轮排序(从后向前比较)后,数组变为( ) A. {1,3,4,1,5} B. {3,1,1,4,5} C. {1,1,3,4,5} D. {1,3,1,4,5} 【答案】D 【解析】冒泡排序可以从前向后,也可以从后向前依次比较相邻两元素。从后向前比较:第1步比较a[4]和a[3],5>1不交换→{3,1,4,1,5};第2步a[3]和a[2],1<4交换→{3,1,1,4,5};第3步a[2]和a[1],1=1不交换→{3,1,1,4,5};第4步a[1]和a[0],1<3交换→{1,3,1,4,5}。 二、简答题 8. 以下程序的运行结果是【··】。 #include <stdio.h> #include <string.h> main() { char s1[30] = "Tsingtao", s2[30] = "Beer"; strcat(s1, " "); strcat(s1, s2); printf("%s ", s1); printf("%d ", strlen(s1)); } 【答案】Tsingtao Beer 12 【解析】s1初始为"Tsingtao"(8个字符),strcat(s1," ")追加空格后s1="Tsingtao ",strcat(s1,s2)追加"Beer"(4个字符)后s1="Tsingtao Beer",共12个字符(含空格)。strlen统计到'\0'之前的字符数,空格也计入长度,返回12。 三、案例分析题 9. 以下程序的功能是不使用strcat函数,将字符串t连接到字符串s的末尾。请填空。 #include <stdio.h> main() { char s[50] = "Hello", t[] = "World"; int i = 0, j = 0; while (s[i] != '【1】') i++; while (t[j] != '\0') { s[【2】] = t[j]; i++; 【3】; } s[i] = '\0'; puts(s); } 【答案】【1】\0 【2】i 【3】j++ 【解析】第一空:第一个while循环找到s中'\0'的位置(字符串末尾),此时i指向s的结束位置。第二空:s[i]=t[j]将t中的字符逐个复制到s末尾,i从结束位置开始递增。第三空:j++使循环变量自增遍历t的每个字符。最后s[i]='\0'为连接后的字符串补上结束标志。 四、综合应用题 10. 编写一个C程序:从键盘输入8个整数存入一维数组,使用选择排序法(Selection Sort)将数组从小到大排序,最后输出排序后的数组元素。 选择排序原理:每轮从未排序部分选出最小元素,将该元素交换到当前轮次的起始位置。 【答案】#include <stdio.h> main() { int a[8], i, j, min_idx, temp; printf("请输入8个整数: "); for (i = 0; i < 8; i++) scanf("%d", &a[i]); for (i = 0; i < 7; i++) { min_idx = i; for (j = i + 1; j < 8; j++) if (a[j] < a[min_idx]) min_idx = j; if (min_idx != i) { temp = a[i]; a[i] = a[min_idx]; a[min_idx] = temp; } } printf("排序后的数组: "); for (i = 0; i < 8; i++) printf("%d ", a[i]); printf(" "); } 【解析】选择排序的外层循环控制轮次(i从0到6),每轮先设定min_idx=i作为本轮最小值的候选位置,内层循环从i+1到末尾查找真正的最小值下标。内层结束后,若min_idx不等于i,交换a[i]与a[min_idx]。经过7轮后,数组完成升序排列。选择排序每轮进行一次交换。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第21练 5.3-5.4 字符串处理函数、数组应用实例 《C语言》 (第五版) 一课一练 (山东省)
1
第21练 5.3-5.4 字符串处理函数、数组应用实例 《C语言》 (第五版) 一课一练 (山东省)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。