文档库 最新最全的文档下载
当前位置:文档库 › C++实践报告

C++实践报告

C++实践报告
C++实践报告

C++实践报告

前言:

C++是一门实践性很强的课程,我们之前学的只是理论上的内容,如何解决实际问题还需要进一步实践才能体会到,而本次C++实践课程正好给了我们这样一个很好的机会。通过实践可以加深理解和巩固课堂学习的内容,更好的熟悉C++的语法规则,掌握C++的程序设计的方法,培养较强的应用开发能力。为以后解决生活生产中的问题打下一定的基础。

1.任意输入一个正整数,要求:(1)求它是几位数;(2)按逆序输出各位数字;(3)求奇数位数字之和。

算法分析:

用do…while语句,要输出逆序的数,需要进行取余运算,以10为除数,将余数依次输出结果就是改正整数的逆序,同时以10为除数,每次对正整数除10,直到正整数为零为止,运算的次数就是该数的位数,这需要用一个变量标记,初值为0,每运算一次,该变量自增,最后输出该变量,即正整数的位数;求奇数位之和就需要知道奇数位的数,第一步计算位数的变量如果是奇数,将输出的余数相加,就会得到奇数位之和。

程序:

#include

#include

using namespace std;

int main()

{

unsigned long int N,m,s=0; //N为正整数,m为每

//上的数,s为奇数位之和 int n=0; //n用来标记正整数的位数

cout<<"请输入一个自然数:";

cin>>N;

cout<<"倒置结果:"<

do

{

m=N%10; //对正整数取余,求出它的个位数

cout<

n=n+1; //输出一个数,n加一,n的结

//就是正整数的位数

if(n%2==1) //n%2==1表示奇数位

{

s=s+m; //s表示奇数位之和

}

N/=10; //每次对N除10,直到N为0

}while(N>0);

cout<<"这是一个"<

cout<<"奇数位之和:"<

return 0;

}

问题与解决方法:

运行时求奇数位之和总是不对,原因是我没有用前面的结果直接用n来判断奇数位,而是重新写了个语句求奇数位,使得程序复杂,错误也就出现了,后来问了一下舍友,发现n可以直接求奇数位,而且简单,经过修改,程序运行也就正确了。

2、输入阶数n(1≤n≤10),输出对应的n阶旋转矩阵。所谓旋转矩阵,就是在n阶矩阵中,起始数1置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。如:输入n=5,输出:

1 2 3 4 5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

算法分析:

先定义一个二维数组,螺旋方阵第一个数为1,其次依次增加一,只是不是顺序着增加,而是旋转着,这就需要两个控制变量,分别控制行和列,通过循环,改变行和列,最后输出二维数组。

程序:

#include

#include

using namespace std;

void main()

