1、目 录 1 前言 . 1 2 需求分析 . 1 2.1 课程设计目的 . 1 2.2 课程设计任务 . 1 2.3 设计环境 . 1 2.4 开发语言 . 1 3 分析和设计 2 3.1 模块设计 . 2 3.2 系统流程图 . 2 3.3 主要模块的流程图 3 4 具体代码实现 5 5 课程设计总结 7 5.1 程序运行结果 . 7 5.2 课程设计体会 . 8 参考文献 . 9 致 谢 . 9 1 1 前言 编写一个程序来处理数字排序问题。 分别通过直接插入算法和选择排序算法将 一组数字按降序排列,然后输出排列好的数字以及排序中数字交换的次数。任意输入 一组数字,结果显示在屏幕上。 2 需
2、求分析 2.1 课程设计目的 运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课 程设计(论文) ,提高学生综合运用所学知识来解决实际问题、使用文献资料、及进 行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。对于本课程设计而 言,重点在熟悉 C 语言基本语法规范以及灵活运用 C 语言编程解决实际问题。 2.2 课程设计任务 编写算法实现猜数字排序: 1输入 10 个数字,并选择排序方式(至少两种不同的排序方法) 2按从大到小输出数字,以及排序中数字交换的次数。 2 2. .3 3 设计设计 环境 (1)WINDOWS 2000/2003/XP/7/Vista系统
3、(2)Visual C+或TC集成开发环境 2.4 开发语言 C语言 2 3 分析和设计 3.1 模块设计模块设计 在主函数中,调用两个子函数来分别实现直接插入法排序和选择法排序。 定义一个函数 aa( ),用直接插入法对数组 a 中的数进行排序。首先,按要求输 入数据。 接着, 利用双重 for 循环, 其中外重循环是对中间变量 temp 和计数变量 count 进行赋值,从第一个数起依次赋给 temp,然后在内重循环中把 temp 与前一数比较, temp 小则交换,以此向后推。最后,输出排序好的新数组 a 以及排序次数。 定义一个函数 bb( ),用选择法对数组 a 中的数进行排序。首先
4、,根据提示信息 依次输入数据。接着,利用双重 for 循环,其中外重循环控制中间变量 max的赋值操 作(max 保存最大数的下标),而在内重循环中,用 max 作下标所代表的数与之后的 每一个数作比较,max小则交换。最后,输出排序好的数组 a 以及排序次数。 3.2 系统流程图 图 3.1 系统流程图 调用选择排序法函数 bb() 开始 结束 调用直接排序法函数 aa() 3 3.3 主要模块的流程图 函数 aa()运用直接插入法排序流程图如下: int i,j,a10; i=0 i10 i+ i=1 i10 +i printf(“the result is:n“); Multi Multi N N Y Y N 4 函数 bb()选择法排序流程图如下: int i,j,max,tem,aN; i=0 printf(“a%d=”,i); i+ printf(“n”); i=0 iN i+ Multi iN N Y Y N 5 4 具体代码实现 #include #include #define N 10 void aa(); /*直接排序法*/