第20练 5.3 字符数组的定义与初始化 《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/58480022.html
价格 1.00储值(1储值=1元)
来源 学科网

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《C语言》(第五版)《一课一练》第20练,内容是5.3 字符数组的定义与初始化。 《C语言》(第五版)一课一练 第20练 5.3 字符数组的定义与初始化 一、单选题 1. 以下选项中,能正确定义一个字符数组并初始化为字符串"Hello"的是( ) A. char s[5] = "Hello"; B. char s[] = 'Hello'; C. char s[] = {'H','e','l','l','o'}; D. char s[6] = "Hello"; 【答案】D 【解析】字符串"Hello"占5个字符加上'\0'结束标志共6个位置。A中s[5]存放容量为5个字符,无法容纳结束标志。B用了单引号,语法错误。C中缺少字符串结束标志'\0',这是字符数组而非完整的字符串。D以char s[6]="Hello"正确定义并分配了足够空间。 2. 关于C语言中字符数组与字符串,下列说法正确的是( ) A. 字符数组就是字符串,两者完全相同 B. 字符串不能存储在字符数组中 C. 字符串以字符数组形式存储,以'\0'结束 D. 字符数组的长度就是字符串的长度 【答案】C 【解析】C语言中没有专门的字符串类型,字符串以字符数组的形式存储,用'\0'(ASCII码为0的空字符)作为结束标志。字符数组不一定存放字符串;如果字符数组最后没有'\0',则是普通字符数组,不能当作字符串使用。 3. 已知 char str[8] = "China"; 则str[5]中存放的字符是( ) A. \0 B. a C. 空格字符 D. 不确定的值 【答案】A 【解析】用字符串"China"初始化字符数组时,系统自动在字符串末尾添加'\0'结束标志。str[0]='C'、str[1]='h'、str[2]='i'、str[3]='n'、str[4]='a'、str[5]='\0'。str[6]和str[7]未被初始化值覆盖,但题目中整个数组用字符串初始化,剩余位置也会自动赋'\0'。 4. 在C语言中,字符串结束标志'\0'的ASCII码值是( ) A. 48(数字0的ASCII码) B. 10(换行符的ASCII码) C. 32(空格字符的ASCII码) D. 0(空字符的ASCII码) 【答案】D 【解析】'\0'是空字符(null character),ASCII码值为0。注意区分'\0'、'0'(ASCII码48)和空格(ASCII码32),这三者是完全不同的字符。字符串处理函数(如strlen、strcpy等)都通过查找'\0'来确定字符串的结束位置。 5. 在main函数中声明 char ch[10]; 然后执行 ch[0]='A'; ch[1]='B'; ch[2]='C'; 则 strlen(ch) 的值是( ) A. 10(数组的总长度) B. 不确定(未赋值元素含随机值) C. 3(已赋值的字符个数) D. 0(因为没有'\0'结束符) 【答案】B 【解析】在函数内声明char ch[10]后面没有用花括号初始化,数组元素值为随机值。前三个元素被赋值,ch[3]~ch[9]的内容是随机的未定义值。strlen从首地址开始找'\0',随机值中何时出现'\0'是不确定的,因此返回值不可预测。要得到正确的字符串长度,需要手动在末尾添加'\0'结束标志。 6. 已知 char s1[]="ab", s2[]={'a','b'}; 关于s1和s2,下列说法正确的是( ) A. sizeof(s1)比sizeof(s2)大1个字节 B. 两个数组占用同样大小的内存空间 C. sizeof(s2)比sizeof(s1)大1个字节 D. sizeof(s1)与sizeof(s2)不确定 【答案】A 【解析】char s1[]="ab"自动分配3个字节:'a','b','\0'。char s2[]={'a','b'}元素个数由初始化列表决定,分配2个字节,不含'\0'。因此sizeof(s1)=3,sizeof(s2)=2,s1比s2多1个字节。这是字符串初始化与字符列表初始化的本质区别。 7. 以下字符数组的初始化语句中,存在语法错误的是( ) A. char s[] = "ABCD"; B. char s[10] = "ABCD"; C. char s[3] = "ABCD"; D. char s[5] = {'A','B','C','D'}; 【答案】C 【解析】选项C中s[3]容纳空间为3个字符,而"ABCD"需要5个字节(4个字符加1个'\0'),初始化字符串长度超过数组空间,编译器会报错。选项A未指定长度,由初始化字符串确定长度为5。选项B分配了足够空间。选项D逐个字符赋初值,未赋完的元素自动为0,合法。 二、简答题 8. 以下程序的运行结果是【··】。 #include <stdio.h> main() { char s1[10] = "Shandong"; char s2[] = {'P','r','o',',','C','\0'}; printf("%s", s1); printf(" "); printf("%s", s2); } 【答案】Shandong Pro,C 【解析】s1用字符串"Shandong"初始化,系统自动添加'\0',printf用%s格式输出时遇到'\0'停止,输出"Shandong"。s2用字符列表初始化,末尾手工添加了'\0',因此用%s输出时也是完整的字符串,输出"Pro,C"。两句printf之间有一次换行。 三、案例分析题 9. 以下程序的功能是统计字符串中大写字母的个数。请填空。 #include <stdio.h> main() { char str[50] = "HelloWorld2024"; int i = 0, count = 【1】; while (str[i] != '【2】') { if (str[i] >= 'A' 【3】 str[i] <= 'Z') count++; i++; } printf("大写字母个数=%d ", count); } 【答案】【1】0 【2】\0 【3】&& 【解析】count初始为0用来累计大写字母个数。while循环遍历字符串,判断条件str[i]!='\0'确保遍历到字符串末尾停止。if中用条件str[i]>='A' && str[i]<='Z'判断当前字符是否为大写字母,借助ASCII码中大写字母A~Z连续排列的特性。"HelloWorld2024"中有H和W两个大写字母。 四、综合应用题 10. 编写一个C程序:从键盘输入一个字符串(不超过80个字符),统计字符串中元音字母(a、e、i、o、u,不区分大小写)的个数,并输出结果。 提示:可以用字符数组存储输入的字符串,遍历每个字符判断是否为元音字母。 【答案】#include <stdio.h> main() { char str[81]; int i = 0, count = 0; printf("请输入一个字符串:"); gets(str); while (str[i] != '\0') { char ch = str[i]; if (ch >= 'A' && ch <= 'Z') ch = ch + 32; if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') count++; i++; } printf("元音字母个数=%d ", count); } 【解析】程序用gets()读取一行字符串存入str。遍历时先判断字符是否为大写字母,如果是则转换为小写(大写字母ASCII码值+32得到对应小写字母),方便统一判断。然后用if条件依次检查是否为a、e、i、o、u五个元音字母。不符合判断条件的字符被跳过,符合条件的count递增。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《C语言》(第五版)《一课一练》第20练,内容是5.3 字符数组的定义与初始化。 《C语言》(第五版)一课一练 第20练 5.3 字符数组的定义与初始化 一、单选题 1. 以下选项中,能正确定义一个字符数组并初始化为字符串"Hello"的是( ) A. char s[5] = "Hello"; B. char s[] = 'Hello'; C. char s[] = {'H','e','l','l','o'}; D. char s[6] = "Hello"; 2. 关于C语言中字符数组与字符串,下列说法正确的是( ) A. 字符数组就是字符串,两者完全相同 B. 字符串不能存储在字符数组中 C. 字符串以字符数组形式存储,以'\0'结束 D. 字符数组的长度就是字符串的长度 3. 已知 char str[8] = "China"; 则str[5]中存放的字符是( ) A. \0 B. a C. 空格字符 D. 不确定的值 4. 在C语言中,字符串结束标志'\0'的ASCII码值是( ) A. 48(数字0的ASCII码) B. 10(换行符的ASCII码) C. 32(空格字符的ASCII码) D. 0(空字符的ASCII码) 5. 在main函数中声明 char ch[10]; 然后执行 ch[0]='A'; ch[1]='B'; ch[2]='C'; 则 strlen(ch) 的值是( ) A. 10(数组的总长度) B. 不确定(未赋值元素含随机值) C. 3(已赋值的字符个数) D. 0(因为没有'\0'结束符) 6. 已知 char s1[]="ab", s2[]={'a','b'}; 关于s1和s2,下列说法正确的是( ) A. sizeof(s1)比sizeof(s2)大1个字节 B. 两个数组占用同样大小的内存空间 C. sizeof(s2)比sizeof(s1)大1个字节 D. sizeof(s1)与sizeof(s2)不确定 7. 以下字符数组的初始化语句中,存在语法错误的是( ) A. char s[] = "ABCD"; B. char s[10] = "ABCD"; C. char s[3] = "ABCD"; D. char s[5] = {'A','B','C','D'}; 二、简答题 8. 以下程序的运行结果是【··】。 #include <stdio.h> main() { char s1[10] = "Shandong"; char s2[] = {'P','r','o',',','C','\0'}; printf("%s", s1); printf(" "); printf("%s", s2); } 三、案例分析题 9. 以下程序的功能是统计字符串中大写字母的个数。请填空。 #include <stdio.h> main() { char str[50] = "HelloWorld2024"; int i = 0, count = 【1】; while (str[i] != '【2】') { if (str[i] >= 'A' 【3】 str[i] <= 'Z') count++; i++; } printf("大写字母个数=%d ", count); } 四、综合应用题 10. 编写一个C程序:从键盘输入一个字符串(不超过80个字符),统计字符串中元音字母(a、e、i、o、u,不区分大小写)的个数,并输出结果。 提示:可以用字符数组存储输入的字符串,遍历每个字符判断是否为元音字母。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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