{

int a[10][10],i,j,k=1,m,n; //定义一个二维数组,用k为数组赋

//值

cout<<"请输入n(1-10):";

cin>>n;

if(n%2==0)

m=n/2;

else

m=n/2+1;

for (i=0;i<(n+1)/2;i++) //i控制生成方阵的圈数

{ //j控制生成一条边的数据

for (j=i;j

a[i][j] = k++; //k从1递增到n*n

for (j=i+1;j

a[j][n-i-1] = k++;

for (j=n-i-2;j>=i;j--) //底边,从右到左,行不变列变 a[n-i-1][j] = k++;

for (j=n-i-2;j>=i+1;j--) //左边,从下到上,行变列不

//变

a[j][i] = k++;

}

cout<<"结果为:"<

for(i=0;i

{

for(j=0;j

cout<

cout<

}

}

问题与解决方法:

开始时不懂怎么循环,找不到行和列与数值之间的关系,后来在书上找了一个类似的例题,看了几遍,了解了循环的具体过程,通过几次尝试,和同学一起商量了,最后终于解决了问题。

3.将一个5×5矩阵中的最小元素放在中心,四个角分别放四个最大的元素(从左到右、从上到下的顺序为从大到小存放),要求:(1)输出变换后的矩阵;(2)任意输入一个数,如果该数在矩阵中,确定该数的位置。

算法分析:

找出元素中最大的元素,采用逐一比较的方法,在数组中可以用双循环,分别进行行和列的循环,依次找出最大的第二大第三大第四大和最小的元素,将它们放在指定的位置,按照数组输出的方式输出。

程序:

#include

using namespace std;

int main()

{

int h;

cout<<"任意输入一个整数:"<

cin>>h;

int

x[5][5]={12,2,3,23,43,22,32,14,88,8,0,18,21,19,10,4,6,33,30,11,44,7, 20,24,1};

int i,j,max1,max2,max3,max4,m,n,t,min;//I,j分别为行列循环控制变

量,//max1,max2,max3,max4分

别为//第一二三四大的元素,

m,n用//来存储元素的行和列,

min为//最小元素max1=x[0][0]; //给最大元素赋初值

for(i=0;i<=4;i++)

{

for(j=0;j<=4;j++)

{

if(x[i][j]>max1)

{

max1=x[i][j]; //将比max1大的元素的值赋给max1,并保存下标

m=i;n=j;

}

}

}

x[m][n]=x[0][0]; //交换找到的最大元素和x[0][0]的值 x[0][0]=max1;

max2=x[0][1]; //给第二大元素赋初值

for(i=0;i<=4;i++)

{

for(j=0;j<=4;j++)

{

if(i!=0||j!=0) //保证不能和第一大元素交换数值

{

if(x[i][j]>max2)

{

max2=x[i][j]; //将比max2大的元素的值赋给max2,并保存下标 m=i;n=j;

}

}

}

}

x[m][n]=x[0][4]; //交换找到的第二大元素和x[0][4]的值

x[0][4]=max2;

max3=x[0][1];

for(i=0;i<=4;i++)

{

for(j=0;j<=4;j++)

{

if((i!=0||j!=0)&&(i!=0||j!=4))//保证不和第一二大元素交换数值

{

if(x[i][j]>max3)

{

max3=x[i][j];//将找到的第三大元素的值赋给max3,并保存下标

m=i;n=j;

}

}

}

}

x[m][n]=x[4][0];//交换找到的第三大元素和x[4][0]的值

x[4][0]=max3;

max4=x[0][1];

for(i=0;i<=4;i++)

{

for(j=0;j<=4;j++)

{

if((i!=0||j!=4)&&(i!=0||j!=0)&&(i!=4||j!=0)) //保证不

//和前三大元素交换数值 {

if(x[i][j]>max4)

{

max4=x[i][j]; //将找到的第四大元素的值赋给

//max4,并标记下标

m=i;n=j;

}

}

}

}

x[m][n]=x[4][4]; //交换找到的第四大元素和x[4][4]的值

x[4][4]=max4;

min=x[0][1]; //给min赋初值

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

if(x[i][j]

{

min=x[i][j]; //找到比它小的元素,将值赋给它,并标记下标 m=i;

n=j;

}

}

}

x[m][n]=x[2][2];

x[2][2]=min; //将最小的元素放在中间

for(i=0;i<=4;i++)

{

for(j=0;j<=4;j++)

{

if(h==x[i][j]) //输入的元素是否在该矩阵中

{m=i;

n=j;

cout<<"该元素在第"<

}

}

}

cout<<"改变后的矩阵为:"<

for(i=0;i<=4;i++) //输出矩阵

{

for(j=0;j<=4;j++)

{

cout<<" "<

}

cout<<'\n';

}

return 0;

}

问题与解决方法:

在二维数组中找出最大的元素不怎么难,但是当要找出前四大元素时,发现总是排除不了最大元素的干扰,在循环比较过程中,无法把前面找出来的又不能交换数值的元素排除掉,因此输出结果中四个角的元素总是一样的,后来用了条件语句,在不找出来的大元素比较的前提下交换数值,这样一来结果就正确了。

4、有数列1/1+2/1+3/2+5/3+8/5+13/8+21/13+……。请观察其规律,求出该数列的前n项之和,结果要求保留四位小数。

算法分析:

上式的规律是后一个数的分子是前一个数的分子分母之和,分母是前一个数的

分子。要求前n项之和,需要用循环语句。

程序:

#include

#include

using namespace std;

float main()

{

int t,i,N; //t作为交换数值的中间变量,i为循环变量,

N为前N项

float s,f,n=1.0,m=1.0; //s为前N项和,m为分母,n为分子

cout<<"请输入一个N:"<

cin>>N;

for(i=1;i<=N;i++)

{

if(N==1)

s=1; //给第一项赋值1

else

{

f=m/n;

t=m;

m=m+n; //把前一项的分子分母之和赋给后一项的分母n=t; //把前一项的分母赋给后一项的分子

s=s+f;} //求和

}

cout<

cout<<"结果为"<

return 0;

}

问题与解决方法:

程序的前面都没什么问题,只是开始不知道怎么保留四位小数,后来在书上找了找,发现有相关的语句,模仿了一下,发现运行结果正确,这样问题就解决了。

5、采用二分法求解方程f(x)=x3-x-1=0在区间[1.0,1.5]内的一个实根。要求精确到小数点后的第2位。二分法的基本思想,就是将方程根所在的区间平分

为两个小区间,再判断根属于哪个小区间;把有根的小区间再平分为二,再判断根所在的更小的区间,对分;重复这一过程,最后求出所要的近似值。

算法分析:

端点的函数值一个大于零,一个小于零,先判断中点的函数值,如果大于零,将这个点作为端点,取它和第一个点的中点继续判断,直到某一点的函数值小于零,结果就是这个点和和前一个大于零的点的中点;如果小于零,将这个点作为端点,取它和第二个点的中点继续判断,直到某一点的函数值大于零,结果就是这个点和前一个小于零的点的中点。这个循环过程需要用到do…while 语句。

程序:

#include

#include

using namespace std;

float main()

{

float f,x,t,x1=1.0,x2=1.5;

x=(x1+x2)/2; //取中点

f=x*x*x-x-1; //计算函数值

if(f>0) //判断函数值

{

do

{

x2=x; //将中点值赋给x2

x=(x1+x2)/2; //再取中点

f=x*x*x-x-1; //计算函数值

t=x;

}while(f>0);

x=(t+x2)/2; //最后的值

}

else

{

do

{

x1=x;

x=(x1+x2)/2;

f=x*x*x-x-1;

t=x;

}while(f<0);

x=(t+x1)/2;

}

cout<

cout<

return 0;

}

收获与体会:

通过这次课程设计的实训,增加了我学习软件技术的兴趣,从C++语言这门课程开始,已发现程序设计的乐趣,在学习C++语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。

在实际操作过程中犯的一些错误还会有意外的收获,感觉实践很有意思。在具体操作中对这学期所学的C++语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C++语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。

通过实际操作,学会 C++语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到“实践是检验真理的标准”的寓意。希望以后应多进行这样的实训,培养学生独立思考问题的能力,提高实际操作水平。

虽然都说“程序=数据结构+算法”,但我在学习运用数据结构编程之前,并没能深刻体会到这一点,直到这次课设实践。

我感受最深的一点是:以前用C++编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。但现在编程感觉完全不同了。在编写一个程序之前,自己能够综合考虑各种因素。

在编写每一个函数之前,可以仔细斟酌比对,挑选出最适合当前状况的算法。这样,即使在完整的程序还没有写出来之前,自己心中已经有了明确的原图了。这样无形中就提高了自己编写的程序的质量。

我以前对数组一直很害怕,总是看不明白究竟这数组和循环结合时是怎么进行的。在这次实验中我终于克服了这一障碍,真的是功夫不负有心人啊!真是受益良多啊!

这次实验中我也出现过一些比较严重的错误。后来在同学的指点下我意识到自己的错误,不过收获也很不少。

总之,我会继续我的兴趣编写程序的,相信在越来越多的尝试之后,自己会不断进步不断提高的。

工程认识实习报告总结doc

工程认识实习报告总结 篇一:工程认知实习报告总结 篇一:[工作总结]土木工程认知实习报告 认知实习报告 专业班级: 姓名:学号: 实习单位: 实习地点: 指导教师: 完成时间: XX年 08 月26 日 第一部分专业知识 1 实习概况 1.1实习目的: 通过认知实习巩固所学理论知识,加深对所学知识的理解,使理论知识与实际结合,为以后专业知识课程的学习奠定基础。 通过实习了解社会对现代大学生知识结构、综合素质、能力构成等方面的要求,有利于对将来职业生涯做出有针对性的规划,在后期的学习中,根据社会对人才的需求特点,有方向的完善自己、提高自己、发展自己。 1.2实习时间:

XX年6月7日到XX年8月24日。 1.3实习地点: 义城建设建设公司墨荷园2#和兴昌建筑集团。 1.4 实习小结 在学校学习到的都是书本上的知识,只有理论上的认识与了解,对于在现实实际操作中是怎样的,而不得而知。这次实习,就给了一个这样的机会,可以亲自下工地操作,去观看工人是怎么做的以及做出来后是怎样的。这样将理论与实践结合起来,就对土木工程方面的知识更加深刻地理解了。 书本上的知识总规是不全面的,在工地现场时,就会发现有很多地方看不懂,这就需要虚心请教。还有一些地方,课本上的与现实中的不相符,有些地方就需要根据实际情况而定,不能一味的墨守成规。 在实习期间,发现一个问题,就是,工地施工过程中,有很多个地方,环节都没按规定来,管理不得当。而且还有很多地方很浪费,尤其是由于验收不合格之后的返工。我是在技术部实习的,就发现有很多个环节还没验收就继续施工了,就为了赶工,这种不按手续步骤来施工的现象很多。 在实习期间,学习到了很多有关方面的知识,对于以前就已学习到的知识有了更深一步的理解。这次的实习不论是从对知识的加强上,还是对社会的认识上,都对我意义重大。通过这次实习,真是让我获益良多。

C语言实训报告

C语言程序设计 实训报告 题目:红外避障机器人 院(系):信息工程系 专业:通信工程 学生姓名:韦嘉宝 学号: 24 指导教师:朱震周斌王旬全刘辉 2016 年10月8 日 目录 摘要 (1) 设计要求 (2) 设计步骤 (3) 代码编写 (4) 心得体会 (5) 参考文献 (6)

许多机器人使用雷达(RADAR)或者声纳(SONAR)来探测物体而不需要同物体接触。本文的方法是使用红外光来照射机器人前进的路线,然后确定何时有光线从被探测目标反射回来,通过检测反射回来的红外光就可以确定前方是否有物体。由于红外遥控技术的发展,现在红外线发射器和接收器已经很普及并且价格很便宜。 随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能小车。 机器人使用红外线二极管LED 作为前灯,如图6-1 所示。红外线二极管发射红外光线,如果机器人前面有障碍物,红外线从物体反射回来,相当于机器人眼睛的红外检测(接收)器,检测到反射回的红外光线,并发出信号来表明检测到从物体反射回红外线。机器人的大脑——单片机A T89S52 基于这个传感器的输入控制伺服电机。红外线(IR)接收/检测器有内置的光滤波器,除了需要检测的980 nm 波长的红外线外,它几乎不允许其他光通过。红外检测器还有一个电子滤波器,它只允许大约38.5 kHz 的电信号通过。换句话说,检测器只寻找每秒闪烁38500 次的红外光。这就防止了普通光源像太阳光和室内光对IR 的干涉。太阳光是直流干涉(0Hz)源,而室内光依赖于所在区域的主电源,闪烁频率接近100 Hz 或120 Hz。由于120 Hz 在电子滤波器的38.5 kHz 通带频率之外,它完全被IR 探测器忽略。 本任务将搭建并测试红外线发射和检测器对。本讲需要用到的新部件如下: 元件清单 (1)红外检测器,2 个。 (2)IR LED(带套筒),2 个。 (3)470? 电阻,2 个。 (4)连接线,若干。 二、设计要求 (1)小车能够完成前进、后退、左转、右转等动作。 (2)机器人能够读出传感器电平变化,并作相应的动作变化。 (3)利用机器人所装配的两个探测器,探测和避开障碍物。 三、设计步骤

中南大学C++实验报告

《C++程序设计》上机实验报告 上机内容:C++程序的运行环境和运行一个C++程序的方法 数据类型和表达式 专业班级:电气信息类1203班 学号:0909120320 姓名:李湖 日期:2013年3月16日

目录 1.实验目的 2.实验内容 3.程序源码 4.调试结果 5.实验心得

程序设计实验(一) 1、实验目的 (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序 (3)通过运行简单的C++程序,初步了解C++源程序的结构和特点。 应学会在一种以上的编译环境下运行C++的程序,建议学习并 掌握Visual C++ 6.0和GCC(RHIDE和DJGPP)的使用方法。2、实验内容和步骤 (1)检查所用所用的计算机系统是否已安装了C++编译系统,并确定他所在的子目录。如果使用的是Windows操作系 统,可以按以下步骤进行: 如果想查找Visual C++ 6.0,可以单击Windows桌面上“开 始”按钮,在菜单中选择“查找”窗口,在“名称”栏中 输入文件名“Microsoft Visual C++ 6.0”,请注意搜索范围, 应当使“搜索”栏中的内容为“C:\”,表示从C盘根目录 开始寻找,即搜索整个C盘。单击“开始查找”按钮, 系统会自动在指定的范围内找寻所需的文件,如果找到, 就会显示出文件路径,如“C:\Windows 000\Start Mean\Program\Microsoft Visual Studio 6.0,表示在

C:\Windows 000\Start Mean\Program\Microsoft Visual Studio 6.0文件中有Visual C++ 6.0。也可以选择Windows 桌面上的“开始”—>“程序”命令,在其弹出的菜单中 选择“Microsoft Visual Studio 6.0”命令,再在其子菜单中 查有无“Microsoft Visual C++ 6.0”命令。如果在安装时采 用系统提供的默认方式安装,应该在这个位置找到 Microsoft Visual C++ 6.0。 如果想查找RHIDE和DJGPP,只须选择“开始”—>“查找(F)”—>“文件或文件夹(F)”命令,并指定RHIDE 和DJGPP即可。 (2)在Visual C++环境下编译和运行C++程序。 在第一次上机时,按以下步骤建立和运行C++程序: ①先进入Visual C++ 6.0环境。 ②按照第15章15.2节介绍的方法,在自己指定的子目录中 建立一个名为test.cpp的新文件(此事尚未向文件输入内 容)。 ③从键盘输入以下程序(第1章第8题): int main(); { int a,b; c=a+b; cout>>”a+b=”>>a+b;

C语言课程设计报告-游戏2048

东华理工大学C语言课程设计报告 学院:国际教育学院学院专业:电子信息工程 班级:1420606 学号:201420060638 姓名:钟天运

一、课程设计题目:游戏2048 二、课程设计要求: a)使用C语言编写2048这款游戏 b)能够正常运行,拥有游戏界面。 c)能正常进行游戏从开始到结束。 d)用户操作方便 三、设计思路: a)游戏介绍: i.2048是一款简单的数字类游戏,界面是一个 4*4的方形格子。每个格子里可以为空或者有 一个2^n的数值。 ii.用户可以输入4种指令,分别是:上下左右,游戏会根据用户的指定的方向,将格子中 的数值向对应方向进行移动,直至移动到最边 上的格子或者有其他数值占用,如果碰到等大 数值,将会进行合并。此外,成功移动后,会 在一个空格子随机生成一个2或者4 iii.游戏目标是合成2048这个数值或者更大的数值。 b)实现思路: i.可以使用二维数组来保存4*4格子中的数值 ii.指令,可以通过输入字符函数,读取用户

