c语言实训报告_c语言编程实训报告
c语言实训报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言编程实训报告”。
C语言排序比较
目 录
一、目的概述。。。。。。。。。。。。。。。。。。。。3
二、实验(设计)仪器设备和材料清单。。。。。。。。。3
三、项目分析和设计。。。。。。。。。。。。。。。。。3
四、项目关键代码。。。。。。。。。。。。。。。。。。6
五、项目调试和运行。。。。。。。。。。。。。。。。。12
六、实训设计的心得体会。。。。。。。。。。。。。。。16
C语言课程实训设计报告
一、目的概述
我这次实训的项目主要是排序法的编写,运行和比较,主要有直接插入排序,选择排序法,冒泡排序法,快速排序法;由主函数对这四个排序法分别进行调用,用最小的时间空间资源利用率得出正确的排序结果。通过比较得出四种排序算法的优劣,以及在那种情况下该使用哪种排序法才最为简便。
二、实验(设计)仪器设备和材料清单
1.硬件:PC机
2.软件:turboc 2.0,visula c++ 6.0
三、项目分析和设计
这个项目的程序可分为几个板块来做,每个板块有每个板块的作用,通过不同程序的不同作用相互调用即可实现整个程序的运行,这个项目程序主要可以分为以下几个板块: 1.抽象数据类型定义
InsertSort(RECNODE*r,int n)// 插入排序// BubleSort(RECNODE *r,int n)//冒泡排序// QuickSort(RECNODE*r,int start,int end)//快速排序// SeleSort(RECNODE*r,int n)// 选择排序// ShellSort(RECNODE *r,int n)//希尔排序// HeapSort(RECNODE*r,int n)//堆排序// 2.子程序及功能要求
1)用Void 来定义6个排序的子程序 Void InsertSort(RECNODE*r,int n)Void BubleSort(RECNODE *r,int n)Void QuickSort(RECNODE*r,int start,int end)Void SeleSort(RECNODE*r,int n)Void ShellSort(RECNODE *r,int n)Void HeapSort(RECNODE*r,int n)2
(2)使用switch语句,当用户从键盘输入一个数字时,则选择对应的排序算法。scanf(“%d”,&p);switch(p){ case 1: case 2: case 3: case 4: case 5: case 6: case 0:break;default:printf(“输入错误!请重新输入!n”);break;} 3.各程序模块之间的调用关系
主函数(main)调用switch模块,按照用户的要求,通过switch语句,再调用相应的排序算法模块。4 详细设计
4.1设计相应的数据结构 typedef struct { int key;定义关键字类型为整数类型 }RECNODE;#define MAXSIZE 150 一个用作示例的小顺序表的最大长度 4.2主要模块的算法描述
int main()主模块 { RECNODE a[MAXSIZE];int len,p;do { printf(“**********************n”);显示界面 printf(“* 菜 单 *n”);3
printf(“**********************n”);printf(“* 1---直接排序 *n”);printf(“* 2---冒泡排序 *n”);printf(“* 3---快速排序 *n”);printf(“* 4---选择排序 *n”);printf(“* 5---堆排序 *n”);printf(“* 6---希尔排序 *n”);printf(“* 0---退出 *n”);printf(“**********************n”);printf(“n请在上述序号中选择一个并输入: ”);scanf(“%d”,&p);switch(p)switch子模块 { case 1:len=MakeList(a);UndealoutList(a,len);InsertSort(a,len);插入排序子模块 DealoutList(a,len);break;case 2:len=MakeList(a);UndealoutList(a,len);BubleSort(a,len);冒泡排序子模块 DealoutList(a,len);break;case 3:len=MakeList(a);UndealoutList(a,len);QuickSort(a,1,len);快速排序子模块 DealoutList(a,len);break;case 4:len=MakeList(a);UndealoutList(a,len);SeleSort(a,len);选择排序子模块 DealoutList(a,len);break;case 5:len=MakeList(a);UndealoutList(a,len);HeapSort(a,len);堆排序子模块 DealoutList(a,len);break;case 6:len=MakeList(a);UndealoutList(a,len);ShellSort(a,len);希尔排序子模块 DealoutList(a,len);4
break;case 0:break;跳出switch子模块 default:printf(“输入错误!请重新输入!n”);break;} }while(p!=0);}
四、项目关键代码
#include “stdlib.h” #define MAXSIZE 150 #include typedef struct { int key;}RECNODE;int b,t;int MakeList(RECNODE *r){ int j,k;printf(“n请输入初始数据(每个数据以空格隔开,-1结束):k=0;scanf(”%d“,&j);while(j!=-1){ k++;r[k].key=j;scanf(”%d“,&j);} return k;} void UndealoutList(RECNODE *r,int n){ int i;printf(”n未排序前的数据 : “);for(i=0;i
”);
for(i=0;i
void BubleSort(RECNODE *r,int n)//冒泡排序// { int i,j;b=0,t=0;RECNODE temp;for(i=1;i=i;j--)if(r[j+1].key
else b++;t++;} } int Partition(RECNODE*r,int*low,int*high)//一躺快速排序// { int i,j;static int w=0;RECNODE temp;i=*low;j=*high;temp=r[i];do { while((r[j].key>=temp.key)&&(i
{ int i;static int q=0;if(start
C语言实训报告 做完这个课程设计,我们的自信一下子提高了;尽管对于有些人这种程序会很简单,可对我们c语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了......
C语言实训报告一、实训目的:1、能够正确编译C语言的某些程序、更深一步的了解C语言的步骤。2、熟练掌握C语句的逻辑表达式、函数的运算表达式及运算符。3、在编译的过程中明......
湖北汽车工业学院电气与信息工程学院《C语言程序设计》实训报告实训题目: 学生信息管理系统 专业: 汽车电子工程专业 班级: 姓名: 成绩: 一、需求分析1、问题根据需求,该系统......
做完这个课程设计,我们的自信一下子提高了;尽管对于有些人这种程序会很简单,可对我们C语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动......
在这个星期里,我们在专业老师带领下进行了C语言程序实训练习。一周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用的技能!首先,在实训中的第一步是编写一个图书管理系......
