第26练 单元6 一维数组应用《C语言程序设计》(高教版第2版)一课一练

| 2份
| 7页
| 26人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元6的第26练,内容涵盖单元6“考试系统”的数据存储的6.3.1 一维数组应用。 《C语言程序设计》(高教版第2版)一课一练 第26练 单元6 “考试系统”的数据存储 6.3.1 一维数组应用 1、 单项选择题(本题共5小题) 1、用一维数组实现斐波那契数列前 40 项,以下数组初始化代码符合要求的是( ) A. int f[40]; f[0]=1; f[1]=1; B. int f[40]; f[1]=1; f[2]=1; C. int f[40]; f[0]=0; f[1]=1; D. int f[40]; f[0]=1; f[1]=0; 2、冒泡排序对 n 个元素进行从小到大排序,最多需要执行( )比较。 A. n-1 轮 B. n 轮 C. n+1 轮 D. n/2 轮 3、以下关于冒泡排序的描述,正确的是( ) A. 每一轮比较过程中必须发生元素交换 B. 每轮比较结束后,当前未排序的最大元素会移到末尾位置 C. 冒泡排序属于不稳定排序算法 D. 冒泡排序的时间复杂度为 O (log₂n) 4、用一维数组存储斐波那契数列前 40 项,数组长度至少需要定义为( ) A. 38 B. 39 C. 40 D. 41 5、冒泡排序过程中,某一轮比较没有发生任何元素交换,说明( ) A. 排序出现逻辑错误 B. 数组已经完全有序,可以提前终止排序 C. 需要重新开始排序流程 D. 当前轮次的比较无效 2、 判断题(本题共4题) 1、用一维数组实现斐波那契数列时,必须将数组下标从 1 开始,才能对应数列的第 1、2 项。( ) 2、冒泡排序每一轮的比较次数会逐轮减少,因为每轮都会确定一个最大元素的位置,无需再参与后续比较。( ) 3、用数组存储斐波那契数列时,递推公式为 f [i] = f [i+1] + f [i+2](i≥2)。( ) 4、冒泡排序是稳定排序算法,即排序后相同值元素的相对位置不会改变。( ) 3、 程序填空题(本题共1题) 1、题目描述:以下程序采用冒泡排序对输入的 10 个整数进行从小到大排序,请补充缺失代码使程序正常运行。 #include <stdio.h> int main() { int arr[10]; int i, j, temp; // 输入10个整数 printf("请输入10个整数: "); for(i = 0; i < 10; i++) { scanf("%d", (1)____); } // 冒泡排序核心逻辑 for(i = 0; i < (2)____; i++) { // 控制排序轮数 // 控制每轮比较次数 for(j = 0; j < (3)____; j++) { // 比较相邻元素,若前大于后则交换 if(arr[j] > arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = (4)____; } } } // 输出排序后的数组 printf("排序后的数组为: "); for(i = 0; i < 10; i++) { printf("%d ", arr[i]); } return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元6的第26练,内容涵盖单元6“考试系统”的数据存储的6.3.1 一维数组应用。 《C语言程序设计》(高教版第2版)一课一练 第26练 单元6 “考试系统”的数据存储 6.3.1 一维数组应用 1、 单项选择题(本题共5小题) 1、用一维数组实现斐波那契数列前 40 项,以下数组初始化代码符合要求的是( ) A. int f[40]; f[0]=1; f[1]=1; B. int f[40]; f[1]=1; f[2]=1; C. int f[40]; f[0]=0; f[1]=1; D. int f[40]; f[0]=1; f[1]=0; 【答案】A 【解析】斐波那契数列第 1、2 个数均为 1,数组下标从 0 开始,因此 f [0] 对应数列第 1 项,f [1] 对应数列第 2 项,初始值均为 1,符合循环递推的前置条件。 2、冒泡排序对 n 个元素进行从小到大排序,最多需要执行( )比较。 A. n-1 轮 B. n 轮 C. n+1 轮 D. n/2 轮 【答案】A 【解析】冒泡排序每轮会将当前未排序的最大元素移到末尾,n 个元素只需确定 n-1 个元素的位置,最后一个元素自然有序,因此最多需要 n-1 轮比较。 3、以下关于冒泡排序的描述,正确的是( ) A. 每一轮比较过程中必须发生元素交换 B. 每轮比较结束后,当前未排序的最大元素会移到末尾位置 C. 冒泡排序属于不稳定排序算法 D. 冒泡排序的时间复杂度为 O (log₂n) 【答案】B 【解析】选项 A 错误,若数组已有序,某轮比较不会发生交换;选项 C 错误,冒泡排序仅交换相邻逆序元素,相同值元素相对位置不变,属于稳定排序;选项 D 错误,冒泡排序时间复杂度为 O (n²);只有选项 B 符合冒泡排序的核心逻辑。 4、用一维数组存储斐波那契数列前 40 项,数组长度至少需要定义为( ) A. 38 B. 39 C. 40 D. 41 【答案】C 【解析】数组下标从 0 开始,存储前 40 项需要下标 0 到 39,共 40 个元素,因此数组长度至少为 40。 5、冒泡排序过程中,某一轮比较没有发生任何元素交换,说明( ) A. 排序出现逻辑错误 B. 数组已经完全有序,可以提前终止排序 C. 需要重新开始排序流程 D. 当前轮次的比较无效 【答案】B 【解析】若某一轮没有元素交换,说明所有相邻元素都满足前小后大的有序状态,整个数组已经排序完成,无需继续后续轮次,可提前结束排序提升效率。 2、 判断题(本题共4题) 1、用一维数组实现斐波那契数列时,必须将数组下标从 1 开始,才能对应数列的第 1、2 项。( ) 【答案】× 【解析】数组下标可以从 0 开始,只需将数列第 1 项存到 f [0],第 2 项存到 f [1],后续通过 f [i] = f [i-1]+f [i-2] 递推即可,下标起始位置不影响逻辑实现。 2、冒泡排序每一轮的比较次数会逐轮减少,因为每轮都会确定一个最大元素的位置,无需再参与后续比较。( ) 【答案】√ 【解析】例如对 10 个元素排序,第 1 轮比较 9 次,第 2 轮比较 8 次…… 最后 1 轮比较 1 次,每轮减少的次数等于已确定位置的元素数量,符合冒泡排序的优化逻辑。 3、用数组存储斐波那契数列时,递推公式为 f [i] = f [i+1] + f [i+2](i≥2)。( ) 【答案】× 【解析】正确的递推公式是 f [i] = f [i-1] + f [i-2],即当前项等于前两项之和,公式方向完全错误。 4、冒泡排序是稳定排序算法,即排序后相同值元素的相对位置不会改变。( ) 【答案】√ 【解析】冒泡排序仅交换相邻的逆序元素,相同值的元素不会触发交换操作,因此排序后它们的相对位置保持不变,属于稳定排序。 3、 程序填空题(本题共1题) 1、题目描述:以下程序采用冒泡排序对输入的 10 个整数进行从小到大排序,请补充缺失代码使程序正常运行。 #include <stdio.h> int main() { int arr[10]; int i, j, temp; // 输入10个整数 printf("请输入10个整数: "); for(i = 0; i < 10; i++) { scanf("%d", (1)____); } // 冒泡排序核心逻辑 for(i = 0; i < (2)____; i++) { // 控制排序轮数 // 控制每轮比较次数 for(j = 0; j < (3)____; j++) { // 比较相邻元素,若前大于后则交换 if(arr[j] > arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = (4)____; } } } // 输出排序后的数组 printf("排序后的数组为: "); for(i = 0; i < 10; i++) { printf("%d ", arr[i]); } return 0; } 【答案】 (1) &arr [i] (2) 9 (3) 9-i (4) temp 【解析】 (1):scanf需要传入变量的地址,arr[i]的地址是&arr[i],用于将输入的整数存储到数组对应位置。 (2):10 个元素需要进行 9 轮排序,每轮确定一个最大元素的位置,因此循环次数设置为 9(即 10-1)。 (3):每轮比较的次数逐轮减少,第 i 轮只需比较前9-i个元素,因为后 i 个元素已经有序,无需重复比较。 (4):交换元素时,将临时变量temp中存储的原arr[j]的值赋给arr[j+1],完成两个相邻元素的交换操作。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第26练 单元6 一维数组应用《C语言程序设计》(高教版第2版)一课一练-第1页
1

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。