在键盘上的方向键,进行判断执行对应的代 码。 iii.游戏界面,可以使用简单的特殊制表符,来实现,并通过清屏函数来进行反复同位置打 印界面。 iv.需要判断游戏结束的函数,以及记录游戏分数和步骤的变量 v.当游戏结束时,能够询问用户是否重新开始。 vi.随机生成一个新数,可以调用随机函数,使用时间做种子。 c)实现难点: i.打印游戏界面,要实现灵活能根据棋盘数组里 面的数据灵活打印。 ii.执行操作时,数值的移动和合并。

四、流程图

五、C语言源代码 // 游戏2048.c #include "windows.h" #include "time.h" #include "stdio.h" #include "conio.h" #include "string.h" //宏定义常量方向键值 //const int LEFT = 75, UP = 72, RIGHT = 77, DOWN = 80; #define LEFT 75 #define UP 72 #define RIGHT 77 #define DOWN 80 const char error_str[] = "您上次输入的指令无法识别,请重新输入。"; struct board { int place[4][4]; long int stepn; long int num; //存储游戏分数 long int time; int dtk; //direction key 记录方向键,及操作方向 int over; int zeronum; }; //该函数为游戏运行函数,当只是玩游戏的时候。进入该函数,游戏控制函数。int main() { //place数组为棋盘,其中为零代表空,-1代表不能合并的牌,其他2的倍数值为本身含义,初始化为全0。 struct board board1, board_backup; int newgame(struct board *, int), show(struct board *), operate(struct board *); char str[100] = "首次运行游戏"; //用于记录系统返回给用户的信息,例如:上一步执行向左合并,按键有误等 newgame(&board1, 0); //调用函数为新局初始化,第二个

