结构上机报告2
- 格式:pdf
- 大小:1.31 MB
- 文档页数:4
蛋白质结构实验报告单实验目的:通过对蛋白质结构的实验研究,了解蛋白质的基本结构特征和分子机制。
实验原理:1. 蛋白质的基本结构:蛋白质由氨基酸组成,通过肽键连接起来形成多肽链。
具体而言,蛋白质的结构包括主链和侧链。
主链由一系列相互连接的氨基酸残基组成,而侧链则决定了蛋白质的性质和功能。
2. 蛋白质的一级结构:一级结构指的是蛋白质主链上氨基酸残基的线性序列。
这一结构由DNA编码决定,不同的氨基酸残基序列会导致蛋白质的不同特性和功能。
3. 蛋白质的二级结构:二级结构是指蛋白质主链中局部区域的空间排列形式,包括α-螺旋和β-折叠。
这种空间排列是由氢键相互作用引起的。
4. 蛋白质的三级结构:三级结构是指蛋白质整体的三维空间结构,包括螺旋、折叠、环等形式。
这种结构是由主链和侧链之间的相互作用引起的,具有高度的空间有序性。
实验步骤:1. 准备蛋白质样品:从生物体中提取目标蛋白质,并纯化出所需的样品。
2. 红外光谱分析:使用红外光谱仪测定蛋白质样品的红外吸收谱,得到蛋白质的一级结构信息。
3. X射线晶体学分析:将蛋白质样品制备成高质量的晶体,然后通过X射线衍射测定晶体的衍射图案,从而推导出蛋白质的三级结构。
4. 核磁共振分析:使用核磁共振技术观察蛋白质样品的信号,以获得蛋白质分子中不同原子的化学位移和相互之间的关系,进而推导出蛋白质的二级结构。
实验结果与分析:1. 红外光谱分析结果显示,蛋白质样品在特定波长的红外光下会吸收不同强度的光,从而得到了蛋白质的一级结构信息。
2. X射线晶体学分析结果显示,蛋白质样品的晶体衍射图案呈现出特定的图形,通过分析这些图形可以推导出蛋白质的三级结构。
3. 核磁共振分析结果显示,蛋白质样品的不同原子在核磁共振谱图上呈现出不同的信号,通过分析这些信号可以推导出蛋白质的二级结构。
结论:通过红外光谱分析、X射线晶体学分析和核磁共振分析等实验方法,我们得到了蛋白质的一级、二级和三级结构信息。
上机实验报告篇1用户名se××××学号姓名学院①实验名称:②实验目的:③算法描述(可用文字描述,也可用流程图):④源代码:(.c的文件)⑤用户屏幕(即程序运行时出现在机器上的画面):2.对c文件的要求:程序应具有以下特点:a可读性:有注释。
b交互性:有输入提示。
c结构化程序设计风格:分层缩进、隔行书写。
3.上交时间:12月26日下午1点-6点,工程设计中心三楼教学组。
请注意:过时不候哟!四、实验报告内容0.顺序表的插入。
1.顺序表的删除。
2.带头结点的单链表的\'插入。
3.带头结点的单链表的删除。
注意:1.每个人只需在实验报告中完成上述4个项目中的一个,具体安排为:将自己的序号对4求余,得到的数即为应完成的项目的序号。
例如:序号为85的同学,85%4=1,即在实验报告中应完成顺序表的删除。
2.实验报告中的源代码应是通过编译链接即可运行的。
3.提交到个人空间中的内容应是上机实验中的全部内容。
上机实验报告篇2一、《软件技术基础》上机实验内容1.顺序表的建立、插入、删除。
2.带头结点的单链表的建立(用尾插法)、插入、删除。
二、提交到个人10m硬盘空间的内容及截止时间1.分别建立二个文件夹,取名为顺序表和单链表。
2.在这二个文件夹中,分别存放上述二个实验的相关文件。
每个文件夹中应有三个文件(.c文件、.obj文件和.exe文件)。
3. 截止时间:12月28日(18周周日)晚上关机时为止,届时服务器将关闭。
三、实验报告要求及上交时间(用a4纸打印)1.格式:《计算机软件技术基础》上机实验报告用户名se××××学号姓名学院①实验名称:②实验目的:③算法描述(可用文字描述,也可用流程图):④源代码:(.c的文件)⑤用户屏幕(即程序运行时出现在机器上的画面):2.对c文件的要求:程序应具有以下特点:a 可读性:有注释。
b 交互性:有输入提示。
《高级语言程序设计》实验报告实验序号:2 实验项目:数据类型、运算符和表达式09机制2 学号232 姓名叶志伟专业、班级实验地点1-511 指导教师胡亮实验时间 3.15一、实验目的及要求1.掌握C基本数据类型的基本概念、基本属性。
2.学会如何书写一个整型、字符型、实型常量。
3.掌握C算术运算符的基本概念、基本属性、运算规则。
二、实验设备(环境)及要求使用Visual C++ 6.0;windows系列操作系统的环境。
三、实验内容与步骤1.输入下列源程序,进行修改、编译、连接和运行。
程序:main ( ){ char c1,c2;c1=97;c2=98;printf("%c,%c\n",c1,c2);printf("%d,%d\n",c1,c2);}运行结果是:两行结果的不同是由什么引起的:程序定义了输出的类型,第一个输出字符型,另一个输出整型。
2.输入并运行下面的程序:#include<stdio.h>void main(){char c1,c2,c3;c1=getchar();c3=getchar();putchar(c1);putchar(c2);putchar(c3);}观察以下不同输入时的输出,分析不同输出的原因。
(↙表示回车)(1)123↙(2)12↙(3)1↙2↙运行结果是:分析运行结果:getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.3.把以上程序改写如下,用于上面相同的输入运行,分析不同输出的原因。
篇一:建筑识图实训报告实训报告时间过得真快,一转眼十多天的识图实训时间就结束了!十多天的实训时间让我学到了很多东西,不仅使我在理论上对建筑领域有了全新的认识,在实践能力上也得到了提高,明白了作为一名新时期的技术人才一定要做到学以致用,更学到了许多为人处事的道理,这些对我来说受益匪浅。
除此之外,我还学会了如何更好地去与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。
第一次亲身感受到了所学知识与实际的应用、理论与实际的结合,让我大开眼界。
经过这次实训,我懂得了最基本的识图顺序,拿到图纸,首先要瞧的就就是图纸目录,其次就仔细瞧图纸的总说明,懂得建筑施工图与结构施工图的相应区别,在瞧到图纸的过程中应结合图纸里面的说明进行观察,同时在图纸中我瞧到了有好多细节的东西需要我们注意,所以在识图过程中细心就是很重要的!再者,我们在识图中相信大家也有所感触就就是不知道瞧什么,在这个问题上有好多同学在实训过程中学不到什么东西,其实识图就是靠自己去观察,利用空间想象结合实际您就会发现自己有所进步了。
下面就就是我个人在此次实训中所学到的一些东西、第一、建筑图纸的几个瞧点:1、设计说明就是设计图纸的纲领,瞧图先要认真阅读设计说明。
设计说明中包括建筑工程概况(建筑名称、建筑地点、建设单位),经济技术指标(建筑面积、建筑层数、建筑高度、耐火等级、防水等级、抗震设防烈度等),基本做法(墙体、防水、门窗、玻璃等)。
把这些内容瞧明白了,对建筑的基本情况也就大体了解了。
2、总平面图表达建筑与周围环境的关系,就是建筑定位的关键。
总平面图中除了建筑,还会标示道路、停车场、绿地、水面、广场等内容,帮助我们全面了解场地条件。
重点关注场地入口、建筑入口、各种间距(消防、日照、卫生)的控制、定位坐标。
竖向设计就是总平面图的另一重要内容,表达场地的地形变化及排除地面雨水的方式,而且容易被初学者忽视。
3、平面图表达建筑的布局,瞧平面图应该抓住重点,否则会迷在复杂的标注与图样中。
患者监护系统结构设计报告1 系统需求监护系统要随时接受每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班医护发出警告信息,同时系统打印出病人的病情报告给医护人员。
2总体结构设计得出实验一、二的可行性分析和需求分析。
建立如下总体结构:3.模块说明该软件有4个子系统,下设共9个功能模块,各子系统及模块功能如下:1. 病人基本信息管理子系统:医护人员将病人的初始的基本信息输入系统。
(1)信息输入模块;对病人的基本信息(备注、病情状态、病情变化趋势进行输入操作。
(2)信息修改模块;对病人的基本信息备注、病情状态、病情变化趋势进行修改。
医院病人监护系统生理信号输入系统 病人基本信息系统 警报子系统 病人病情管理子系统生理信号输入管理定时时间调节信息输入信息修改 信息查询生理信号安全范围控制警报病情报告病情报告打印(3)信息查询模块;对病人的基本信息备注、病情状态、病情变化趋势)进行查询。
2. 病人病情管理子系统:对病人每一段时间的病情进行编辑存储,这一子系统包含有生病信号管理模块和定时采样模块。
(1)病情查询模块:家属及医护人员对一段时间之类的病人病情或生理状况进行查询,主要是对病人的基本信息备注、病情状态、病情变化趋势进行查询。
(2)病情报告打印模块:可以对查询的病人病情打印出病情报告以便医护人员及家属查阅,主要是对病人的基本信息备注、病情状态、病情变化趋势)进行查询。
3. 生理信号输入控制子系统:根据各个病人不同的病情及自身的生理情况对各个病人的生理信号进行输入、修改、查询。
(1)生理信号输入管理模块:根据各个病人不同的病情及自身的生理情况对各个病人的生理信号的安全范围进行输入、修改、查询。
(2)定时时间调节模块:设定生理信号采样的时间周期,同时对采样到的的数据前后对比,提前做好预警。
4. 警报子系统:这一子系统主要是判定病人生理信号判定病人是否超出病人生理安全范围,如果超出设定的安全值,则系统自动报警。
《织物结构与设计》实验指导书上海工程技术大学服装学院纺织工程系2012年9月织物结构与设计实验指导书前言织物组织是纺织品赖于存在的重要因素,它是形成织物千变万化的内在依据,解析它的组织结构,探其变化原因,掌握设计技能成了织物设计的重要手段。
材料、工具、技术、知识、经验是织物设计的五大要素,也是织物设计构思敏锐的美的感情表现的基础,但是这些知识与技能如果缺乏实践的体验,通常难于变成有机的学问。
加强实践性环节不仅能使它们超于有机的深化,同时也能使设计思考力富于弹性,以适应现代织物设计的需要,并有所建树。
实验一了解自动剑杆织样机的工作原理一、实验目的1、了解自动织样机的各主要机件的作用与相互的配合;2、了解穿综、穿筘、投纬、绘制纹板图等准备工作;3、了解在织样机上的织造方法;4、进一步理解上机图中各图的作用。
二、实验设备及功能(一)SUⅢ型全自动剑杆织样机SUⅢ型全自动剑杆织样机从开口、引纬、选色、打纬、送经、卷取等等动作皆可为全自动操作,所以打样品质控制非常精密。
织样机的运转速度可依需求而作适当地调整,最快可达到40rpm,与传统人工打样或半自动织样机的速度比,可节省非常多的时间。
采用该种自动小样机的目的在于,严格控制织物的紧密度,随时掌控布面质量,使织物尽量符合实验要求,以便实验顺利进行,数据更加准确。
SUⅢ型全自动剑杆织样机的运作过程中,除了经纱卷取是由马达带动外,其余动作皆由汽缸驱动。
因此,还配备一个4.0~7.5bar的空气压缩机。
钢筘的宽度为12英寸。
SUⅢ型全自动剑杆织样机共有二十片综框,其中前两片由系统控制,作为绞纱与废边之用。
而第三片综框才是纹板图上的第一片,其余依次类推,所以纹板图设计最多可达十八片综框。
每片综框最多可安装280~300根综丝。
(二)设备具有的功能1、可输入相应的数字来修改机上纬密。
2、可以找寻断纬。
3、在显示区,显示了设计文件名、总梭数、当前梭数、纬密、开口情况(哪些综框提起)、选色情况和当前织机的运转情况。
北京工业大学- 第学期信息学部计算机学院3月31日报告题目:输入中缀体现式,输出后缀体现式,并对体现式求值A.分析中缀体现式旳运算顺序受运算符优先级和括号旳影响。
因此,将中缀体现式转换成等价旳后缀体现式旳核心在于如何恰当旳去掉中缀体现式中旳括号,然后在必要时按照先乘除后加减旳优先规则调换运算符旳先后顺序。
在去括号旳过程中用栈来储存有关旳元素。
基本思路:从左至右顺序扫描中缀体现式,用栈来寄存体现式中旳操作数,开括号,以及在这个开括号背面旳其她临时不能拟定计算顺序旳内容。
(1)当输入旳是操作数时,直接输出到后缀体现式(2)当遇到开括号时,将其入栈(3)当输入遇到闭括号时,先判断栈与否为空,若为空,则表达括号不匹配,应作为错误异常解决,清栈退出。
若非空,则把栈中元素依次弹出,直到遇到第一种开括号为止,将弹出旳元素输出到后缀体现式序列中。
由于后缀体现式不需要括号,因此弹出旳括号不放到输出序列中,若没有遇到开括号,阐明括号不匹配,做异常解决,清栈退出。
(4)当输入为运算符时(四则运算+ - * / 之一)时:a.循环,当(栈非空&&栈顶不是开括号&&栈顶运算符旳优先级不低于输入旳运算符旳优先级)时,反复操作将栈顶元素弹出,放到后缀体现式中。
b.将输入旳运算符压入栈中。
(5)最后,当中缀体现式旳符号所有扫描完毕时,若栈内仍有元素,则将其所有依次弹出,放在后缀体现式序列旳尾部。
若在弹出旳元素中遇到开括号,则阐明括号不匹配,做异常解决,清栈退出。
B.实现#include<stdio.h>#include<string.h>#include<stdlib.h>#include<stack>using namespace std;#define N 1000char infix[N]; //中缀体现式(未分离,都在一种字符串里)char expression[N][10]; //保存预解决过旳体现式,也就是每个元素都分离过旳体现式char suffix[N][10]; //保存后缀体现式旳操作数int count;//体现式中元素旳个数(一种完整到数字(也许不止一位数)或者符号)int suffixLength;//后缀体现式旳长度int level(char a){switch(a){case '#':return 0;case '+':case '-':return 1;case '*':case '/':return 2;case '^':return 3;default:break;}return -1;}int isDigital(char x){if( (x>='0'&&x<='9') || (x>='A'&&x<='Z') || (x>='a'&&x<='z') || (x=='.') )return 1;return 0;}int isNumber(char *str){int i;for(i=0;str[i];i++){if(isDigital(str[i])==0)return 0;}return 1;}/*************************************预解决中缀体现式,把持续旳字符分离成不同旳元素,用字符串数组(expression[][])保存,以便背面旳计算,由于这里考虑了运算数也许不全是个位数例如:(12+3)在解决成后缀体现式时,是123+,容易产生歧义(1+23 ? 12+3)*************************************/void pretreatment(char *str){int i,j,numberFlag;char temp[3];char number[10];count=0;numberFlag=0;for(j=0,i=0;str[i];i++){if(isDigital(str[i])==0){if(numberFlag==1){number[j]=0;strcpy(expression[count++],number); j=0;numberFlag=0;}if(str[i]!=' '){temp[0]=str[i];temp[1]=0;strcpy(expression[count++],temp); }}else {numberFlag=1;number[j++]=str[i];}}puts("分离后旳体现式为");for(i=0;i<count;i++){printf("%s ",expression[i]);}puts("");puts("");}/*****************************************中缀体现式转后缀体现式遍历字符串,对于str[i]str[i]是运算数(或者是字母替代旳运算变量)输出;str[i]是符号,有两种状况(1),是右括号,栈顶元素输出,直到与str[i]匹配旳左括号出栈(左括号不用输出打印)(2),是运算符,判断str[i]与栈顶元素旳优先级,str[i]优先级不高于栈顶符号,则栈顶元素输出,直到栈空或者栈顶符号优先级低于str[i]*****************************************/void infix_to_suffix(char str[N][10]){memset(suffix,0,sizeof(suffix));suffixLength=0;stack <char*> st;int i=0;char Mark[2]="#";st.push(Mark);do{if(isNumber(str[i])==1)//运算数直接保存到后缀体现式中strcpy(suffix[suffixLength++],str[i]);else if(str[i][0]=='(') //是左括号,直接入栈st.push(str[i]);else if(str[i][0]==')'){ //是右括号,栈顶出栈,直到与其匹配旳左括号出栈while( strcmp(st.top(),"(")!=0 ){char temp[10];strcpy(temp,st.top());strcpy(suffix[suffixLength++],temp);st.pop();}st.pop();}else if( strcmp(st.top(),"(")==0 )//是运算符,且栈顶是左括号,则该运算符直接入栈st.push(str[i]);else { //是运算符,且栈顶元素优先级不不不小于运算符,则栈顶元素始终//出栈,直到栈空或者遇到一种优先级低于该运算符旳元素while( !st.empty() ){char temp[10];strcpy(temp,st.top());if( level(str[i][0]) > level(temp[0]) )break;strcpy(suffix[suffixLength++],temp);st.pop();}st.push(str[i]);}i++;}while(str[i][0]!=0);while( strcmp(st.top(),"#")!=0 ){ //将栈取空结束char temp[10];strcpy(temp,st.top());strcpy(suffix[suffixLength++],temp);st.pop();}puts("后缀体现式为:");for(i=0;i<suffixLength;i++){printf("%s",suffix[i]);}puts("");puts("");}/**************************************计算后缀体现式旳值**************************************/char kt[N][10];int stackTop;void getResult(char str[N][10]){stackTop=0;/*这里要注意,内存旳分派方案导致 i 旳位置就在temp[9]旁边,然后strcpy()函数直接拷贝内存旳话,在temp越界状况下会覆盖 i 旳值*/int i;char temp[10];for(i=0;i<suffixLength;i++){if(isNumber(str[i])==1){strcpy(kt[stackTop++],str[i]);}else {char a[10],b[10];double na,nb,nc;strcpy(a,kt[stackTop-1]);na = atof(a);stackTop--;strcpy(b,kt[stackTop-1]);nb = atof(b);stackTop--;if(str[i][0]=='+')nc=nb+na;else if(str[i][0]=='-')nc=nb-na;else if(str[i][0]=='*')nc=nb*na;else if(str[i][0]=='/')nc=nb/na;sprintf(temp,"%lf",nc);strcpy(kt[stackTop++],temp);}}puts("\nThe result is : %f\n");printf("%s\n",kt[stackTop-1]);}int main(){printf("Please input calculate Expression :\n"); char temp[N];while(gets(infix)){strcpy(temp,infix);pretreatment( strcat(temp," ") );infix_to_suffix(expression);getResult(suffix);}return 0;}C.总结实验需要细心细心再细心。
计算机实验报告(2)操作系统部分一、基本要求和内容1.了解操作系统的基本功能.2.认识WINDOWS桌面的各部分组成,掌握基本的桌面操作.3.掌握各种基本操作对象的操作方法.4.学会使用WINDOWS帮助.5.了解基本的DOS命令和基本的命令行操作方法.6.熟练掌握文件操作方法.7.掌握对图标的操作方法(移动/拖曳/单击/双击/右击等等).8.熟悉资源管理器窗口和”我的电脑”(“计算机”)窗口.9.掌握启动控制面板的方法,了解控制面板的主要功能,掌握使用控制面板对软硬件进行设置的方法。
10.掌握“运行”对话框的使用方法。
11.了解“任务管理器”的简单使用方法。
12.熟悉“画图”“记事本”“计算器”“写字板”等常用应用程序。
13.开始POWERPOINT的基本使用.二、通过上机实验解决下列问题1. CTRL+ALT+DEL 组合键的功能是:打开【任务管理器】窗口2.全角和半角的区别是:半角是一个字符,全角是两个字符3. CTRL+A组合键的功能是:全部选中CTRL+C组合键的功能是:复制CTRL+V组合键的功能是:粘贴CTRL+X组合键的功能是:剪切CTRL+Z组合键的功能是: 撤销ALT+PRINTSCREEN组合键的功能是:复制当前窗口、对话框或其他对象到剪贴板中任务栏隐藏时通过什么组合键可以看到任务栏:Ctrl+Alt+Del进行窗口切换的组合键是:ALT+Tab4.“画图”应用程序默认保存文件类型是:*.png“记事本”应用程序默认保存文件类型是: *.txt.DOC是什么文件类型Word文档.EXE是什么文件类型可执行文件(程序文件)5.鼠标的基本操作方法包括:指向、单击、双击和拖动鼠标指针附近有漏沙钟表示当前的状态是: 沙漏是等待,因为程序先是从硬盘上读取,然后再到内存,芯片在其期间进行运算,再没真正的打开程序时,系统认为它没正真的启动6.资源管理器左下角窗格(即”文件夹”窗口)显示的是:系统中的所有资源以分层树型的结构显示出来7.一般情况下,对文件进行重命名时,不应该修改文件的扩展名,因为: 如果修改了后缀名则会导致文件属性更改,文件无法打开8.文件的属性主要包括哪些:“只读”、“存档”、“隐藏”9.选择多个连续的文件可以采用哪些方法:使用鼠标先选定第一个文件或文件夹,然后按住Shift键,用鼠标单击最后一个文件或文件夹,这样在第一个对象和最后一个对象之间的所有文件或文件夹将全部被选中,包括第一个和最后一个文件或文件夹。
《Visual C#程序设计》课程上机实验报告专业 _________________班级学号________________姓名 ______________指导教师 ______________学期_______________________南京工业大学测绘学院上机守则1.学生必须按指导教师安排的上机实验时间进入机房上机,未经许可,不得带外人进入机房。
2.进入机房时必须穿上鞋套,否则不得进入机房。
3.认真填写上机情况登记表,若遇计算机有异常情况,应先向老师汇报,不得擅自处理。
4.遵守计算机操作规程,即开机时先开显示器再开主机;结束时须关闭计算机,关机时先通过Windows功能关闭系统,主机电源指示灯灭了以后再关闭显示器。
5.禁止上机时玩游戏或从事与上机实验无关的内容。
6.保持机房安静和整洁,不得携带食品、饮料进入机房,严禁随地吐痰、乱扔垃圾或杂物,禁止吸烟、大声喧哗或闲聊。
7.爱护机房设施,严禁更改设置参数、添加口令或删除非本人文件。
对于导致计算机不能正常工作、影响他人上机者,将取消其上机资格。
8.严禁私自拆卸配件或将室内物品带出室外。
一经发现,除要求按价赔偿外,将通报批评和取消其上机资格,情节严重者交有关行政部门和司法部门处理。
上机实验注意事项1、上机实验前必须阅读有关教材及本上机实验指导书,初步了解上机实验内容要求与步骤。
2、严格遵守上机守则,严禁大声喧哗或玩游戏。
3、认真填上机实验记录,不可潦草,填写内容包括上机实验时间、地点、实验主要内容、步骤及完成成果说明等。
4、独立完成上机实验内容,实事求是,严禁抄袭他人作业。
若有弄虚作假现象,该课程成绩按不及格处理。
5、实验结束时,应向指导教师提交上机实验报告和有关成果,符合要求并经允许,方可关机和离开机房。
6、按时上机,不准迟到、早退、旷课,有事须预先履行请假手续,征得指导教师同意后方可离开。
上机实验一、熟悉Visual C#开发环境一、实验目的熟悉Visual C#集成开发环境,了解Visual C#控制台应用程序和窗体应用程序的编写过程。
数据结构实验报告实验名称:实验2——栈和队列1 实验目的通过选择下面五个题目之一进行实现,掌握如下内容:进一步掌握指针、模板类、异常处理的使用掌握栈的操作的实现方法掌握队列的操作的实现方法学习使用栈解决实际问题的能力学习使用队列解决实际问题的能力2 实验内容利用栈结构实现八皇后问题。
八皇后问题19世纪著名的数学家高斯于1850年提出的。
他的问题是:在8*8的棋盘上放置8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列、同一斜线上。
请设计算法打印所有可能的摆放方法。
提示:1、可以使用递归或非递归两种方法实现2、实现一个关键算法:判断任意两个皇后是否在同一行、同一列和同一斜线上2. 程序分析主程序:#include<iostream>using namespace std;const int StackSize=8; //皇后的个数int num=0;template <class T>class SeqStack //定义顺序栈模板类{public:SeqStack(){top=-1;} //构造函数,初始化空栈void Push(T x); //入栈操作void Pop();//出栈操作void PlaceQueen(int row); //放置皇后bool Judgement();//判断是否符合条件void Print();//输出符合条件的皇后排列bool Empty(){if(top==-1) return true;else return false;}; //判断栈是否为空private:T data[StackSize]; //定义数组int top; //栈顶指针};template <class T>void SeqStack<T>::Push(T x) //入栈操作{if(top>=StackSize-1) throw"上溢";top++;//栈顶指针上移data[top]=x;}template <class T>void SeqStack<T>::Pop()//出栈操作{if(Empty()) throw"下溢";top--;//栈顶指针下移}template <class T>bool SeqStack<T>::Judgement()//判断该位置是否合适{for(int i=0;i<top;i++)if(data[top]==data[i]||(abs(data[top]-data[i]))==(top-i))//判断是否满足任意两个皇后不在同列同一斜线return false;return true;}template <class T>void SeqStack<T>::PlaceQueen(int row) //放置皇后{for (int i=0;i<StackSize;i++){Push(i); //入栈if (Judgement())//判断位置是否合适{if (row<StackSize-1)PlaceQueen(row+1); //如果合适满足条件则放置一个皇后,递归调用else{num++;//不满足条件则到下一行Print();//输出符合条件的皇后}}Pop();//出栈}}template <class T>void SeqStack<T>::Print()//输出皇后函数{cout<<"NO."<<num<<":"<<endl; for(int i=0;i<StackSize;i++){for(int j=0;j<data[i];j++){cout<<"□";}cout<<"■";for(int j=StackSize-1;j>data[i];j--){cout<<"□";}cout<<endl;}cout<<endl;}void main(){SeqStack<int> Queen;Queen.PlaceQueen(0);cout<<"总共有"<<num<<"种摆放方法。
BIM课程上机实验报告20 21 --20 22 学年 2 学期实验项目名称:Revit基本操作及结构模型的创建课程名称:专业班级:学生姓名:学生学号:河南理工大学2022年实验项目一:Revit基本操作及结构模型的创建一、实验内容:1、熟悉Revit,新建项目,选择样板文件,运用Revit创建标高和轴网的基本操作;2、载入族,属性设置,创建构件。
3、通过载入构件、设置属性,创建柱、梁、板,并能够对其进行属性和材质编辑;4、能够利用粘贴楼层的方法复制标准楼层的模型。
二、实验目的1、熟悉Revit的界面和基本建模思路;2、能够创建标高和轴网、并生成相应的平面;3、掌握载入族的方法,能够通过载入族创建构件;4、能够创建常规模型的柱、梁、板和基础等的结构模型。
三、实验学时:4学时四、实验过程及成果截图(介绍实验过程,选取平面、立面、三维和细部典型截图并说明)1、标高和轴网(建模过程及截图)(1)标高的绘制步骤第一步:选择选择“项目浏览器”的立面,以“南”里面为标准进行标高绘制。
第二步:此样板中会提前给出部分标高,我们有两种方法去绘制标高。
第一种是选择“基准”中的标高按钮一层层进行绘制。
(通过第一种方法绘制的标高会自动生成“结构平面”和“楼层平面”)第二种是通过阵列的方式直接按照统一间距生成标高,此方法需要注意,通过“阵列”生成的标高需要进行解组。
通过第二种方式绘制出来标高需要再手动生成一下“结构平面”以及“楼层平面”。
(2)轴网的绘制步骤第一步:选择“结构”中的轴网功能进行绘制。
绘制方式同标高,可以通过阵列和一个个画两种方式进行绘制。
第二步:对绘制好的轴网进行标注。
选择“注释”中的“对齐”指令。
对相邻轴线和总长进行标注。
最终绘制完成。
2、载入族和属性设置(建模过程及截图)第一步:载入族。
在“插入”选项中选择“载入族”指令。
然后可以根据不同需求载入不同的族来绘制bim图形。
第二步:更改族属性。
我们载入族之后需要在属性页面对载入的族进行属性设置。
《数据结构》实验报告项目名称栈、队列与杨辉三角专业班级软件工程工科试验班学号3903120128姓名谢江实验成绩:批阅教师:2012年5月22 日实验1《单链表的建立与约瑟夫问题》实验学时:实验地点:寝室与实验室实验日期:2012年5月22日1.需求分析实验2 主要是关于栈。
队列的建立以及杨辉三角问题的解决(队列运用)2.概要设计以及详细设计(1)栈class Stack{public:Stack();bool empty();//判断栈是否为空T peek();//显示栈顶元素void push(T value);//入栈T pop();//出栈int getSize();//当前栈中元素的数量private:T *elements;//数组指针int size;//栈中的元素数量int capacity;//栈的容量void ensureCapacity();//确认栈的容量是否大于元素数量};(2)队列class Queue{public:Queue();void enQueue(T element);//元素入队T deQueue();//元素出对,如果没有元素,抛出异常int getSize();//获取队列大小private:LinkedList<T> list;//定义表};3.调试分析内容包括:调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;经验和体会等。
个人标记:能建立顺序栈,以及链表顺序队列,对于比较复杂的链栈、循环队列等比较不熟悉,杨辉三角问题存在问题此次报告暂时不交,还有就是抛出异常的问题,例如:T deQueue()throw (runtime_error);//元素出对,如果没有元素,抛出异常会提示警告:C++ exception specification ignored except to indicate a function is not_declspec(nothrow)于是尽可能用if(…)throw runtime_error,就不报错了4.附录(1)栈Stack.h*****************************//采用数组的方式进行栈的操作#ifndef STACK_H#define STACK_Htemplate<typename T>class Stack{public:Stack();bool empty();//判断栈是否为空T peek();//显示栈顶元素void push(T value);//入栈T pop();//出栈int getSize();//当前栈中元素的数量private:T *elements;//数组指针int size;//栈中的元素数量int capacity;//栈的容量void ensureCapacity();//确认栈的容量是否大于元素数量};template<typename T>Stack<T>::Stack(){capacity = 10;//初始栈的大小size = 0;//初始元素的数量elements = new T[capacity];//建立指针}template<typename T>bool Stack<T>::empty(){if(size == 0)return true;elsereturn false;}template<typename T>//只显示栈顶元素并不出栈T Stack<T>::peek(){return elements[size - 1];}template<typename T>void Stack<T>::ensureCapacity(){if(size >= capacity)//如果满足进行指针的更换{T *old = elements;capacity = size + 1;elements = new T[capacity];for(int i = 0; i < size; i++)elements[i] = old[i];delete old;}}template<typename T>void Stack<T>::push(T value){ensureCapacity();//入栈前进行栈是否溢出的判断elements[size++] = value;}template<typename T>T Stack<T>::pop(){return elements[--size];}template<typename T>int Stack<T>::getSize(){return size;}#endif*************************************TestStack.cpp*************************************#include<iostream>#include"Stack.h"using namespace std;int main(){Stack<int> intS;cout << "before push size of intStack is: " << intS.getSize() << endl;//统计入栈前栈的大小for(int i = 0; i < 10; i++){int num;cout << "enter num: ";cin >> num;intS.push(num);}cout << "now size of intStack is: " << intS.getSize() << endl;//统计入栈后栈的大小while(!intS.empty()){cout << intS.pop() << " out " << endl;}cout << "after pop size of intStack is: " << intS.getSize() << endl;//出站后栈的大小system("pause");return 0;}##################################################(2)队列LinkedList.h******************************************#ifndef LINKEDLIST_H#define LINKEDLIST_H#include<stdexcept>using namespace std;template<typename T>class Queue;//前视定义,否则无法友元template<typename T>class Node{public :T element;//节点数据域Node<T> *next;//指向下指针Node(){next = NULL;}Node(T element){this -> element = element;next = NULL;}};template<typename T>class LinkedList{public:LinkedList();T removeFirst();//移除并返回表头元素void addLast(T element);//尾端插入新元素int getSize();//获取表的大小private:Node<T> *head, *tail;//定义头节点、尾节点int size;};template<typename T>LinkedList<T>::LinkedList()//初始化链表NULL{head = tail = NULL;size = 0;}template<typename T>void LinkedList<T>::addLast(T element){if(tail == NULL){head = tail = new Node<T>(element);}else{tail ->next = new Node<T>(element);tail = tail ->next;}size++;//作添加工作,size++}template<typename T>T LinkedList<T>::removeFirst(){if(size == 0)throw runtime_error("No elements");//抛出异常情况else{//删除并返回头节点元素,把下一节点作为新的头节点Node<T> *temp = head;head = head ->next;if(head == NULL)tail = NULL;size--;//作删除工作,size--T element = temp ->element;delete temp;return element;}}template<typename T>int LinkedList<T>::getSize()//返回size{return size;}#endif****************************************Queue.h***********************************#ifndef QUEUE_H#define QUEUE_H#include"LinkedList.h"#include<stdexcept>using namespace std;template<typename T>class Queue{public:Queue();void enQueue(T element);//元素入队T deQueue();//元素出对,如果没有元素,抛出异常int getSize();//获取队列大小private:LinkedList<T> list;//定义表};template<typename T>Queue<T>::Queue(){}//空的构造函数template<typename T>void Queue<T>::enQueue(T element){list.addLast(element);//入队(后插)}template<typename T>T Queue<T>::deQueue(){return list.removeFirst();//出对(前删)}template<typename T>int Queue<T>::getSize(){return list.getSize();}#endif******************************************* TestQueue.cpp*******************************************#include<iostream>#include<stdexcept>#include"Queue.h"using namespace std;int main(){Queue<int> q;cout << "before enQueue size is: " << q.getSize() << endl;for(int i = 0; i < 10; i++){q.enQueue(i);cout << i << " enter queue" << endl;}cout << "after enQueue size si: " << q.getSize() << endl;while(q.getSize()!=0){cout << q.deQueue() << "out queue" << endl;}cout << "after deQueue size is: " << q.getSize() << endl;system("pause");return 0;}。
2009级数据结构实验报告实验名称:实验二栈和队列学生姓名:班级:班内序号:学号:日期:2010年12月18日实验要求题目四用栈做计算器。
设计一个算术四则运算表达式求值的简单计算器。
表达式求值是程序设计语言编译中最近本的问题,它要求把一个表达式翻译成能够直接求值的序列。
基本要求:输入中缀表达式能够转化成后缀表达式,比如输入中缀表达式“(A+B)*C”,输出“AB+C*”2、操作数使用单字母变量A、B、C等表示,操作符仅为+、-、*、/、(和);3、能够对变量A、B、C等赋值,得出正确的计算结果2. 程序分析首先,程序要求用户输入一个符号表达式,只能包含字母、+、-、*、/ 以及)和(,之后程序会用一个TurnInfixToPostfix()函数将表达式转化成后缀表达式存入一个栈中,转化过程借用逆波兰算法,建立一个符号栈,遍历用户输入的表达式,如果是字母,则直接输出,如果是运算符,则压入符号栈中(包括括号),在压栈的时候又需要注意,先要检查压栈前栈顶元素的优先级,如果优先级高于要压入的符号则直接压入该符号,否则要弹栈直到栈顶元素的优先级小于该元素的优先级然后才将该符号压入栈中(在压栈的时候会涉及到栈中有括号的情况,具体细节下面会说到),将转化的后缀表达式存入栈postfix,在输出的时候只要弹栈就行。
然后,要求用户逐个输入表达式中的字母的值,这时候,需要遍历当时在转化后缀表达式的时候过度容器vec_intoposfix,如果是字母则要求用户输入数值,压入用于计算的后缀表达式容器,如果是操作符则直接压入。
最后,在利用栈来计算值的时候,利用一个递归函数,就是一次弹栈,如果是操作符则先保存起来,接着继续弹栈,如果接下来的两个元素都为数字,就将这两个数字做相应的运算,然后压栈,如此反复,最后压入栈的元素就是表达式的值。
至此,程序的功能全部实现。
2.1 存储结构[内容要求]1、存储结构:顺序表、单链表或其他存储结构,需要画示意图,可参考书上P59页图2-92.2 关键算法分析关键算法一:将中缀表达式转化为后缀表达式VoidTurnInfixToPostfix(vector<char>&vec,stack<char>&sta,vector<char>&vecfix,stack< char>&stafix)1、 {2、int priority(-1);3、4、for (vector<char>::iterator itr=vec.begin();itr!=vec.end();itr++)5、{6、if(isLetter(*itr))7、{8、vecfix.push_back(*itr);9、}10、if (isOperator(*itr))11、{12、if(!sta.empty()) priority=getPriority(sta.top());13、else priority=-1;14、if (priority<getPriority(*itr)||priority==3&&sta.top()!=')')15、{16、sta.push(*itr);17、}18、else19、{20、if (sta.top()!=')')21、{22、while(priority>=getPriority(*itr)&&sta.top()!='(')23、{24、vecfix.push_back(sta.top());25、if (!sta.empty())26、{27、sta.pop();28、if(!sta.empty()) priority=getPriority(sta.top());29、else priority=-1;30、}31、else32、break;33、}34、sta.push(*itr);35、}36、else if(sta.top()==')')37、{38、while (sta.top()!='(')39、{40、vecfix.push_back(sta.top());41、if (!sta.empty()&&sta.top()!='(')42、{43、sta.pop();44、}45、else46、break;47、}48、}49、}50、51、52、}53、54、}55、for (vector<char>::iteratoritrfix=vecfix.end();itrfix!=vecfix.begin();--itrfix)56、stafix.push(*itrfix);57、stafix.push(*itrfix);58、}对表达式a + b * c – ( d – e) / f + g其符号栈的变化过程,红色表示未压栈的符号。
班别:学号:姓名:袁凯琦1.实验一WINDLX模拟器安装及使用1.1实验类别:综合实验1.2实验目的:建立实验环境,了解WINDLX模拟器的结构及使用1.3实验设备环境:WinDLX要求的硬件平台是IBM PC兼容机,WinDLX是一个Windows应用程序,运行于Windows 3.0以上的操作系统。
1.4实验原理:WinDLX软件包中带有说明文件,供安装程序时候使用。
1.5要点与难点:软件包中还有WinDLX教程和联机帮助,可以通过它们进一步了解模拟器的使用方法和DLX处理器的原理。
大家在进行模拟实验以前应该仔细阅读这些文档。
1.6实验内容和要求:阅读模拟器Help文档和相关资料,利用Fact.s及Input.s代码熟悉模拟器的配置、各项工具使用、寄存器设置及指令系统。
1.7实验步骤:(1)WINDLX模拟器安装WinDLX是一个基于Windows的模拟器, 能够演示DLX流水线是如何工作的。
WinDLX 包含windlx.exe和windlx.hlp文件。
同时,还需要一些扩展名为.s的汇编代码文件。
按以下步骤在Windows下安装WinDLX: WinDLX创建目录,例如E:\WINDLX解压WinDLX软件包或拷贝所有的WinDLX文件(至少包含 windlx.exe, windlx.hlp)到这个WinDLX 目录。
(2)熟悉模拟器的配置启动和配置WinDLX: 双击WinDLX图标,将出现一个带有六个图标的主窗口,双击这些图标会弹出子窗口.(3)利用Fact.s及Input.s代码熟悉各工具的使用1)导入求阶乘程序fact.sFile--> Load code or Data,然后出现以下界面,双击fact.s,input.s(由于fact.s调用了input.s),点击Load键即可导入按F7,单步运行程序,通过观察各个窗口的信息,理解fact.s的运行情况显示的是各个寄存器的名称及内容PC:程序计数器;IMAR:指令内存地址寄存器;IR:指令寄存器;A,B:ALU操作数寄存器;BTA:分支地址寄存器;ALU:ALU输出寄存器,ALUI(伪)寄存器;FPSR:用来保存有关浮点数操作结果的信息;DMAR:数据内存地址寄存器;SDR:存数据寄存器,SDRI (伪)寄存器;LDR:去素聚寄存器,LDRI(伪)寄存器;R0~R31:32位通用寄存器,R0永远为0;F0~F31:浮点寄存器。
第一篇:C语言程序设计上机实验报告黔南民族师范学院C语言程序设计上机实验报告系部:计算机科学系年级:2013 级班级:姓名:学号:实验时间:实验成绩:2013年月日实验三顺序结构程序的设计一实验名称:顺序结构程序的设计二.实验环境:windows XP系统,VC++6.0软件三.实验目的:四.实验内容:五.算法描述流程图六.源程序七.测试数据及运行结果八.实验心得实验成绩评分要求1、原创性发现抄袭或雷同成绩为0分2、正确性程序正确60分3、可读性格式清楚,有注释,变量命名规范20分4、健壮性对特殊测试数据有考虑有测试10分5、效率程序运行效率高10分第二篇:C程序设计上机实验报告10C程序设计实验报告实验名称:指针与数组学时安排:2课时实验类别:上机操作型实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的1. 理解指针、地址和数组间的关系;2. 掌握通过指针操作数组元素的方法;3. 掌握数组名作为参数的编程方式。
二、实验设备介绍软件需求: Visual C++ 6.0或CFree3.5以上版本硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。
三、实验内容1. 定义函数void sort(int a[],int n)amain函数,并在其中调用sort函数。
示例如下:After sorted the array is: -9 -6 1 2 4 52. 输入10个整数存储到数组a,再输入一个整数x,在数组a中查找x,若找到则输出相应的下标,否则显示“Not found!”。
要求定义和调用函数search(int list[], int n, int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1。
上机实验报告实验总结
当撰写上机实验报告的实验总结时,需要从多个角度全面回答。
首先,总结实验的目的和背景,说明实验的重要性和意义。
然后描
述实验的步骤和方法,包括所用的仪器和材料。
接着,详细讨论实
验的结果,包括数据和观察到的现象。
分析实验结果,讨论可能的
误差来源和对结果的影响。
最后,总结实验的主要发现,讨论实验
过程中遇到的问题以及可能的改进方法。
在总结中,可以指出实验
的局限性和未来的研究方向。
总之,实验总结需要全面、详细地描
述实验过程和结果,并对实验的意义和可能的改进进行讨论。
《机械制造工艺学》实验报告班级学号姓名实验一机床夹具拆装与结构分析(一)车床夹具零件名称支架夹具名称车支架内孔夹具工序简图夹具使用说明:工件以底面及两孔在定位板上完全定位,定位板再以底面及长侧面靠于角形架两垂直面,再用活动V型块夹于工件外圆限制最后一个自由度。
用两个螺旋压板夹紧工件底板处。
定位元件工件定位基准底面定位板长侧面 45外圆限制的自由度zXYXZY定位元件角形铁架,活动V型块夹紧装置夹紧机构类型螺旋压板夹紧机构夹紧装置组成零件:螺旋压板夹紧组件,活动V型块组件夹具与机床联接方式相关零件:夹具体联接方法:夹具体背面止口与过渡盘定位,螺旋联接,过渡盘再与车床主轴联接XZY夹具的结构特点(设计要点)1.定位装置的设计特点:应用一块附加的底板,工件以底面及两孔在这块底位板上完全定位,再底板再定位于夹具上;2.夹具体背面止口与过渡盘定位,螺旋联接,过渡盘再与车床主轴联接;3.夹具找正基面的设置:在夹具体中心有一个找正孔作为夹具找正基面;4.用一个平衡块达到平衡夹具的作用。
(二)钻床夹具零件名称摆块夹具名称钻三径向孔分度夹具工序简图夹具使用说明:工件以Φ22H7及端面右侧面在定位销,定位板,挡销上定位。
拧紧螺母通过球面垫圈将工件夹紧。
钻完一孔后,拔出对定销,松开后螺母,摆动分度盘,将对定销分别插入分度盘的另外两个分度孔中,并拧紧后螺母,钻其余两孔。
定位元件工件定位基准Φ22H7孔右端面侧面限制的自由度z YXYZX定位元件定位销,定位板,挡销夹紧装置夹紧机构类型螺旋夹紧夹紧装置组成零件:定位销,球垫圈,螺母导向装置组成零件:钻模板,快换钻套组件,螺钉,定位销分度装置固定部分组成零件:夹具体及衬套转动部分组成零件:分度盘分度对定机构组成零件:对定销锁紧机构组成零件:轴,定位销,轴套,后螺母夹具与机床联接方式相关零件:夹具体联接方法:用压板压紧在工作台上XZY夹具的结构特点(设计要点)1、用快换钻套实现本工序的钻、铰;2、利用轴向分度,菱形对定销分度,分度精确可靠。
轴系结构设计实验报告实验者:同组者:班级:日期:一、实验目的1、熟悉并掌握轴系结构设计中有关轴的结构设计,滚动轴承组合设计的基本方法;2、熟悉并掌握轴、轴上零件的结构形状及功用、工艺要求和装配关系;3、熟悉并掌握轴及轴上零件的定位与固定方法;4、了解轴承的类型、布置、安装及调整方法以及润滑和密封方式。
二、实验设备1、组合式轴系结构设计分析试验箱。
试验箱提供能进行减速器援助齿轮轴系,小圆锥齿轮轴系及蜗杆轴系结构设计实验的全套零件。
2、测量及绘图工具300mm钢板尺、游标卡尺、内外卡钳、铅笔、三角板等。
三、实验步骤1、明确实验内容,理解设计要求;已知条件(包括传动零件类型、载荷条件、速度条件):绘制传动零件支撑原理简图:2、复习有关轴的结构设计与轴承组合设计的内容与方法(参看教材有关章节);3、构思轴系结构方案(1)根据齿轮类型选择滚动轴承型号;轴承类别选择依据(2)确定支承轴向固定方式(两端固定或一端固定、一端游动);轴承轴向固定方式选择依据(3)根据齿轮圆周速度(高、中、低)确定轴承润滑方式(脂润滑、油润滑);润滑方式选择依据(4)选择端盖形式(凸缘式、嵌入式)并考虑透盖处密封方式(毡圈、皮碗、油沟);密封方式选择依据(5)考虑轴上零件的定位与固定,轴承间隙调整等问题;如何定位选择依据(6)绘制轴系结构方案示意图。
4、组装轴系部件根据轴系结构方案,从实验箱中选取合适零件并组装成轴系部件、检查所设计组装的轴系结构是否正确。
5、测量零件结构尺寸(支座不用测量),并作好记录。
6、将所有零件放入试验箱内的规定位置,交还所借工具。
7、根据结构草图及测量数据,在图纸上绘制轴系结构装配图,要求装配关系表达正确,注明必要尺寸(如支承跨距、齿轮直径与宽度、主要配合尺寸),填写标题栏和明细表。
8、写出实验报告。
四、实验结果分析1、轴上各键槽是否在同一条母线上。
2、轴上各零件(如齿轮、轴承)能否装到指定位置。
3、轴上零件的轴向、周向固定是否可靠。
数据结构实验报告(⼆)栈的应⽤实验说明数据结构实验⼆ 栈的实验——栈的简单应⽤⼀、实验⽬的通过本实验使学⽣了解栈的简单应⽤,熟悉栈的特性及栈在顺序存储上的操作特点,深刻理解栈的基本操作与⽤栈解决应⽤问题的关系;特别训练学⽣使⽤栈解决实际问题的能⼒,为今后⽤栈解决相关问题奠定基础。
⼆、实验内容1.编程实现对给定的⼀组括号序列判断其是否匹配正确。
要求:(1)它必须成对出现,如“(”“)”是⼀对,“[”与“]”是⼀对;(2)出现时有严格的左右关系;(3)可以以嵌套的⽅式同时出现多组多括号,但必须是包含式嵌套,不允许交叉式嵌套。
⽐如“( )”、“[([][])]”这样是正确的,“[(])”或“([()))”或 “(()]”是不正确的。
(4)将处理的括号扩展为针对“()”“[]”“{}”三类。
2.编程实现⼀个简单的⾏编辑功能:⽤户可以输⼊⼀⾏内容,并可进⾏简易编辑。
要求:(1)遇到输⼊部分内容有误时操作退格符“#”表⽰前⼀位⽆效;(2)“@”表⽰之前的内容均⽆效。
实验报告1.实现功能描述编程实现对给定的⼀组括号序列判断其是否匹配正确,将处理的括号扩展为针对“()”“[]”“{}”三类,遇到输⼊部分内容有误时操作退格符“#”表⽰前⼀位⽆效;“@”表⽰之前的内容均⽆效。
2.⽅案⽐较与选择(1)可以使⽤栈和队列来实现。
因为栈的功能⾜以完成题⽬要求,所以初步打算使⽤栈来实现。
(2)因为编写⼀个标准的栈⽐较繁琐,⽽且本题中也没有⽤到所有栈的标准操作,所以通过模拟栈来完成本题。
(3)可以使⽤数组或链表来模拟栈。
因为括号匹配只有3对,所需空间不是很⼤,⼜因为特殊操作#、@可以在数组中通过-1和赋0值实现,因此选择了数组法来模拟栈。
3.设计算法描述(1)定义3个变量,分别⽤于记录()、[]、{}的出现次数。
遇到左符号时变量++,遇到右符号时--,变量为0时表⽰空栈。
当读到#时,再往前读⼀个字符,如果是()、[]、{}中的⼀种,则对其进⾏反向运算,即遇到右符号时++,遇到左符号时--。
周航宇 应化082 48
实验2
1. 通过理论计算(半经验,从头算,密度泛函理论)比较顺、反丁 二烯的稳定性。
用 Gaussian 03 量子化学软件包,采用pm3,以及在 STO-3G 基组水平上
的hf、b3lyp对模型化合物的几何结构进行了优化,得如下数据。
表1 丁二烯的总能量(单位:hartree)
反式丁二烯 顺式丁二烯 半经验法 HF=0.0493592 HF=0.0505155
密度泛函 HF=-154.0761148 HF=-154.0728018
从头算法 HF=-153.0203656 HF=-153.0174441
从表1可知反式丁二烯的能量要比顺十的低,因此反式丁二烯较之顺式丁二
烯更为稳定。
2. 通过理论计算(半经验,从头算,密度泛函理论)证明丁二烯可
以有 1,4 加成反应。
表2 顺式丁二烯的键长参数(单位:埃)
C1-C2 C3-C4 半经验法 1.33172 1.45551
密度泛函 1.34441 1.49563
从头算法 1.31369 1.49471
表3 反式丁二烯键长参数(单位:埃)
C1-C2 C3-C4 半经验法 1.33108 1.45649
密度泛函 1.34440 1.48746
从头算法 1.31349 1.48900
从以上表2及表3(密度泛函法)可以知道C1-C2 键长比标准的 C-C 双键键
长(1.337 埃)长,C2-C3 键长比标准的 C-C 单键键长(1.54)短,说明出现了共轭效应,因此丁二烯会发生 1,4 加成反应。
周航宇 应化082 48
3. 通过理论计算(半经验,从头算,密度泛函理论)证明环丁二烯 不具有共轭性。
表 4 环丁二烯的键长参数(单位:埃)
C1-C2 C3-C4 半经验法 1.34852 1.54442
密度泛函 1.34315 1.59602
从头算法 1.31299 1.56924
从表 3 (密度泛函法)可知,C1-C2 键长接近于标准的 C-C 双键键长(1.337 埃),C2-C3 键长接近于标准 的 C-C 单键键长(1.54 埃),说明环丁二烯没有共轭效应。
实验3
1. 通过理论计算说明酚酞的变色机理。
图1 苯酚的转变过程
经PM3方法将分子结构优化得如下结构如图2,3所示
图2
图3
由图可知苯酚转变以后在一个六元环平面形成了一共轭体系,因此,由无色变成红色。
2.通过理论计算说明下列化和物的吸收波长变化规律。
通过b3lyp 在sto-3g 的基组的优化下,可得表5中数据
表5
由表5
可知,随着环的增加,Eg(E(LUMO)-E(HOMO))逐渐变小,使得其吸
收的光的光子的能量逐渐减小,吸收光波长逐渐变大,而其显示出的颜色为吸收光的互补色,因此,波长由255逐渐增至580,而颜色则逐渐由无色至蓝色。
分子式 Eg
0.282
0.200
0.151
0.119
0.10056。