Contest1886 - 2025-2026-1学期《C语言程序设计》:数组应用(二维数组、字符串、自定义排序)【25计算机】
实验目标:掌握二维数组、字符串的核心操作,理解自定义排序的实现逻辑,培养算法设计与优化思维,能够运用相关知识解决各类编程问题,提升代码编写与问题拆解能力。
-
二维数组:二维数组的定义、遍历、下标定位,以及在矩阵、方阵、三角结构中的存储与运算,是处理矩阵乘法、螺旋矩阵、杨辉三角等问题的基础。
-
字符串:字符串的输入输出、遍历与字符筛选,结合条件判断实现对字符特征的提取与处理,适用于手机靓号、国王的魔镜等字符串类问题。
-
自定义排序:基于比较规则的排序逻辑设计,如绝对值排序的自定义比较条件,通过修改排序算法的核心判断部分实现特殊需求的排序功能。
-
算法设计及优化:模拟算法的场景还原、递推算法的规律应用、去重与筛选的效率优化,以及通过边界条件处理减少冗余运算,提升代码执行效率。
-
数组类
题目:连续和、最长平台、求矩阵两对角线上的元素之和、螺旋矩阵、回形方阵、杨辉三角、做幻方
说明:此类题目核心考查二维数组的操作,涵盖一维数组向二维数组的过渡(连续和、最长平台)、矩阵的数学运算(矩阵向量乘法、对角线求和)、复杂方阵的构造与遍历(螺旋矩阵、回形方阵),以及基于二维数组的递推规律(杨辉三角、幻方)。
-
字符串类
题目:手机靓号、国王的魔镜 庖丁解牛
说明:这类问题以字符串为处理对象,需要通过字符遍历、筛选与逻辑判断,提取符合要求的字符特征(如手机靓号的数字规律),或分析字符串的结构特点(如国王的魔镜的字符串反转 / 重复规律)。
-
自定义排序类
题目:绝对值排序
说明:该题目是自定义排序的典型应用,需突破常规的升序 / 降序排序逻辑,设计基于绝对值大小的比较规则,实现对数组元素的特殊排序,重点考查排序算法的灵活改造能力。
-
算法设计及优化类
题目:明明的随机数、连续和、扫雷
说明:明明的随机数需设计去重算法并优化效率;庖丁解牛需要拆解问题并设计递推或模拟算法;扫雷则需通过模拟场景设计雷区标记与周边计数的算法,同时需考虑边界条件优化与冗余运算的减少,全面考查算法设计与优化思维。
-
二维数组类:先明确二维数组的行列边界,通过双层循环实现遍历;对于矩阵运算,按数学公式定位行列下标进行数值计算;对于螺旋矩阵、回形方阵等复杂结构,定义边界变量(上 / 下 / 左 / 右),结合方向控制逐步填充或遍历数组,利用递推规律(如杨辉三角的上一行推导下一行)简化计算。
-
字符串类:将字符串按字符逐个遍历,通过if条件判断筛选符合要求的字符(如手机靓号的连续相同数字);对于字符串结构分析问题(国王的魔镜),可通过字符串反转、截取等操作验证规律,结合循环实现场景模拟。
-
自定义排序类:以冒泡排序、选择排序等基础排序算法为框架,修改核心的比较条件 —— 将原有的 “直接比较数值大小” 改为 “比较数值的绝对值大小”,通过多轮遍历与交换,实现按绝对值排序的需求。
-
算法设计及优化类:明明的随机数可利用数组标记法实现高效去重(以数值为下标,标记出现状态),避免嵌套循环的高时间复杂度;扫雷问题先通过二维数组存储雷区位置,再遍历每个位置统计周边雷数,通过边界判断避免越界;庖丁解牛需先拆解问题为数学规律,再设计递归或循环算法实现,同时通过剪枝减少不必要的计算。
实验要求:每人至少完成 3 类不同知识点的题目,提交代码时添加关键步骤注释;针对算法设计类题目,分析不同实现方案的效率差异,撰写 50 字左右的优化思路,加深对算法设计与优化的理解。
Start Time:
2025-11-25 08:00:00
End Time:
2025-12-10 23:59:00
Current Time:
2025-12-08 02:36:21
Status:
Running
Public
[Status]
[Standing]
[Statistics]