工程认识实习报告

第一章实习目的 1.1认识实习是工程管理专业基础必修的实践性教学环节.通过实地参观,使我们通过实践对土木工程的施工现场和施工体系进行考查,了解土木工程建筑、结构、施工的基本知识,建立起初步的工程意识,激发我们对土木工程专业后续课程的求知欲,为学习专业基础课和专业课奠定感性认识的基础。使我们进一步了解土木工程专业,培养学生热爱专业,增加学习和从事本专业的自信心 第二章对框架结构的认识 2.1 对实习地点的概述 我们首先参观了位于万柳庄大街附近的一栋尚未完工的框架结构大楼,为钢筋混凝土结构。让我们对框架结构建筑有了更直观更深刻的了解。 2.2 对框架结构的认识 定义:框架结构是指由梁和柱以刚接或者铰接相连接而成构成承重体系的结构,即由梁和柱组成框架共同抵抗适用过程中出现的水平荷载和竖向荷载。采用结构的房屋墙体不承重,仅起到围护和分隔作用,一般用预制的加气混凝土、膨胀珍珠岩、空心砖或多孔砖、浮石、蛭石、陶粒等轻质板材等材料砌筑或装配而成. 分类:房屋的框架按跨数分有单跨、多跨;按层数分有单层、多层;按立面构成分有对称、不对称;按所用材料分有钢框架、混凝土框架、胶合木结构框架或钢与钢筋混凝土混合框架等。其中最常用的是混凝土框架(现浇整体式、装配式、装配整体式,也可根据需要施加预应力,主要是对梁或板)、钢框架。装配式、装配整体式混凝土框架和钢框架适合大规模工业化施工,效率较高,工程质量较好。

特点:框架建筑的主要优点:空间分隔灵活,自重轻,有利于抗震,节省材料;具有可以较灵活地配合建筑平面布置的优点,利于安排需要较大空间的建筑结构;框架结构的梁、柱构件易于标准化、定型化,便于采用装配整体式结构,以缩短施工工期;采用现浇混凝土框架时,结构的整体性、刚度较好,设计处理好也能达到较好的抗震效果,而且可以把梁或柱浇注成各种需要的截面形状。 缺点:框架节点应力集中显著;框架结构的侧向刚度小,属柔性结构框架,在强烈地震作用下,结构所产生水平位移较大,易造成严重的非结构性破性;钢材和水泥用量较大,构件的总数量多,吊装次数多,接头工作量大,工序多,浪费人力,施工受季节、环境影响较大;不适宜建造高层建筑,框架是由梁柱构成的杆系结构,其承载力和刚度都较低,特别是水平方向的(即使可以考虑现浇楼面与梁共同工作以提高楼面水平刚度,但也是有限的),它的受力特点类似于竖向悬臂剪切梁,其总体水平位移上大下小,但相对与各楼层而言,层间变形上小下大,设计时如何提高框架的抗侧刚度及控制好结构侧移为重要因素,对于钢筋混凝土框架,当高度大、层数相当多时,结构底部各层不但柱的轴力很大,而且梁和柱由水平荷载所产生的弯矩和整体的侧移亦显著增加,从而导致截面尺寸和配筋增大,对建筑平面布置和空间处理,就可能带来困难,影响建筑空间的合理使用,在材料消耗和造价方面,也趋于不合理,故一般适用于建造不超过15层的房屋。 应用范围:框架结构可设计成静定的三铰框架或超静定的双铰框架与无铰框架。混凝土框架结构广泛用于住宅、学校、办公楼,也有根据需要对混凝土梁或板施加预应力,以适用于较大的跨度;框架钢结构常用于大跨度的公共建筑、多层工业厂房和一些特殊用途的建筑物中,如剧场、商场、体育馆、火车站、展览厅、造船厂、飞机库、停车场、轻工业车间等。

