第22练 第5章 数组综合 《C语言》 (第五版) 一课一练 (山东省)

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

资源信息

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

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《C语言》(第五版)《一课一练》第22练,内容是第5章 数组综合。 《C语言》(第五版)一课一练 第22练 第5章 数组综合 一、单选题 1. 已知 int a[]={5,10,15,20,25}; 以下说法正确的是( ) A. 数组a的长度为5,由初始化数据个数确定 B. 数组a的长度为4,因为最后一个元素下标是4 C. 数组a的长度不确定,需要在定义时指定 D. a[5]的值为25,是数组的最后一个元素 【答案】A 【解析】定义时省略数组长度,编译器根据初始化列表中的数据个数自动确定数组长度为5。因此数组元素为a[0]a[4],合法下标范围04。a[5]是第6个元素,已超出数组范围属于越界访问。数组最后一个元素a[4]的值为25。 2. 已知 int x[2][3]; 以下引用中下标合法的是( ) A. x[2][1] B. x[1][3] C. x[0][3] D. x[1][2] 【答案】D 【解析】二维数组x[2][3]的行下标范围01,列下标范围02。x[1][2]行下标1列下标2均在合法范围内。x[2][1]的行下标2越界,x[1][3]的列下标3越界,x[0][3]的列下标3越界。使用二维数组时必须确保行列下标都在定义的范围内。 3. 已知 char str[10]="abc"; str[3]='d'; 执行后下列语句输出结果正确的是( ) A. printf("%s", str); 输出 abcd 加乱码 B. printf("%s", str); 输出 abcd C. strlen(str) 返回 4 D. strlen(str) 返回 5 【答案】B 【解析】初始化后str='a','b','c','\0',...。str[3]='d'将原本的'\0'替换为'd',str[4]仍是初始化的0(即'\0')。printf用%s输出时,从str[0]开始直到遇到'\0'停止,输出"abcd"。strlen同样在'\0'处停止计数,返回4。两种函数的结果都正确。 4. int a[6]={1,3,5,7,9,11}, i, sum=0; for(i=1; i<6; i+=2) sum+=a[i]; 执行后sum的值是( ) A. 21(a[1]+a[3]+a[5]) B. 36(所有元素之和) C. 12(a[1]+a[3]) D. 27(a[0]+a[2]+a[4]) 【答案】A 【解析】循环变量i从1开始步长为2:i=1时sum+=a[1]=3,i=3时sum+=a[3]=7,i=5时sum+=a[5]=11,i=7条件i<6为假退出。sum=3+7+11=21。该段代码求的是下标为奇数的元素之和。i从0改为1以及步长的设置决定了访问的元素范围。 5. 关于C语言的字符串处理函数,以下说法正确的是( ) A. strlen("ABC\0DE") 返回值是 5 B. strcmp("abc","ABC") 返回值是 0 C. strlen函数在遇到第一个'\0'时停止计数 D. strcpy 复制字符串时会自动检查目标数组空间 【答案】C 【解析】C正确,strlen从字符串首地址开始计数,遇到第一个'\0'即停止,因此strlen("ABC\0DE")返回3而非5。B中strcmp区分大小写,"abc"与"ABC"不相等,返回非0。D中strcpy不会检查目标空间是否足够,目标空间过小会导致缓冲区溢出。 6. int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}, s1=0, s2=0, i; for(i=0;i<3;i++) { s1+=a[i][i]; s2+=a[i][2-i]; } 执行后s1和s2的值分别是( ) A. s1=15, s2=15 B. s1=12, s2=12 C. s1=18, s2=12 D. s1=15, s2=15 【答案】D 【解析】s1累加a[0][0]+a[1][1]+a[2][2]=1+5+9=15(主对角线)。s2累加a[0][2]+a[1][1]+a[2][0]=3+5+7=15(副对角线)。此题中s1和s2都等于15,体现了对角线上元素求和的计算方法。主对角线元素行列下标相等,副对角线元素行列下标之和为定值n-1。 7. 已知数组a[]={8,3,6,1,9,4}; 执行以下冒泡排序(升序): for(i=0;i<5;i++) for(j=0;j<5-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } 第一轮(i=0)内层循环结束后,a[5]的值是( ) A. 8 B. 4 C. 9 D. 1 【答案】C 【解析】第一轮(i=0)内层循环j从0到4,通过相邻比较将最大值逐步后移:8>3交换→3,8,6,1,9,4;8>6交换→3,6,8,1,9,4;8>1交换→3,6,1,8,9,4;8<9不动;9>4交换→3,6,1,8,4,9。最终a[5]=9,最大值"冒泡"到了数组末尾。 二、简答题 8. 以下程序的运行结果是【··】。 #include <stdio.h> #include <string.h> main() { char s[30] = "Shangdong"; int i, len = strlen(s); for (i = 0; i < len / 2; i++) { char t = s[i]; s[i] = s[len-1-i]; s[len-1-i] = t; } puts(s); } 【答案】gnodgnahS 【解析】程序实现了字符串的反转功能。len=strlen("Shangdong")=9,循环i从0到3(len/2=4次),每次交换对称位置的字符:i=0交换s[0]和s[8](S和g),i=1交换s[1]和s[7](h和n),依次类推。4次交换后字符串完全反转,输出"gnodgnahS"。 三、案例分析题 9. 以下程序的功能是将一个3×3矩阵主对角线上的元素全部置为1,其余元素置为0(形成单位矩阵)。请填空。 #include <stdio.h> main() { int a[3][3], i, j; for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) { if (【1】) a[i][j] = 【2】; else a[i][j] = 【3】; } for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) printf("%d ", a[i][j]); printf(" "); } } 【答案】【1】i == j 【2】1 【3】0 【解析】单位矩阵的特点是主对角线(行下标=列下标)上的元素为1,其余为0。if(i==j)判断当前位置是否在主角线上,是则a[i][j]=1,否则a[i][j]=0。输出时应得到: 1 0 0 0 1 0 0 0 1 的3×3矩阵格式。 四、综合应用题 10. 编写一个C程序:定义一个字符数组存放一个字符串(从键盘输入,不超过50个字符),统计该字符串中数字字符的个数,同时将所有小写字母转换为大写字母(如果存在),最后输出转换后的字符串和数字字符个数。 提示:小写字母az的ASCII码值比大写字母AZ的ASCII码值大32。 【答案】#include <stdio.h> main() { char str[51]; int i = 0, digit_count = 0; printf("请输入一个字符串:"); gets(str); while (str[i] != '\0') { if (str[i] >= '0' && str[i] <= '9') digit_count++; else if (str[i] >= 'a' && str[i] <= 'z') str[i] = str[i] - 32; i++; } printf("转换后的字符串:%s ", str); printf("数字字符个数:%d ", digit_count); } 【解析】程序用gets输入字符串,while遍历每个字符。对当前字符用if判断:若在'0''9'范围内则digit_count递增;若在'a''z'范围内则减32转为大写字母。其他字符保持不变。遍历完成后输出转换后的字符串和数字字符统计个数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《C语言》(第五版)《一课一练》第22练,内容是第5章 数组综合。 《C语言》(第五版)一课一练 第22练 第5章 数组综合 一、单选题 1. 已知 int a[]={5,10,15,20,25}; 以下说法正确的是( ) A. 数组a的长度为5,由初始化数据个数确定 B. 数组a的长度为4,因为最后一个元素下标是4 C. 数组a的长度不确定,需要在定义时指定 D. a[5]的值为25,是数组的最后一个元素 2. 已知 int x[2][3]; 以下引用中下标合法的是( ) A. x[2][1] B. x[1][3] C. x[0][3] D. x[1][2] 3. 已知 char str[10]="abc"; str[3]='d'; 执行后下列语句输出结果正确的是( ) A. printf("%s", str); 输出 abcd 加乱码 B. printf("%s", str); 输出 abcd C. strlen(str) 返回 4 D. strlen(str) 返回 5 4. int a[6]={1,3,5,7,9,11}, i, sum=0; for(i=1; i<6; i+=2) sum+=a[i]; 执行后sum的值是( ) A. 21(a[1]+a[3]+a[5]) B. 36(所有元素之和) C. 12(a[1]+a[3]) D. 27(a[0]+a[2]+a[4]) 5. 关于C语言的字符串处理函数,以下说法正确的是( ) A. strlen("ABC\0DE") 返回值是 5 B. strcmp("abc","ABC") 返回值是 0 C. strlen函数在遇到第一个'\0'时停止计数 D. strcpy 复制字符串时会自动检查目标数组空间 6. int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}, s1=0, s2=0, i; for(i=0;i<3;i++) { s1+=a[i][i]; s2+=a[i][2-i]; } 执行后s1和s2的值分别是( ) A. s1=15, s2=15 B. s1=12, s2=12 C. s1=18, s2=12 D. s1=15, s2=15 7. 已知数组a[]={8,3,6,1,9,4}; 执行以下冒泡排序(升序): for(i=0;i<5;i++) for(j=0;j<5-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } 第一轮(i=0)内层循环结束后,a[5]的值是( ) A. 8 B. 4 C. 9 D. 1 二、简答题 8. 以下程序的运行结果是【··】。 #include <stdio.h> #include <string.h> main() { char s[30] = "Shangdong"; int i, len = strlen(s); for (i = 0; i < len / 2; i++) { char t = s[i]; s[i] = s[len-1-i]; s[len-1-i] = t; } puts(s); } 三、案例分析题 9. 以下程序的功能是将一个3×3矩阵主对角线上的元素全部置为1,其余元素置为0(形成单位矩阵)。请填空。 #include <stdio.h> main() { int a[3][3], i, j; for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) { if (【1】) a[i][j] = 【2】; else a[i][j] = 【3】; } for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) printf("%d ", a[i][j]); printf(" "); } } 四、综合应用题 10. 编写一个C程序:定义一个字符数组存放一个字符串(从键盘输入,不超过50个字符),统计该字符串中数字字符的个数,同时将所有小写字母转换为大写字母(如果存在),最后输出转换后的字符串和数字字符个数。 提示:小写字母az的ASCII码值比大写字母AZ的ASCII码值大32。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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