C语言综合实验设计报告
举个楼主自己写的例子吧,仅供参考。
c语言作业报告书
题 目:二次探测再散列法解决冲突建立哈希表并查找
完成时间:2012年5月31号
学 号:2011013290姓名:聂亮兵专业班级:信管112班
1. 实习任务与目的
实验任务:独立写出哈希查找的相关代码并画出核心的算法流程图,记录相关实验数据,得出实验结果。
试验目的:通过两者运行时间的对比,加深对哈希查找和顺序查找各自优缺点的理解,并进一步熟悉哈希查找的原理和流程。
2. 实习内容及过程
实习内容:用除留余数法和二次探测再散列法解决冲突建立哈希表并查找,通过函数GetTickCount计算运行时间;再同样计算顺序查找的方法的查找时间。
实习过程:
查阅关于库函数的相关内容,并熟悉函数GetTickCount()的用法。
规划算法流程,画出主要函数的流程图。具体流程是:读入文件数据——顺序查找——输出结果——哈希查找——输出结果。
对应流程写出相关函数,完善主函数。
进行程序的运行和调试,修改一些不足和bug。
添上相关注释。
运行程序进行实验并得出实验结果,记录。
完成实验报告。
3. 实验结果分析
实验结果:由于所给数据Data.txt数据量过小,实验结果不明显,两种查找所耗时间均被系统默认为0;如图所示为编号为37、1294、4091的三个数据元素:
分析:哈希查找的方法适用于数据在区间内随机分布均并且量大的数据形式;而顺序查找原理简单,但是不适用于大量数据的查找。
4. 核心算法流程图
图1:主函数流程图
图2:哈希查找流程图
5. 实习总结及体会
这个实验难度不大,但是需要自己高质量的独立完成,对自己是一个总结归纳,能通过这个实验清楚自己哪些地方平时没有注意到,哪些地方是自己擅长并应该继续保持的。
此外,本实验的全过程能让自己了解正式的程序、任务和报告等的完成流程。通过自己独立完成这个实验,再和标准的数据结构代码比较,找出自己代码的亮点、不足以及欠缺,让自己明白哪些地方是自己想不到的,哪些方法是自己不能想到的,并以此学习好的编程思想和优秀的编程技巧和编程风格。
本次试验中:
正式的程序代码中,外部变量的使用要格外注意,不能随意使用外部变量。但是本程序具有独立性,不用与其他程序代码相衔接,采用外部变量的方法,减少函数调用的时候的复制传值的次数,提高效率。
正式的编程思想中,要有统一的命名方式。这包括两个方面。其一是自己的命名规则要统一,不能乱。其二是与合作小组之间的命名规则要统一,提高代码的可嵌入性。但是本实验由自己独立完成,命名规则按照自己的习惯而定,与课本命名规则有点出入。
二次探测再散列法解决冲突中,课本中没有提到如果H(a)-m^2<0时的处理方法。本程序中采用的方法是取绝对值。二次探测再散列法中,再散列需要在循环中进行,直到找到位置e为止。这个过程中m需要进行两种互斥变化:一种是 *-1 ;一种是 +1;再循环中不好实现。本程序中采用一个信号变量,每次循环自增1,奇偶数分别执行不同的变化。
这个题目很简单!
你可以把我这个程序的输出部分修改一下(不修改也可以)
程序如下:
#include
#define STU_NUM 10//学生数目
#define SCORE_NUM 3//课程数目
typedef struct /*定义结构体数组*/
{
char num[20]; /*学号*/
char name[20]; /*姓名*/
float score[SCORE_NUM]; /*成绩*/
float total;//总分
float average;//平均分
} Student;
Student stu[STU_NUM];
//输入学生信息
void input()
{
int i,j;
printf("请输入%d个学生的信息:
",STU_NUM);
for(i=0;i<STU_NUM;i++)
{
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d的成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
}
//输出学生信息
void output(void)
{
int i,j;
for(i=0;i<STU_NUM;i++)
{
printf("学生的信息如下:
");
printf("学号:%s
",stu[i].num);
printf("姓名:%s
",stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d的成绩:%f
",j+1,stu[i].score[j]);
}
printf("总分:%f
",stu[i].total);
printf("平均分:%f
",stu[i].average);
}
}
//计算总分和平均分
void process()
{
int i,j;
for(i=0;i<STU_NUM;i++)
{
stu[i].total=0;
for(j=0;j<SCORE_NUM;j++)
{
stu[i].total+=stu[i].score[j];
}
stu[i].average=stu[i].total/SCORE_NUM;
}
}
//按总分进行排序(冒泡法)
void sort()
{
Student tStu;
int i,j;
for(i=0;i<STU_NUM;i++)
{
for(j=STU_NUM-1;j>i;j--)
{
if(stu[j].total>stu[j-1].total)
{
tStu=stu[j];
stu[j]=stu[i];
stu[i]=tStu;
}
}
}
}
main()
{
input();
process();
sort();
output();
}
题目: C语言输出万年历
学院:
专业:
班级:
姓名:
设计日期:
总分:
一、设计题目:
C语言输出万年历
二、题目阐述及设计思路:
C语言输出万年历,输入年份、月份,计算得到的是这一天是星期几;给定年,月,计算此月有多少天 。本程序运用的万年历的计算公式: d=a-1+(a-1)/4-(a-1)/100+(a-1)/400+c; 其中a为年c为该日期在本年中的天数,d取整数,当d/7余数0时是星期天,余数1时是星期一依此类推。
三、主要知识点:
运用函数调用,if,else函数switch语句。for,while,循环语句。
四、程序清单:
#include <stdio.h>
int m_day(int year,int month)/*此函数是给定年,月,计算此月有多少天.*/
{
if ((year%4==0 &&year%100!=0) ?? (year%400==0))
switch(month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
case 4: case 6: case 9: case 11: return 30;
case 2: return 29;
}
else
switch(month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
case 4: case 6: case 9: case 11: return 30;
case 2: return 28;
}
}
int main()
{
int year,month;
int i, days=0, d, day=0;
printf ("Enter the year and month:\n");
scanf ("%d %d ", &year, &month );
for (i=1;i<month; i++)
days+=m_day (year,i);
d=year-1+(year-1)/4-(year-1)/100+(year-1)/400+days+1;
printf("%d-%d\n",year,month);
printf(" Sun Mon Tue Wed Thu Fri Sat\n");
for (i=0;i<d%7;i++)
printf(" ");
for (i=1;i<=7-d%7;i++)
{
day++;
printf("%5d",day);
}
printf("\n");
while(1)
{
for (i=1;i<=7;i++)
{
day++;
if (day>m_day(year,month))
printf("%5d",day);
}
printf("\n");
}
}
五、设计结果说明:
1、设计优点:
程序充分利用所学的C语言知识,运用了函数的调用、循环语句、以及return语句,使得编程更加有条理。简单易懂,结构清晰,也使得程序的使用更加方便。
2、设计不足:
在编程序时,由于考虑到时间和受所学知识的限制,只能输入年份、月份,计算得到的是这一天是星期几;给定年,月,计算此月有多少天 。而并不能输入公历的年月日,输出农历年月日以及输入农历节气,输出当年农历的年月日及公历年月日。
c语言程序设计实验报告内容
11、知识不够广泛,如VC++6.0等程序,自己试了好一阵也不会用;说明我电脑水平还是不够,自学能力不够。已会的东西掌握的还是不够好。12、实验心得:通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。其间开心过、郁闷过、无奈过、彷徨过……随着实验的胜利成...
C语言实验报告总结
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。课...
怎么写c语言综合实验设计报告?
运行程序进行实验并得出实验结果,记录。完成实验报告。3. 实验结果分析 实验结果:由于所给数据Data.txt数据量过小,实验结果不明显,两种查找所耗时间均被系统默认为0;如图所示为编号为37、1294、4091的三个数据元素:分析:哈希查找的方法适用于数据在区间内随机分布均并且量大的数据形式;而顺序查找原...
C语言程序设计实验报告怎么写?
实验原理和设计方案:1、函数头的选则,while循环语句,switch(case)语句,条件表达式,if else条件语句,自增运算符,设置复杂变量,输出随机操作数。2、变量要有分数变量和等级变量,要有选择算法题数的变量和计算正确与否的变量,要有随机输出的两个操作数变量和自己按运算符号输入结果的变量,最后还...
c语言程序设计实训报告参考
一、项目一:学生成绩排名(实验指导老师李环宇)1.1实训目的(1)熟悉变量、数组定义、使用、输入、输出等基本操作;(2)进行选择、循环结构程序设计练习;(3)掌握冒泡法排序的算法。1.2实训内容2、实训内容(1)定义一个数组a[11],用以存放学生的成绩;(2)从键盘输入10个学生及成绩;(3)...
c语言实验报告总结怎么写
实验报告总结示例如下:1、此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,俗话说的好,读书破万卷下笔如有神,没有学不会只有不肯学!我坚信,只要下一番功夫就能有理想的收获!2、通过这次实验,让我更加...
c语言程序设计实验报告
1设计思想 1)、设定一个一维数组,可先按员工序号设定每位员工的工资 2)、利用While语句和Prinft语句完成用户菜单的设计 功能为:第1项 设为员工编号和工资数据 第2项 设为修改员工工资数据 第3项 设为查询员工工资数据 第4项 设为结束系统 3)、当用户选择1、2项时,需输入员工编号,...
C语言实验六实验报告——指针
6.能够使用指针进行程序设计。三、实验内容有关指针的程序设计1.编程实现:任意输入的10个数,求其平均值。要求:(1)10个数采用scanf语句读入。(2)利用指针实现对这10个数的访问。(3)要求平均值的精度为小数后面2位。 2.编程实现:将一个任意整数插入到一个已排序的整数数组中,插入...
C语言程序设计课程设计报告怎么写啊?有谁有样本吗?谢啦!
实 验 报 告 一 课 程 C语言程序设计 实验项目 C程序设计初步 成 绩 专业班级 学 号 指导教师 金发夏 姓 名 序 号 实验日期 一【实验目的】1. 了解使用VC++6.0的开发环境;2. 掌握在该系统上如何编辑、编译、连接和运行一个C程序;3. 通过运行简单的C程序,初步了解...
C语言程序设计实验报告
1,若程序定义为三行三列的矩阵,并在主函数中键盘赋值。请编写函数juzhen(int a[][3],int n),函数功能是:使矩阵左下角元素中的值乘以.例如:若矩阵中的值为:1 9 7 2 3 8 4 5 6 n=3,则矩阵值变为:1 9 7 6 9 8 12 15 18 注:二维数组下三角元素每行最后元素的列标和该列的...
井仁拉司: 题目: C语言输出万年历 学院:专业:班级:姓名:设计日期: 总分:一、设计题目: C语言输出万年历 二、题目阐述及设计思路:C语言输出万年历,输入年份、月份,计算得到的是这一天是星期几;给定年,月,计算此月有多少天...
泾阳县13612123583: c语言程序设计实验报告 - ?
井仁拉司: 五、 课程设计小结心得体会1设计思想1)、设定一个一维数组,可先按员工序号设定每位员工的工资2)、利用While语句和Prinft语句完成用户菜单的设计 功能为:第1项 设为员工编号和工资数据 第2项 设为修改员工工资数据 第3项 设为查询员工...
泾阳县13612123583: 水仙花数的c语言实验报告怎么写 - ?
井仁拉司: 实验名称 系 别 姓 名 学 号 班 级 实验地点 实验日期 评 分 指导老师 同组其他成员 一、实验内容(含实验原理介绍): 二、实验目的 三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况): 四、实验结果(含程序、数据记录及分析...
泾阳县13612123583: c语言综合实验 - ?
井仁拉司: C语言综合实验实验内容:整个实验包括一个主函数和实验报告要求:(用A4纸If SqlConn Is Nothing = False Then SqlConn.Dispose() SqlConn = Nothing
泾阳县13612123583: C语言的实验报告如何写? - ?
井仁拉司: 实验目的:1.初识VC++6.0上机环境,学会建立工程、建立单文件和多文件程序,正确进行编译、链接并运行程序,查找并修改简单的语法错误; 2.通过编程熟悉C语言源程序的编程风格,正确进行源代码的单行注释. 3.掌握用const定义符号常量以及定义内联函数,比较与普通宏定义的区别. 实验内容:看看你自己要做什么实验,根据实验,把题目写上去就行了. 实验操作:把程序写上去. 实验仪器:VC++6.0 PC机 实验结论:运行出结果,写上去就行了.
泾阳县13612123583: c语言程序设计,实验报告 - ?
井仁拉司: 计 实验项目 C程序设计初步 成 绩 专业班级 学 号 指导教师 张耀文 姓 名 序 号 实验日期 一1. 了解使用VC++6.0的开发环境;2. 掌握在该系统上如何编辑、编译、连接和运行一个C程序;3. 通过运行简单的C程序,初步了解C源程序的特点;二 ...
泾阳县13612123583: 《C语言程序设计》实验报告 - ?
井仁拉司: #include "stdio.h"#define N 10 typedef struct {char name[20]; char xuehao[20]; int xuhao[5]; float shuxue[10]; float yingyu[10]; float jisuanji[10]; float sum[10]; float average[10]; }user; main() {user sp[N],temp; int i; printf("enter xinxi; \n"); for(i=0;i<N;...
泾阳县13612123583: c语言程序设计的实验报告怎么写呀? - ?
井仁拉司: 顺序是这样的:实验题目》》实验目的》》实验要求》》实验器材(当然写计算机了)》》实验流程图(就画那些什么平行四边形里写开始,椭圆形里写步骤的那种)》》实验步骤(写程序代码)》》结果分析(写详细些 比如写输入什么 输出了什么 如果结果有问题 你可以分析 比如因为循环次数少导致的或怎么样)
泾阳县13612123583: C语言课程设计实验报告 大数阶乘 问题描述 对给定的n(n≤100),计算并输出k!( - ?
井仁拉司: #include stdafx.h#include iostream.h long digui(int n); int main() { int n; long dg; cout输入一个数,求它的乘阶: ; cinn; dg=digui(n); cout这个数的乘阶为: dgendl; return 1; } long digui(int n) { long dg; if(n==1) { dg=1; } else { dg=digui(n-1)*n; } return (dg); }