C语言实习报告

C语言实习报告(用链表实现学生学籍管理)

绪言 C语言使国内外广泛使用的一种计算机语言。C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好。既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合编写系统软件。 在经过一整个学期的C语言理论学习,我们已经能够掌握其基本语法,但是缺乏一定的实际运用的能力。为了让我们更好的理解和运用其解决实际问题,并且对结构化程序有更进一步的认识,学校组织了这一次C语言实习。 实习中,我们将按要求完成一个较为复杂的程序编写——学生学籍管理程序。 实习基本内容和要求: 1、总体功能要求 (1)链表的建立:每个节点包括:学号、姓名、性别、语文、数学、英语、总分; (2)节点的插入:按学号的顺序插入; (3)删除链表中的节点:按学号或者姓名; (4)链表的输出:按学号排序、按总分排序。 2、性能的要求: (1)各个功能分别用函数实现;

(2)节点信息让用户通过键盘输入 (3)总分通过计算获得; (4)有简单的操作界面; 尽可能考虑程序的容错性、可操作性。 教材和主要参考书目: (1)教材:《C程序设计》,谭浩强编著,清华大学出版社(2)主要参考书目: ①《C程序设计教程》,谭浩强编著,清华大学出版社; ②《C语言程序设计——习题与实验指导》,谭浩强编著,清华大学出版社。实习过程: 我们将有5天的时间完成一个程序和一份实习报告。 1、我们要根据题目的要求进行需求分析和资料整理;(1天) 2、我们利用资料、教材和寻求他人帮助完成详细设计;(注: 关键部分解释说明)(3天) 3、完成一份对自己程序详细描述与解释的报告。(1天)

中南大学机械制造工艺学实验报告

机械制造工艺学实验报告 班级机械1301 姓名黄佳清 学号 07

中南大学机电学院 《机械制造工艺学》课程实验报告 实验名称:加工误差的统计分析 姓名:黄佳清班级:机械1301 学号: 07 实验日期: 2015 年 10 月 18 日指导教师:成绩: 1. 实验目的 (1)掌握加工误差统计分析方法的基本原理和应用。 (2)掌握样本数据的采集与处理方法,要求:能正确地采集样本数据,并能通过对样本 数据的处理,正确绘制出加工误差的实验分布曲线和图。 (3)能对实验分布曲线和图进行正确地分析,对加工误差的性质、工序能力及工艺 稳定性做出准确的鉴别。 (4)培养对加工误差进行综合分析的能力。 2. 实验内容与实验步骤

1.按加工顺序测量工件的加工尺寸,记录测量结果。 2.绘制直方图和分布曲线 1)找出这批工件加工尺寸数据的最大值x max和最小值x min,按下式计算出极差R。 R=x max一x min 2)确定分组数K(K一般根据样本容量来选择,建议可选在8~11之间)。 3)按下式计算组距 d。 4)确定组界(测量单位:微米)。 5)做频数分布表。 6)计算x和 。 7)画直方图 以样本数据值为横坐标,标出各组组界;以各组频率密度为纵坐标,画出直方图。 8)画分布曲线 若工艺过程稳定,则误差分布曲线接近正态分布曲线;若工艺过程不稳定,则应根据实际情况确定其分布曲线。画出分布曲线,注意使分布曲线与直方图协调一致。 9)画公差带 在横轴下方画出公差带,以便与分布曲线相比较。 3.绘制图 1)确定样组容量,对样本进行分组

样组容量m 通常取4或5件。按样组容量和加工时间顺序,将样本划分成若干个样组。 2)计算各样组的平均值和极差 对于第i 个样组,其平均值和极差计算公式为: ∑==m j ij i x m x 1 1 式中 ——第i 个样组的平均值; ——第i 个样组的标准差; ——第i 个样组第j 个零件的测量值; ——第i 个样组数据的最大值; ——第i 个样组数据的最小值 3)计算图控制限(计算公式见实验原理) 4)绘制 图 以样组序号为横坐标,分别以各样组的平均值和极差R 为纵坐标,画出图,并在图上标出中心线和上、下控制限。 4. 按下式计算工序能力系数Cp 5. 判别工艺过程稳定性 可按下表所列标准进行判别。注意,同时满足表中左列3个条件,工艺过程稳定;表中右列条件之一不满足,即表示工艺过程不稳定。

c语言课程设计报告学生成绩信息管理系统源代码

实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图:

1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数

2020工程认知实习报告4篇

2020工程认知实习报告4篇 导读:本文是关于2020工程认知实习报告4篇,希望能帮助到您! 一、实习地点及日程安排: 基本安排xx年7月20日上午,实习动员,建筑讲座; xx年7月20日下午,到在建的云霞小区参观,到结构厅参观;21日全天,参观三峡大坝, xx年7月22日上午,道桥和岩土讲座; xx年7月22日下午,参观宜昌公路大桥和夷陵长江大桥; xx年7月23日全天,自行参观学校的建筑物,并交见习报告。 二、实习目的: 认识实习是整个实习教学计划中的一个有机组成部分,是土木工程专业的一个重要的实践性环节。通过组织参观和听取一些专题技术报告,收集一些与实习课题有关的资料和素材,为顺利完成实习打下坚实基础。通过实习应达到以下目的:了解一般道路与桥梁工程的整个设计过程; 2、了解建筑物的总平面布置、建筑物分类及功能作用、结构类型及特点、结构构件的布置及载荷传递路线、主要节点的细部结构和处理方法等; 3、了解建筑物的施工方法; 4、了解建筑、结构、施工之间的相互关系; 5、了解建筑结构领域的最新动态和发展方向。 6.培养专业兴趣,明确学习目的 三、实习过程及内容: xx年7月20日星期日雪

