第17练 5.3 字符数组的定义和使用 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)

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

资源信息

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

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第17练,内容是5.3 字符数组的定义和使用。 《编程语言基础——C语言》(第5版)一课一练 第17练 5.3 字符数组的定义和使用 一、单选题 1. 关于字符数组,以下说法正确的是( ) A. 字符数组不能存储字符串 B. 字符数组的定义格式与整型数组完全不同 C. 字符数组的元素类型为char,可用于存储字符串 D. 字符数组的长度不能超过10 2. C语言中,字符串的结束标志是( ) A. 空格字符 B. '\0'(ASCII码为0的字符) C. 换行符' ' D. 回车符'\r' 3. 定义 char s[10] = "hello"; 则字符串s的长度(strlen(s)的值)是( ) A. 5 B. 6 C. 10 D. 9 4. 以下对字符数组初始化中,合法的是( ) A. char s[5] = "hello"; B. char s[] = 123; C. char s[3] = {'a','b','c','d'}; D. char s[] = "hello"; 5. 使用 scanf("%s", s); 输入字符串时,输入结束的标志是( ) A. 回车符 B. 空格符 C. 分号 D. '\0'字符 6. 关于gets()函数和scanf("%s")函数,正确的说法是( ) A. gets()以回车为结束标志,可接收空格;scanf("%s")以空格为分隔符 B. 两者的功能完全相同 C. gets()不能接收空格 D. scanf("%s")以回车为结束标志 7. 设有 char s1[20] = "hello", s2[] = "world"; 执行 strcat(s1, s2); 后,s1的内容是( ) A. "hello" B. "world" C. "helloworld" D. "hello world" 二、程序运行结果题 8. 以下程序的运行结果是【··】。 #include <stdio.h> #include <string.h> main() { char s1[20] = "Hello", s2[] = "World"; strcat(s1, " "); strcat(s1, s2); printf("%s ", s1); printf("%d ", strlen(s1)); } 三、程序填空题 9. 以下程序的功能是:输入两个字符串,比较它们的大小并输出比较结果。请填空。 #include <stdio.h> #include <string.h> main() { char s1[30], s2[30]; int cmp; gets(s1); gets(s2); cmp = ______【1】______; if (cmp > 0) printf("s1 > s2 "); else if (cmp < 0) printf("s1 < s2 "); else printf("s1 == s2 "); } 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是将字符串s2复制到字符串s1中并输出。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 #include <string.h> L3 main() L4 { L5 char s1[20], s2[] = "Hello World"; L6 s1 = s2; L7 printf("%s ", s1); L8 } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第17练,内容是5.3 字符数组的定义和使用。 《编程语言基础——C语言》(第5版)一课一练 第17练 5.3 字符数组的定义和使用 一、单选题 1. 关于字符数组,以下说法正确的是( ) A. 字符数组不能存储字符串 B. 字符数组的定义格式与整型数组完全不同 C. 字符数组的元素类型为char,可用于存储字符串 D. 字符数组的长度不能超过10 【答案】C 【解析】字符数组即数组元素为字符类型(char)的数组,定义格式与一维/二维数组类似。字符数组可以存放字符串数据,在C语言中字符串是当做字符数组处理的。 2. C语言中,字符串的结束标志是( ) A. 空格字符 B. '\0'(ASCII码为0的字符) C. 换行符' ' D. 回车符'\r' 【答案】B 【解析】C语言规定以'\0'(ASCII值为0的空字符)作为字符串的结束标志符。在存储字符串常量时系统自动在其末尾添加'\0'。 3. 定义 char s[10] = "hello"; 则字符串s的长度(strlen(s)的值)是( ) A. 5 B. 6 C. 10 D. 9 【答案】A 【解析】strlen()计算的是首次出现'\0'之前的字符个数。 4. 以下对字符数组初始化中,合法的是( ) A. char s[5] = "hello"; B. char s[] = 123; C. char s[3] = {'a','b','c','d'}; D. char s[] = "hello"; 【答案】D 【解析】选项D缺省长度,由"hello"的6个字符含'\0'确定数组长度为6。选项A需6字节而数组长度为5;选项B类型不匹配;选项C初值个数4超过数组长度3。 5. 使用 scanf("%s", s); 输入字符串时,输入结束的标志是( ) A. 回车符 B. 空格符 C. 分号 D. '\0'字符 【答案】B 【解析】scanf()函数使用%s格式时,以空格、制表符(Tab)、回车符中的任一种作为输入结束标志。因此带空格的字符串会接收到空格前面的部分。 6. 关于gets()函数和scanf("%s")函数,正确的说法是( ) A. scanf("%s")以空格为分隔符 B. 两者的功能完全相同 C. gets()不能接收空格 D. scanf("%s")以回车为结束标志 【答案】A 【解析】gets()与scanf("%s")的区别:gets()以回车符作为输入结束标志,空格可作为字符串内容;scanf("%s")以空格、Tab、回车等作为结束标志,不能接收含空格的字符串。 7. 设有 char s1[20] = "hello", s2[] = "world"; 执行 strcat(s1, s2); 后,s1的内容是( ) A. "hello" B. "world" C. "helloworld" D. "hello world" 【答案】C 【解析】strcat(s1,s2)将s2的内容连接到s1的后面。系统自动删除s1末尾的'\0',将s2内容连接进来,之后在末尾添加'\0'。结果为"helloworld",中间没有空格。 二、程序运行结果题 8. 以下程序的运行结果是【··】。 #include <stdio.h> #include <string.h> main() { char s1[20] = "Hello", s2[] = "World"; strcat(s1, " "); strcat(s1, s2); printf("%s ", s1); printf("%d ", strlen(s1)); } 【答案】Hello World 11 【解析】先连接空格(s1="Hello "),再连接"World"(s1="Hello World")。strlen计算'\0'前字符数:H(1)e(2)l(3)l(4)o(5)空格(6)W(7)o(8)r(9)l(10)d(11) = 11。 三、程序填空题 9. 以下程序的功能是:输入两个字符串,比较它们的大小并输出比较结果。请填空。 #include <stdio.h> #include <string.h> main() { char s1[30], s2[30]; int cmp; gets(s1); gets(s2); cmp = ______【1】______; if (cmp > 0) printf("s1 > s2 "); else if (cmp < 0) printf("s1 < s2 "); else printf("s1 == s2 "); } 【答案】【1】strcmp(s1, s2) 【解析】strcmp(s1,s2)用于比较两个字符串:若s1>s2则返回值>0,s1<s2则返回值<0,相等则返回0。比较是按ASCII码从左至右依次比较对应字符。 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是将字符串s2复制到字符串s1中并输出。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 #include <string.h> L3 main() L4 { L5 char s1[20], s2[] = "Hello World"; L6 s1 = s2; L7 printf("%s ", s1); L8 } 【答案】【1】L6: s1 = s2; → 修改为 strcpy(s1, s2);(数组名是地址常量,不能作为赋值语句的左值,需用strcpy()函数复制字符串内容) 【解析】在C语言中,数组名是地址常量,代表数组在内存中的首地址,不能进行赋值运算。要将一个字符串的内容复制到另一个字符数组中,必须使用strcpy()函数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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