c语言k倍区间设计思路,西北工业大学C语言课程设计大作业.doc

西北工业大学C语言课程设计大作业

学 院电子信息学院班 级学 号2013301986姓 名张昌武

摘要

本次大作业包括一个标准型大作业,一个界面型大作业,两个数学型大作业和一个算法型大作业。

本次联系我选择的题目是:

A.数学型

a.歌星大奖赛

b.求最大数

B.标准型

a.打印指定年份的公历表和农历表

C.算法型

a.七种排序算法

D.界面型

a.OpenGL图形库程序

目录

1 摘要3

1.1 设计题目3

1.2 设计内容3

1.3 开发工具4

1.4 应用平台4

2 详细设计4

2.1 程序结构4

2.2 主要功能18

2.3 函数实现18

2.4 开发日志25

3 程序调试及运行31

3.1 程序运行结果31

3.2 程序使用说明36

3.3 程序开发总结36

4 附件(源程序)36

1 摘要

1.1 设计题目

A.数学型

a.歌星大奖赛

b.求最大数

B.标准型

a.打印指定年份的公历表和农历表

C.算法型

a.七种排序算法

D.界面型

a.OpenGL图形库程序

1.2 设计内容

A. 数学型

a.十个评委打分,分数在1~100之间,选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。

b.求555555的约数中的最大三位数

B.标准型

a.打印指定年份的公历表和农历表

C.算法型

a.七种排序算法:

快速排序

插入排序

选择排序

冒泡排序

堆排序

归并排序

基数排序

D.界面型

a. OpenGL图形库程序:

绘制黑白框

绘制螺旋曲线

绘制彩色立方体

1.3 开发工具

codeblock

1.4 应用平台

Windows 2000/XP/Vista 32位/win 7、8

2 详细设计

2.1 程序结构

A. 数学型

a.十个评委打分,分数在1~100之间,选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。

该题涉及到数组存储

b.求555555的约数中的最大三位数:

该题只用到循环和判断语句,从999向下搜索即可

B.标准型

a.打印指定年份的公历表和农历表

年历的设计与计算,应首先判断“某年某月某日是星期几”,即能被4且不能被100整除或能被400整除的数。这样,接下来的事情就简单了,输入年份,打印出相应的日历。

快速排序(QuickSort)划分的关键是要求出基准记录所在的位置pivotpos,编程时候的关键点快速排序:既然能把冒泡KO掉,马上就激起我们的兴趣,tnd快排咋这么快,一定要好好研究一下。首先上图: ? ?从图中我们可以看到:left指针,right指针,base参照数。其实思想是蛮简单的,就是通过第一遍的遍历(让left和right指针重合)来找到数组的切割点。第一步:首先我们从数组的left位置取出该数(20)作为基准(base)参照物。第二步:从数组的right位置向前找,一直找到比(base)小的数,? ? ? ? ? ? 如果找到,将此数赋给left位置(也就是将10赋给20),? ? ? ? ? ? 此时数组为:10,40,50,10,60,? ? ? ? ? ? left和right指针分别为前后的10。第三步:从数组的left位置向后找,一直找到比(base)大的数,? ? ? ? ? ? ?如果找到,将此数赋给right的位置(也就是40赋给10),? ? ? ? ? ? ?此时数组为:10,40,50,40,60,? ? ? ? ? ? ?left和right指针分别为前后的40。第四步:重复“第二,第三“步骤,直到left和right指针重合,? ? ? ? ? ? ?最后将(base)插入到40的位置,? ? ? ? ? ? ?此时数组值为: 10,20,50,40,60,至此完成一次排序。第五步:此时20已经潜入到数组的内部,20的左侧一组数都比20小,20的右侧作为一组数都比20大, 以20为切入点对左右两边数按照"第一,第二,第三,第四"步骤进行,最终快排大功告成。?快速排序具有最好的平均性能(average behavior),但最坏性能(worst case behavior)和插入排序

相同,也是O(n^2)。比如一个序列5,4,3,2,1,要排为1,2,3,4,5。按照快速排序方法,每次只会有一个数据进入正确顺序,不能把数据分成大小相当的两份,很明显,排序的过程就成了一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值