为期四天的认知实习从今天下午正式开始了,上午徐老师和黄老师为我们作了一个建设方面的讲座,他们以不同角度向我们讲述了建筑工程的概况,并且就当前国内形势以及三峡大学的实际,展望了我们专业的前景,给我感触最深的是他们的严谨的冶学态度,使我认识到作为一个土木工程工作者,必须有严谨的作风和负责的态度,“干土木这行的已经有一只脚踏进了监狱” 下午,我们开始了认知实习的第一项:参观建筑工地和结构厅。 下午2:30我们准时到达实习现场:三峡大学云霞小区1#楼,在楼下的公告栏中我们了解到该楼的建筑面积是47000平方米,工程造价是4036。48万元,再仰望旁边的在建的13层的公寓楼,不禁有一种崇敬之感! 然后,在赵工的带领下,我首先参观了这楼的地下室,经赵工介绍,我们才知道,这不是一个普通的地下室。平时这是一个很大的地下停车场,而在战时则将作为这个社区的人防地下室。在地下室,赵工向我们详细介绍了这栋楼的结构。之后我们上了二三层进行,参观了该楼的内部布局。我们了解到这楼应用了很多新工艺新材料,比如该楼的自重墙用的是粉煤灰砖,其每立方米的质量不超过800kg,也就是说把这种砖放入水中,会浮在水面上。这无疑减轻了梁柱的承重。而使用的水泥是亲水水泥,可以不用粉刷就可直接上涂料,而在外墙的表面使了保温材料和高强防裂纤维,使房子既节能又美观。 参观完了建筑工地之后,我们又参观了三峡大学的结构厅,看到了很多我们专业的实验设备和大致的实验流程,了解到实验在土木工程中的重要性。 通过今天的实习,我对我们专业又有了一些新的认识。 xx年7月21 星期二小雪

C语言实习报告

设计报告 一,实验目的: 通过上机实习,熟练掌握循环语句、选择语句、指针以及结构体的运用技巧。在实习中通过 实际操作,编写程序,发现问题,最后解决问题,提升对c语言实用性的理解,在实践中巩固各知 识点。 C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点,上 机实习可以帮助我们更好地理解这种结构式的 中级语言以及其各式各样的数据类型和高效率 的运算程序,为我们进一步学习C++打下坚实基 础。 同时,在实习过程中,通过互相发现问题,共同解决问题,不仅锻炼了我们的合作能力,而 且也让我们发现了一些自己的个人误区以及其 他人容易犯的错误,从而在今后的学习中更加谨 慎,达到事半功倍的效果;通过询问老师,也让 我们养成了不耻下问的好习惯,这将很有利于以 后的学习。 闲乐-一个人闲。不如大家一块儿乐https://www.wendangku.net/doc/258030922.html,

二,总体设计: 1,学生成绩排名 1,流程图: <通过冒泡法对数组进行排序> <测试时由于循环语句循环次数的错误导致部分数据没有排序,修改FOR语言中的条件即可调试成功>

2,程序: #include int main() { int a[11],i,j,t,b,c,temp1,temp2,temp3; //定义一个数组a[11],用以存放学生的成绩 printf("从键盘输入10个学生成绩:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); //输入10个学生成绩 for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]

c语言课程设计报告

C语言程序设计B 课程设计报告 设计题目:学生成绩管理系统年级班级: 学号: 姓名: 指导教师: 2020 年 6 月 18 日

目录 一、设计目的 (3) 二、课程设计内容和要求 (4) 三、总体设计 (5) 四、主要步骤 (12) 五、功能实现 (13) 六、功能测试 (64) 七、评价程序 (83) 八、课程设计体会 (84)

一、设计目的 程序设计能力是当代理工类大学生的必备能力,当学生学习了C语言之后,编程能力远远不能达到开发实际应用程序的要求,特备是对其中的指针、结构体、链表和文件部分的理解和应用都比较弱。 程序设计的目的是通过对面向过程的学习,将C语言的主要知识点进行综合,针对提高学生C语言程序设计能力,强化编写较大的应用软件能力,熟练运用已掌握的知识解决实际需要解决的问题,以达到更加熟知指针、链表、结构体、文件读取、标准库的使用。 主要目的为以下几点: 1、熟练掌握面向过程(结构化)程序设计基本知识; 2、综合运用所学知识解决实际问题; 3、受到面向过程(结构化)程序设计的基本训练; 4、体会面向过程(结构化)开发程序的过程。

二、课程设计内容和要求 1.课程设计内容: 学生通过使用C语言进行编写算法,开发学生成绩管理系统,以实现对学生成绩的管理。 2.课程设计要求 1)具有菜单,可以在菜单上进行选择; 2)能实现学生数据录入、修改、删除、查询; 3)能实现数据排序; 4)有数据输出功能; 5)有数据读取与存储功能; 6)一个学生的数据(称为:每条记录)包含姓名、学号、语文、数 学、英语、总分、名次等信息; 7)以结构方式存储每条记录; 8)多条记录以链表方式存储到内存; 9)随时可将全部数据存储到磁盘文件中,方便下次从磁盘读取数据。

工程认知实践实习报告

工程认知实践实习报告 篇一:土木工程认识实习报告 xxxx大学xx学院 认识实习报告 xxx xxxxx xxxxxxxxx 学院(系):土木工程 专业: 班级: 学生姓名: 学号: 指导教师: 本报告完成日期: 成绩: 摘要 建筑工程是为新建、改建或扩建房屋建筑物和附属构筑物设施所进行的规划、勘察、设计和施工、竣工等各项技

术工作和完成的工程实体以及与其配套的线路、管道、设备的安装工程。也指各种房屋、建筑物的建造工程,又称建筑工作量。这部分投资额必须兴工动料,通过施工活动才能实现。 其中“房屋建筑物”的建造工程包括厂房、剧院、旅馆、商店、学校、医院和住宅等,其新建、改建或扩建必须兴工动料,通过施工活动才能实现;“附属构筑物设施”指与房屋建筑配套的水塔、自行车棚、水池等。“线路、管道、设备的安装”指与房屋建筑及其附属设施相配套的电气、给排水、暖通、通信、智能化、电梯等线路、管道、设备的安装活动。 对于马上就上大三的我来说,还没有真正去过工地,在自己脑中对于工程都只存在于想象当中的“我认为”。通过这次认知实习,使我们对建筑工程的管理、结构的设计与施工有了一次比较全面的感性认识,进一步理解接受课堂上的知识,使理论在实际的生产中得到了

运用。中国的建筑工程特别是房屋建筑得到了迅猛的发展,并且其需求也越来越大,这对于从事房建的工作者来说,既是一个机遇,也是一个挑战。作为将要走出学校的学生来说,更应该在有限的时间内,掌握更多的专业知识,加强实践和设计能力,这样更有利于将来的发展,使自己在此领域内也有所作为。 目录 1 实习概况............................................................... . (3) 实习目的及要求............................................................... .. (3) 实习时间................................................................. . (3) 实习日程................................................................. . (3) 2 实习内

c语言实习报告

实习报告 实习性质: C语言课程实习 学生姓名:谢辉 专业班级:信安141 指导教师:郑晓蓉、杨娟 实习时间:2014年12月22日- 2014年12月26日 实习地点:1203 重庆工程职业技术学院 学生实习考核表 三号黑体行距:固定

目录 1实习目的..................................................... 2 实习概况..................................................... 2.1 实习要求 ............................................... 2.2 实习时间 ............................................... 2.3 实习环境 ............................................... 2.4 开发环境 ............................................... 3 实习内容..................................................... 3.1 系统需求分析 ........................................... 3.2 程序设计 ............................................... 3.2.1程序的初始界面..................................... 3.2.2成绩的输入......................................... 3.2.3成绩的查询......................................... 3.2.4各科成绩的排序..................................... 3.4.5总成绩排序.........................................

中南大学软件体系结构实验报告-实验1

实验1 UML实验 实验学时: 4 每组人数:1 实验类型:3 (1:基础性2:综合性3:设计性4:研究性) 实验要求:1 (1:必修2:选修3:其它) 实验类别:3 (1:基础2:专业基础3:专业4:其它) 一、实验目的 1.学会安装和使用建模工具PowerDesigner,熟练使用PowerDesigner绘制常用的UML 图形,熟悉常用的UML建模符号; 2.构建用例模型来描述软件需求,包括绘制用例图,撰写用例文档并制作用例检查矩阵; 3. 学习使用状态图描述对象的状态及转换; 4.学习使用活动图为业务流程建模; 5. 学习使用顺序图描述对象之间的交互; 6. 学习类图的绘制; 7. 学习从系统需求中识别类,并构建相应的面向对象模型; 8. 学习使用PowerDesigner实现正向工程和逆向工程; 9. 学习使用组件图描述每个功能所在的组件位置以及它们之间的关系; 10. 学习使用部署图描述软件中各个组件驻留的硬件位置以及这些硬件之间的交互关系。 二、实验内容 1. 某酒店订房系统描述如下: (1) 顾客可以选择在线预订,也可以直接去酒店通过前台服务员预订; (2) 前台服务员可以利用系统直接在前台预订房间; (3) 不管采用哪种预订方式,都需要在预订时支付相应订金; (4) 前台预订可以通过现金或信用卡的形式进行订金支付,但是网上预订只能通过信用卡进行支付; (5) 利用信用卡进行支付时需要和信用卡系统进行通信; (6) 客房部经理可以随时查看客房预订情况和每日收款情况。 绘制该酒店订房系统的用例图。 2. 根据以下场景绘制用例图: 某企业为了方便员工用餐,为企业餐厅开发了一个订餐系统(COS:Cafeteria Ordering System),企业员工可通过企业内联网使用该系统。该系统功能描述如下: (1) 企业的任何员工都可以查看菜单和今日特价;

C语言课程设计报告-模板

C语言课程设计报告 班级:16 物联网 一、题目说明 (1)读取输入信息,能正确进行数字运算

(2)拥有记忆功能,可查询最近几次计算结果并继续进行数字运算。 二、基本功能实现 (1)能实现两个数之间的加减,乘,除,乘方,开方等运算。 (2)实现记忆功能,可保留近十位结果,可用#键查看。(3)*键作为清0键,清除当前屏幕上的值为0表示重新开三、设计流程(可以画流程图,可以直接写说明)

四、代码 #include #include #include #include double yunsuan(double a, char operate, double b); //处理数值之间的运算void PutRes(double array[], double res, int *i); //保存该次运算结果 int main() { char str[40]; double a = 0; double b = 0; double res = 0; double history[10] = {0,0,0}; char opt; int i = 0; printf("欢迎进入计算功能(eg: 1 \n+ 1 ; '#':查询历史结果; 'q':退出程序)·\n"); while(1){

fgets(str,40,stdin); //将从键盘的一整行标准输入保存在字符串str中 if(sscanf(str,"%lf", &a) == 1){ //将str以长浮点型的格式放入a中,如果返回值为1,说明输入的是数值, scanf("%c %lf", &opt, &b); //获取操作符的值和另外一个操作数的值 res = yunsuan(a,opt,b); //调用yunsuan()函数计算,并将结果给res printf("%lf %c %lf = %lf\n\n",a, opt, b, res); PutRes(history, res, &i); //调用函数PutRes()将本次结果保存到数组history中(i用引用传递) // printf("%d\n", i); }else if(sscanf(str,"%c",&opt) == 1){ //将str以字符型的格式放入opt中,如果返回值为1,说明输入的是字符 if(opt == '#'){ //如果opt为‘#’,则显示history 中的数值 int j = 0; for(j = 0; j < i; ++j){ //i为history中存放的数值个数 printf(" %lf ", history[j]); } printf("\n");

工程认知实习报告

工程认知实习报告 导读:篇一:工程认知实习报告 实习报告作为一名工程管理专业的一名当代大学生,为了能在工作中做的更好,我们应通过实践进一步提高自己,是理论与实践子昂结合。这样,我们才能使自己在以后更加胜任自己的工作。在这次认知实习过程中,在老师以及相关人员的带领与指导下,我学到了许多书本上学不到的东西,在技术人员的讲解是我对书本上讲的东西有了进一步的理解。 使我明白一个工程无论是决策阶段设计阶段还是施工阶段,任何一个阶段都要一心一意认认真真的做好,不得有半点马虎。大的工程中会有大的构建,关于大的构建如果整体一次性成型做出会有很大的施工难度而且还会存在一定的质量瑕疵,或者施工水平达不到。比如实习时参观的体育场馆。关于体育场馆的施工,有一些跨度较大的大构建,采用了分段式施工,将一个构建分成了若干段然后独立施工。这样就可以降低施工难度提高施工质量同时也会缩短工期。无论是大工程还是小工程,安全问题永远排在第一。 工期耽误了可以在以后的施工过程中补回来,质量有问题可以进行补救,如果发生了安全事故,后果不堪设想,工地上到处是钢筋、水泥、各种器具。如果发生事故,很容易就会威胁到人的生命。在施工过程中紧抓安全不仅是对工人的负责也是对社会的负责。一个工程用到的材料是各不相同的,每一种材料都有它的特殊用途,

比如玻璃胶,防火泡沫、普通水泥、复合水泥等等。在选用材料的时候要充分考虑到材料的作用,材料的性质,材料的适用环境以及材料在使用过程中的优缺点等等。以免在施工结束后,在使用的过程出现各种可能的事故。在施工中,关于各种施工工具的使用也是有着一定的方法的,每一种工具也都有着它的特殊用途。 有的是用来涂抹的,比如各种刷子和各种抹子还有其他的粉刷工具等。有的是用来切割的,比如电动切割机。有的是用来测定水平线的比如电子水平仪。有的是用来测量的比如钢尺角尺和直尺等。有的则是用来做标记的比如铅笔和粉笔,还有沾有红漆的刷子。无论哪一种工具的使用都会存在一定的误差,所以在使用的过程中要严格按照正确的使用方法进行使用,以把误差减少到最小。要在误差允许的范围内施工。如果施工的误差超出了误差的合理范围,就要考虑如何解决,或者进行返工。 在参观体育场的时候,在老师与技术员的带领下,我们先从外面参观,主要了解了体育馆的外观形状,通过对外观的讲解,我们又了解了一些关于结构方面的知识,和相关结构的材料以及功能。由于体育馆还在建设当中,所以从外面我们可以看到很多一般情况下看不到的结构,比如伸缩缝,基础柱等等。印象最深的是体育馆的顶棚。 这是一个纯钢结构,关于大部件的施工的方法是在地面施工成型后再驾到空中进行焊接,固定。参观的时候体育场馆的主体结构

C语言程序设计实习报告

手机通讯录管理系统一、设计题目的任务和内容 任务:本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。 具体要求: ◆建立通讯录信息,信息包含、姓名、分类(1、办公类2、个人类3、商务类)、电话、 电子邮箱等; ◆将通讯录保存在文件中; ◆查看功能:可按1、办公类2、个人类3、商务类分类查询,当选中其中一类时,显示出 此类所有数据中的姓名和电话号码。 ◆增加功能:能录入新数据。当录入重复姓名和电话号码时,则提示数据录入重复并取消 录入;当通讯录中超过15条信息时,存储空间已满,不能录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 ◆修改功能:选中某个人的姓名是,可对此人的相应数据进行修改。 ◆删除功能:选中某个人的姓名是,可对此人的相应数据进行删除并自动调整后续条目编 号。 系统功能需求分析: 查询:查询通讯录记录 添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 修改:修改通讯录记录

二、总体设计思路 本系统首先设计出了主函数,然后根据去要实现的功能分别设计拉,显示、删除、查找、修改、添加功能的子函数。在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。 系统功能模块图: 输入新信息:可输入新的数据。 添加:可以添加通讯录记录,依次输入姓名、电话号码、分类、电子邮箱后,会提示是否继续添加。 删除:输入姓名删除,输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可按1、办公类2、个人类3、商务类分类查询 修改:输入欲修改的那个人的名字后,再依次输入姓名、电话号码、分类、电子邮箱即可完成修改。 下面就是总的程序流程图:

中南大学 计算机体系结构实验报告

计算机体系结构课程设计 学院:信息科学与工程学院 专业班级: 指导老师: 学号: 姓名:

目录 实验1 对指令操作码进行霍夫曼编码 (3) 一、实验目的 (3) 二、实验内容 (3) 三、设计思路 (4) 四、关键代码 (4) 五、实验截图 (5) 六、源代码 (5) 实验2 使用LRU 方法更新Cache (8) 一、实验目的 (8) 二、实验内容 (8) 三、设计思路 (9) 四、程序截图 (9) 五、实验代码 (9) 实验总结 (16) 参考文献 (16)

实验1 对指令操作码进行霍夫曼编码一、实验目的 了解和掌握指令编码的基本要求和基本原理 二、实验内容 1. 使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。 2. 问题描述以及问题分析 举例说明此问题,例如: 下表所示: 对此组指令进行 HUFFMAN 编码正如下图所示: 最后得到的HUFFMAN 编码如下表所示:

最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行 HUFFMAN 编码,只要根据指令的各类操作码的出现概率构造HUFFMAN 树再进行 HUFFAM 编码。此过程的难点构造 HUFFMAN 树,进行 HUFFAM 编 码只要对你所生成的 HUFFMAN 树进行中序遍历即可完成编码工作。 三、设计思路 观察上图,不难看出构造 HUFFMAN 树所要做的工作:1、先对各指令操作码的出现概率进行排序,构造一个有序链表。2、再取出两个最小的概率节点相加,生成一个生的节点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表是否只有一个节点,是则 HUFFAN 树构造完毕,否则继续做 2 的操作。为此设计一个工作链表(链表的元素时类,此类的功能相当结构。)、HUFFMAN 树节点、HUFFMAN 编码表节点。 四、关键代码 哈夫曼树重点在于如何排列权值大小不同的结点的顺序 private int leafNum; //叶子结点个数 private HaffmanNode[] hnodes; //哈夫曼树的结点数组 public HaffManCode(double[] weight) //构造指定权值集合的哈夫曼树 { int n = weight.length; //n个叶子结点 this.leafNum = n; this.hnodes = new HaffmanNode[2*n-1]; //n个叶子结点的哈夫曼树共有2n-1个结点 for(int i=0; i

相关文档
相关文档 最新文档