西北工业大学 程序设计大作业

西北工业大学 程序设计大作业
西北工业大学 程序设计大作业

学院××××学院

目录

1 摘要 (3)

1.1设计题目 (3)

1.2设计内容 (3)

1.3开发工具 (3)

1.4应用平台 (3)

2 详细设计 (3)

2.1程序结构 (3)

2.2主要功能 (4)

2.3函数实现 (5)

2.4开发日志 (7)

3 程序调试及运行 (7)

3.1程序运行结果 (7)

3.2程序使用说明 (12)

3.3程序开发总结 (12)

4 附件(源程序) (12)

1 摘要

1.1 设计题目

算法型大作业题目:编写七种排序算法的演示程序。

1.2 设计内容

编写快速排序、插入排序、选择排序、冒泡排序、堆排序、归并排序、基数排序函数,通过主函数调用以实现七种排序算法的演示。

1.3 开发工具

Visual C++ 6.0

1.4 应用平台

Windows 2000/XP/Vista 32位

2 详细设计

2.1 程序结构

程序的整体结构与流程见下图所示。

程序运行时在主菜单中输入序号选择排序方法或选择结束程序,当进行某种排序方法后,在主函数中输入待排数据个数和待排数据,通过调用对应的排序函数实现排序并输出。该排序结束后再次进入主函数,通过循环重复上述操作。其中,主函数中将数组地址和待排序数据个数传递给排序函数,在排序函数中实现排序功能。

2.2 主要功能

函数的功能为对快速排序、插入排序、选择排序、冒泡排序、堆排序、归并排序、基数排序算法的演示。

主函数:程序运行时,可使运行者根据提醒输入相关操作,从而进入不同的排序方法或者退出。

快速排序函数:根据快速排序的算法,最后输出

插入排序函数:根据插入排序的算法,最后输出

选择排序函数:根据选择排序的算法,最后输出

冒泡排序函数:根据冒泡排序的算法,最后输出

堆排序函数:根据堆排序的算法,最后输出

归并排序函数:根据归并排序的算法,最后输出

基数排序函数:根据基数排序的算法,最后输出

2.3 函数实现

主函数:

在主函数中对菜单输出,通过switch语句中的case分支选择所需要的排序方法;通过while循环使演示程序在运行时能够持续进行

快速排序:

快速排序(kuaisu)又被称做分区交换排序,这是一种平均性能非常好的排序方法。其算法基本思想是:任取排序表中的某个数据元素(例如取第一个数据元素)作为基准,按照该数据元素的关键字大小,将整个排序表划分为左右两个子表:左侧子表中所有数据元素的关键字都小于基准数据元素的关键字。右侧子表中所有数据元素的关键字都大于或等于基准数据元素的关键字,基准数据元素则排在这两个子表中间(这也是该数据元素最终应安放的位置),然后分别对这两个子表重复施行上述方法的快速排序,直到所有的子表长度为1,则排序结束。

插入排序:

插入排序(charu)的基本思想:开始时把第一个数据元素作为初始的有序序列,然后从第二个数据元素开始依次把数据元素按关键字大小插入到已排序的部分排序表的适当位置。当插入第i(1

以下是在顺序表上实现的直接插入排序

在顺序表上进行直接插入排序时,当插入第i(1

选择排序

选择排序(xuanze)的算法基本思想是:

a)开始时设i的初始值为0。

b)如果i

c)若A[k]不是这组数据元素中的第一个数据元素(i≠k),则将A[k]与A[i]这两数据元素的位置对调;

d)令i=i+1转步骤b)。

冒泡排序:

冒泡排序(maopao) 的基本思想是:设排序表中有n个数据元素。首先对排序表中第一,二个数据元素的关键字A[0]和A[1]进行比较。如果前者大于后者,则进行交换;然后对第二,三个数据做同样的处理;重复此过程直到处理完最后两个相邻的数据元素。我们称之为一趟冒泡,它将关键字最大的元素移到排序表的最后一个位置,其他数据元素一般也都向排序的最终位置移动。然后进行第二趟排序,对排序表中前n-1个元素进行与上述同样的操作,其结果使整个排序表中关键字次大的数据元素被移到A[n-2]的位置。如此最多做n-1趟冒泡就能把所有数据元素排好序。

堆排序:

堆排序(duipai)s

a.对排序表中的数据元素,利用堆的调整算法形成初始堆。

b.输出堆顶元素。

c.对剩余元素重新调整形成堆。

d.重复执行第b、c步,直到所有数据元素被输出。

如果建立的堆满足最大堆的条件,则堆的第一个数据元素A[0]具有最大的关键字,将A[0]与A[n-1]对调,把具有最大关键字的数据元素交换到最后,再对前面的n-1个数据元素使用堆的调整算法,重新建立最大堆,结果把具有次最大关键字的数据元素又上浮到堆顶,即A [0]的位置,再对调A[0]和A[n-2],…,如此反复执行n-1次,最后得到全部排序好的数据元素序列。

归并排序:

其基本思想是:设有两个有序表A和B,其数据元素个数(表长)分别为n和m,变量i和j分别是表A和表B的当前检测指针;设表C是归并后的新有序表,变量k是它的当前存放指针。开始时i、j、k都分别指向A、B、C三个表的起始位置;然后根据A[i]与B[j]的关键字的大小,把关键字小的数据元素放到新表C[k]中;且相应的检测指针(i或j)和存放指针k增加1.如此循环,当i与j 中有一个已经超出表长时,将另一个表中的剩余部分照抄到新表C[k]~C[m+n]中。

下面的归并算法中,两个待归并的有序表首尾相接存放在数组sourcetable.arr[]中,其中第一个表的下标范围从left到mid,另一个表的下标范围从mid+1到right。前一个表中有mid-left+1个数据元素,后一个表中有right –mid个数据元素。归并后得到的新有序表有right –mid个数据元素。归并后得到的新有序表存放在另一个辅助数组mergedtable.arr[]中,其下标范围从left到right。

一趟归并算法:设数组sourcetable.arr[0]到sourcetable.arr[n-1]中的n个数据元素已经分为一些长度为len的归并项,将这些归并项两两归并,归并成一些长度为2len的归并项,结果放到mergedtable.arr[]中。如果n不是2len的整数倍,则一趟归并到最后,可能遇到两种情况:

剩下一个长度为len的归并项和一个长度不足len的归并项,可用一次merge算法,将它们归并成一个长度小于2len的归并项。

只剩下一个归并项,其长度小于或等于len,可将它直接复制到数组mergedtable.arr[]中。

在一趟归并算法的基础上,实现两路归并排序算法。在两路归并排序算法中,初始排序表存放在数组table.arr[]中,第一趟归并将table.arr[]中的归并项两两归并,结果存放在辅助数组temptable.arr[]中。第二趟将temptable.arr[]中的归并项两两归并,结果放回原数组table.arr[]中,如此反复进行。为了将最后归并结果仍放在数组table.arr[]中,归并趟数应为偶数。如果做奇数趟就能完成时,最后还需要执行一次一趟归并过程,由于这时的归并项长度len>=n,因此在则趟归并中while循环不执行,只做把temptable.arr[]中的数据元素复制到table.arr[]的工作。

基数排序:

“基数排序法”(radix sort)则是属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r 为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。具体可以参看后面的代码进行理解。

其它:

使用了stdlib头文件里包含的系统函数,包括清屏函数和运行时的暂停,增强了程序运行时的效果。

2.4 开发日志

在老师布置了大作业的题目后,我就把题目下载下来并进行分析已选择合适的题目。经过我的慎重考虑,选择了算法型大作业题目中的编写七种排序算法的演示程序,觉得自己有能力把这道题目很好完成。

在认真分析连题目后,基本确定了整体的思路,但是其中有堆排序,归并排序,基数排序我没有在教材中接触过,于是借助了图书馆和网络上的资源,重点对这三的函数进行编写。在编写大作业过程中大的困难我没有遇到,只是有些小的疏忽常常导致程序无法运行,如形参和实参的不一致等。我也在其中意识到对知识掌握的不够熟练,在解决了这些问题后,我觉得自己对程序的编写更加熟练了,对问题的分析也更加严谨了。在C程序设计的实验和理论考试之前代码已基本完成。

在考试结束后,我又对程序稍微进行了修改,使之运行时效果更好。接着开始写实验报告,整理自己的大作业。我对我的作业是很满意的。

3 程序调试及运行

3.1 程序运行结果

1.进入程序运行后所显示的菜单:

2.快速排序:

3.插入排序:

4.选择排序:

5.冒泡排序:

6.堆排序:

7.归并排序:

8.基数排序:

9.结束:

3.2 程序使用说明

1.打开源程序,调试完毕后开始运行,开始进行七种算法的演示;

2.按照说明进行输入,选择数字1~7即可进入相应的排序算法演示程序,选择8结束程序;

3.选择排序的方法后,按要求输入待排数据的个数,然后输入待排序数据即可(数据排序结束后,会自动清屏,进入菜单进行接下来的选择);

4.应当注意,本演示程序对数据进行的是升序;

3.3 程序开发总结

在选择这个题目时,我觉得难度系数10对我有挑战性,并且我对排序有相对比较熟悉,所以就选了这个题目。

但是在编写过程中却遇到很多问题。我和我的同学进行了讨论,查阅了图书馆和网络上的资料,结合力我个人对本题目的理解对各种问题进行了处理,学到了很多教材上没有的知识。

从这次实践中,我意识到自己还有很多不足之处。能力也得到了提高。我在进行编程时还需要翻书查找,对于这一点,只能说对知识的学习还不够扎实,所以有空时还应该继续熟悉这门课程。另外,就是对于错误的处理,不能得心应手,不能正确处理一些简单的错误。对于逻辑上的错误,不能够立即找到出错点,往往需要向同学请教才能找出错误,并且改正。我觉得这是自己独自思考能力不高的问题,遇事需要自己仔细想想,若还不能改正,再请教别人也不迟。

从总体上说,最终结果我很满意,我觉得我所设计的程序操作方便,功能良好。我在上面花费了很多时间和精力,对作业不断进行修改和完善,我很有成就感。我的能力在这之中得到了提高。

4 附件(源程序)

# include

# include

////////////////////**********快速排序**********//////////////////////

void kuaisu(int A[],int n)

{

int i,j,k,t,p;

for(i=0;i

{

k=i;

for(j=i+1;j

if(A[j]

t=A[k];

A[k]=A[i];

A[i]=t;

printf("第%d趟:",i+1);

for(p=0;p

{

printf("%d ",A[p]);

}

printf("\n");

}

printf("\n排序结果:");

for(i=0;i

printf("%d ",A[i]);

printf("\n");

printf("\n");

system("pause");

system("CLS");

}

////////////////////**********插入排序**********////////////////////// void charu(int A[],int n)

{

int i,k,t,j,h=1;

for(i=1;i

{

t=A[i];

k=i-1;

while(t

{

A[k+1]=A[k];

k--;

if(k==-1)break;

printf("第%d趟:",h++);

for(j=0;j

printf("%d ",A[j]);

printf("\n");

}

A[k+1]=t;

}

printf("\n排序结果:");

for(i=0;i

printf("%d ",A[i]);

printf("\n");

printf("\n");

system("pause");

system("CLS");

}

////////////////////**********选择排序**********////////////////////// void xuanze(int A[],int n)

{

int i,j,k,t,l,h=1;

for(i=0;i

{

k=i;

for(j=i+1;j

if(A[j]

if(i!=k)

{

t=A[i];

A[i]=A[k];

A[k]=t;

printf("第%d趟:",h++);

for(l=0;l

printf("%d ",A[l]);

printf("\n");

};

}

printf("\n排序结果:");

for(i=0;i

printf("%d ",A[i]);

printf("\n");

printf("\n");

system("pause");

system("CLS");

}

////////////////////**********冒泡排序**********////////////////////// void maopao(int A[],int n)

{

int i,j,t,h=1,p;

for(j=0;j

for(i=0;i

{

if(A[i]>A[i+1])

t=A[i],A[i]=A[i+1],A[i+1]=t,p++;

printf("第%d趟:",h++);

for(p=0;p

printf("%d ",A[p]);

printf("\n");

}

printf("\n排序结果:");

for(i=0;i

printf("%d ",A[i]);

printf("\n");

printf("\n");

system("pause");

system("CLS");

}

/////////////////////**********堆排序**********///////////////////////

void shift(int A[] , int i , int m)

{

int k,t;

t=A[i];k=2*i+1;

while (k

{

if((k

if(t

else break;

}

A[i]=t;

}

void duipai(int A[] , int n) //a 为排序数组,n为数组大小{

int i,k,h=1,j;

for (i=n/2-1;i>=0;i--)shift(A,i,n);

for (i=n-1;i>=1;i--)

{

k=A[0];A[0]=A[i];A[i]=k;

shift(A,0,i);

printf("第%d趟:",h++);

for(j=0;j

printf("%d ",A[j]);

printf("\n");

}

printf("\n排序结果:");

for(i=0;i

printf("%d ",A[i]);

printf("\n");

printf("\n");

system("pause");

system("CLS");

}

////////////////////**********归并排序**********//////////////////////

void merge(int number[],int first,int last,int mid)

{

int number_temp[10]={0};

int i=first,j=mid+1,k;

for(k=0;k<=last-first;k++)

{

if (i==mid+1)

{

number_temp[k]=number[j++];

continue;

}

if (j==last+1)

{

number_temp[k]=number[i++];

continue;

}

if (number[i]

else number_temp[k]=number[j++];

}

for (i=first,j=0;i<=last;i++,j++)

number[i] = number_temp[j];

}

void merge_sort(int number[],int first,int last)

{

int mid=0;

if(first

{

mid=(first+last)/2;

merge_sort(number,first,mid);

merge_sort(number,mid+1,last);

merge(number,first,last,mid);

}

}

void guibing(int a[],int n)

{

int i;

merge_sort(a,0,n-1);

printf("\n排序结果:");

for(i=0;i

printf("%d ",a[i]);

printf("\n");

printf("\n");

system("pause");

system("CLS");

}

////////////////////**********基数排序**********////////////////////// void jishu(int data[],int n)

{

int temp[10][10]={0};

int order[10]={0};

int i,j,k,q,lsd;

k=0;

q=1;

while(q<=n)

{

for(i=0;i

{

lsd=((data[i]/q)%n);

temp[lsd][order[lsd]]=data[i];

order[lsd]++;

}

for(i=0;i

{

if(order[i] != 0)

for(j=0;j

{

data[k]=temp[i][j];

k++;

}

order[i] = 0;

}

q *= n;

k = 0;

}

printf("\n排序结果:");

for(i=0;i

printf("%d ",data[i]);

printf("\n");

printf("\n");

system("pause");

system("CLS");

}

////////////////////***********主函数***********//////////////////////

int main()

{

int A[100],p,n,i;

while(1)

{

printf("\n\t**************** 七种排序算法的演示程序***************\n");

printf("\t* *\n");

printf("\t* 1-----快速排序*\n");

printf("\t* 2-----插入排序*\n");

printf("\t* 3-----选择排序*\n");

printf("\t* 4-----冒泡排序*\n");

printf("\t* 5----- 堆排序*\n");

printf("\t* 6-----归并排序*\n");

printf("\t* 7-----基数排序*\n");

printf("\t* 8-----退出程序*\n");

printf("\t* *\n");

printf("\t*********************************************************\n\n");

printf("请输入序号进行选择:\n");

scanf("%d",&p);

if(p==8)break;

printf("请输入待排序数的个数:\n");

scanf("%d",&n);

printf("请输入待排序数据:\n");

for(i=0;i

scanf("%d",&A[i]);

switch(p)

{

case 1:kuaisu(A,n);break;

case 2:charu(A,n);break;

case 3:xuanze(A,n);break;

case 4:maopao(A,n);break;

case 5:duipai(A,n);break;

case 6:guibing(A,n);break;

case 7:jishu(A,n);break;

}

}

printf("\n\n\t\t\t\t谢谢您的使用\n\n");

return 0;

}

C语言大作业报告

目录 一、设计题目 二、目标和需求分析 三、开发工具 四、应用平台 五、程序模块 1、游戏盒子 2、2048 3、扫雷 4、贪吃蛇 六、开发日志 七、程序调试及运行 八、程序开发总结 总结:虽然做出来的东西真的没什么技术水平,但是我们尽量把这个东西的每个方方面面做完整。

目标和需求分析一个小的游戏盒子,可以用来启动其它游戏,当然,其它游戏也是我们大作业的编写内容,平时可以玩玩用来打发时间 用到的工具VS2005 Easyx图形库 Pthread线程库 Hge 分工 秦贤康 组织大家,编写主程序,及构思计划,技术指导 王尧 所有的文件处理,数据算法方面优化 王懿晨 合作2048模块 杨梓晗 图片资源加工,音乐裁剪,按钮制作 程维驰 合作扫雷模块 应用平台:WINDOWS X64

程序功能模块: 一、 安装包:(写入开始菜单快捷方式,桌面快捷方式,开机启动等)//pascal 脚本编写 #define MyAppName "C 大作业" #define MyAppVersion "2.0" #define MyAppPublisher "五人小组" #define MyAppExeName "1.exe" [Setup] AppId={{49DB1DB4-FAE9-4ACB-A4B9-E5C420C5F10B} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} DefaultDirName={pf}\{#MyAppName} DisableDirPage=yes DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes (剩余代码未全部给出) 安装包 内嵌:C 语言报告 游戏盒子 开机启动,桌面快捷方式等 进入动画,左侧动画 启动模块 通知,和显示游戏信息 2048 扫雷 贪吃蛇 主界面信息显示 通知栏信息显示 意见箱

凸轮机构大作业___西工大机械原理要点

大作业(二) 凸轮机构设计 (题号:4-A) (一)题目及原始数据···············(二)推杆运动规律及凸轮廓线方程·········(三)程序框图········· (四)计算程序·················

(五)程序计算结果及分析·············(六)凸轮机构图·················(七)心得体会··················(八)参考书··················· 一题目及原始数据 试用计算机辅助设计完成偏置直动滚子推杆盘形凸轮机构的设计 (1)推程运动规律为五次多项式运动规律,回程运动规律为余弦加速度运动规律; (2)打印出原始数据; (3)打印出理论轮廓和实际轮廓的坐标值; (4)打印出推程和回程的最大压力角,以及出现最大压力角时凸轮的相应转角;(5)打印出凸轮实际轮廓曲线的最小曲率半径,以及相应的凸轮转角; (6)打印最后所确定的凸轮的基圆半径。 表一偏置直动滚子推杆盘形凸轮机构的已知参数 题号初选的 基圆半 径 R0/mm 偏距 E/mm 滚子 半径 Rr/m m 推杆行 程 h/mm 许用压力角许用最小曲率半径 [ρamin] [α1] [α2] 4-A 15 5 10 28 30°70?0.3Rr 计算点数:N=90 q1=60; 近休止角δ1 q2=180; 推程运动角δ2 q3=90; 远休止角δ3 q4=90; 回程运动角δ4 二推杆运动规律及凸轮廓线方程推杆运动规律: (1)近休阶段:0o≤δ<60 o s=0;

ds/dδ=0; 2/δd 2 d=0; s (2)推程阶段:60o≤δ<180 o 五次多项式运动规律: Q1=Q-60; s=10*h*Q1*Q1*Q1/(q2*q2*q2)-15*h*Q1*Q1*Q1*Q1/(q2*q2*q2*q2)+6*h*Q1*Q1*Q 1*Q1*Q1/(q2*q2*q2*q2*q2); ds/dδ =30*h*Q1*Q1*QQ/(q2*q2*q2)-60*h*Q1*Q1*Q1*QQ/(q2*q2*q2*q2)+30*h*Q1*Q1*Q 1*Q1*QQ/(q2*q2*q2*q2*q2); 2/δd 2 d=60*h*Q1*QQ*QQ/(q2*q2*q2)-180*h*Q1*Q1*QQ*QQ/((q2*q2*q2*q2))+1 s 20*h*Q1*Q1*Q1*QQ*QQ/((q2*q2*q2*q2*q2)); (3)远休阶段:180o≤δ<270 o s=h=24; ds/dδ=0; 2/δd 2 d=0; s (4)回程阶段:270≤δ<360 Q2=Q-270; s=h*(1+cos(2*Q2/QQ))/2; ds/dδ=-h*sin(2*Q2/QQ); 2/δd 2 d=-2*h*cos(2*Q2/QQ); s 凸轮廓线方程: (1)理论廓线方程: s0=sqrt(r02-e2) x=(s0+s)sinδ+ecosδ y=(s0+s)cosδ-esinδ (2)实际廓线方程 先求x,y的一、二阶导数 dx=(ds/dδ-e)*sin(δ)+(s0+s)*cos(δ);

西北工业大学C语言大作业实验报告

学院*****************

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计内容 (3) 1.3开发工具 (3) 1.4应用平台 (4) 2 详细设计 (4) 2.1程序结构 (4) 2.2主要功能 (10) 2.3函数实现 (13) 2.4开发日志 (18) 3 程序调试及运行 (20) 3.1程序运行结果 (20) 3.2程序使用说明 (22) 3.3程序开发总结 (22) 4 附件(源程序) (22)

1 摘要 1.1 设计题目 折半法查找演示程序 1.2 设计内容 本程序是一个演示折半查找算法的演示程序。由用户输入查找的数据表列和查找的数据,系统在将数表排序后可以在屏幕上演示在排序后的表列中按折半查找法查找该数据的具体过程(通过每次查找的中间数据、下次查找表列等,具体效果见下图),支持多次演示、错误提醒,程序暂停演示功能。 1.3 开发工具 Visual C++ 6.0和Win32。

1.4 应用平台 Windows 2000/XP/Vista 32位 2 详细设计 2.1 程序结构 程序功能模块: 本程序主要由五大模块组成:程序说明模块、输入模块、排序模块、折半法查找及显示模块、进程选择模块。各模块的主要功能如下: 程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。 此部分模块主函数源代码如下: int a[N]; /*存储要查找的数表,用户输入*/ int i,n,num,count; /*count为折半次数计数器,n为数表数据个数,num存储所查数据*/ int top,bottom,mid; char c; /*存储选择函数中的输入的字符y或n*/ int flag=1; /*折半法循环标志变量*/ int loc=-1; /*存储所查找数据位置*/ double k=0; p_s(76);puts("\n"); /*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文) printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n"); puts("\n"); /*程序欢迎语*/ p_s(13); printf("制作者:***************** "); /*作者信息*/ p_s(4); printf("Email:************************ "); /*电子邮件*/

西北工业大学机械原理课后答案第4章

第四章 平面机构的力分析 题4-7 机械效益Δ是衡量机构力放大程度的一个重要指标,其定义为在不考虑摩擦的条件下机构的输出力(力矩)与输入力(力矩)之比值,即Δ=d r d r F F M M //=。试求图示各机构在图示位置时的机械效益。图a 所示为一铆钉机,图b 为一小型压力机,图c 为一剪刀。计算所需各尺寸从图中量取。 (a ) (b) (c) 解:(a)作铆钉机的机构运动简图及受力 见下图(a ) 由构件3的力平衡条件有:02343=++R R r F F F 由构件1的力平衡条件有:04121 =++d R R 按上面两式作力的多边形见图(b )得 θcot ==?d r F F (b )作压力机的机构运动简图及受力图见(c ) 由滑块5的力平衡条件有:04565=++R R F F G 由构件2的力平衡条件有:0123242 =++R R R 其中 5442R R = 按上面两式作力的多边形见图(d ),得t F G = ? (c) 对A 点取矩时有 b F a F d r ?=? a b =? 其中a 、b 为F r 、F d 两力距离A 点的力臂。t F G = ?

(d) (a) (b)d r R41 F R43 F d G 题4-8 在图示的曲柄滑块机构中,设已知l AB=0.1m,l BC=0.33m,n1=1500r/min(为常数),活塞及其附件的重量G3=21N,连杆质量G2=25N,J S2=0.0425kg·m2,连杆质心S2至曲柄销B的距离l BS2=l BC/3。试确定在图示位置时活塞的惯性力以及连杆的总惯性力。 解:1) 选定比例尺, 绘制机构运动简图。(图(a) ) 2(b) 4-1 (c) 3) 确定惯性力 活塞3 连杆2 (顺时针) (图(a) )

哈工大机械原理大作业凸轮机构第四题

Harbin Institute of Technology 机械原理大作业二 课程名称:机械原理 设计题目:凸轮机构设计 姓名:李清蔚 学号:1140810304 班级:1408103 指导教师:林琳

一.设计题目 设计直动从动件盘形凸轮机构,其原始参数见表 1 表一:凸轮机构原始参数 升程(mm ) 升程 运动 角(o) 升程 运动 规律 升程 许用 压力 角(o) 回程 运动 角(o) 回程 运动 规律 回程 许用 压力 角(o) 远休 止角 (o) 近休 止角 (o) 40 90 等加 等减 速30 50 4-5-6- 7多 项式 60 100 120

二.凸轮推杆运动规律 (1)推程运动规律(等加速等减速运动) 推程F0=90° ①位移方程如下: ②速度方程如下: ③加速度方程如下: (2)回程运动规律(4-5-6-7多项式) 回程,F0=90°,F s=100°,F0’=50°其中回程过程的位移方程,速度方程,加速度方程如下:

三.运动线图及凸轮线图 本题目采用Matlab编程,写出凸轮每一段的运动方程,运用Matlab模拟将凸轮的运动曲线以及凸轮形状表现出来。代码见报告的结尾。 1、程序流程框图 开始 输入凸轮推程回 程的运动方程 输入凸轮基圆偏 距等基本参数 输出ds,dv,da图像 输出压力角、曲率半径图像 输出凸轮的构件形状 结束

2、运动规律ds图像如下: 速度规律dv图像如下: 加速度da规律如下图:

3.凸轮的基圆半径和偏距 以ds/dfψ-s图为基础,可分别作出三条限制线(推程许用压力角的切界限D t d t,回程许用压力角的限制线D t'd t',起始点压力角许用线B0d''),以这三条线可确定最小基圆半径及所对应的偏距e,在其下方选择一合适点,即可满足压力角的限制条件。 得图如下:得最小基圆对应的坐标位置O点坐标大约为(13,-50)经计算取偏距e=13mm,r0=51.67mm.

西北工业大学机械原理课后答案第3章

第3章课后习题参考答案 3—1 何谓速度瞬心?相对瞬心与绝对瞬心有何异同点? 答:参考教材30~31页。 3—2 何谓三心定理?何种情况下的瞬心需用三心定理来确定? 答:参考教材31页。 3-3试求图示各机构在图示位置时全部瞬心的位置(用符号P,,直接标注在图上) (a) (b) 答:

答: (10分) (d) (10分) 3-4标出图示的齿轮一连杆组合机构中所有瞬心,并用瞬心法求齿轮1与齿轮3的传动比ω1/ω3。

答:1)瞬新的数目: K=N(N-1)/2=6(6-1)/2=15 2)为求ω1/ω3需求3个瞬心P 16、P 36、P 13的位置 3) ω1/ω3= P 36P 13/P 16P 13=DK/AK 由构件1、3在K 点的速度方向相同,可知ω3与ω1同向。 3-6在图示的四杆机构中,L AB =60mm ,L CD =90mm,L AD =L BC =120mm, ω2=10rad/s,试用瞬心法求: 1)当φ=165°时,点的速度vc ; 2)当φ=165°时,构件3的BC 线上速度最小的一点E 的位置及速度的大小; 3)当V C =0时,φ角之值(有两个解)。 解:1)以选定的比例尺μ机械运动简图(图b ) 2)求vc 定出瞬心p12的位置(图b ) 因p 13为构件3的绝对瞬心,则有 ω3=v B /lBp 13=ω2l AB /μl .Bp 13=10×0.06/0.003× v c =μc p 13ω3=0.003×52×2.56=0.4(m/s) 3)定出构件3的BC 线上速度最小的点线上速度最小的点必与p13点的距离 最近,故丛p13引BC 线的垂线交于点 v E =μl.p 13E ω3=0.003×46.5×

C语言程序大作业.doc

大连理工大学C程序设计(大作业)总结报告学生成绩录入处理系统 学生姓名:罗 专业班级: 学号: 联系电话: Email : 完成日期:2015年 5 月29日

一、设计任务 我的程序设计是一个学生成绩录入及处理的程序,该程序包括多种功能,能够满足大多数的学生成绩管理处理。主要能够实现的目的主要有: 第一.学生姓名学号既包括三门成绩等信息的录入,并保存到文件d://score.txt。 第二.对每个学生的成绩进行求平均分及按平均分排序的数字处理。 第三.对输入错误的学生信息加以修改重新排序保存。 第四.增加学生信息,重新排序,加以保存。 第五.按每个学生的平均分进行表格化和图形化处理。 第六.实现某位同学的信息查找,包括姓名,学号,每科成绩及平均分。 以上功能全都可以实现,但是注意录入信息的要求,下面会有注释。 二、程序设计与实现 1.结构框图 下图描述预期实现题目的设计方案或功能设计的组成结构。绘制成框图,如图所示是我设计的成绩信息管理程序设计的结构图示:

2.功能模块设计及其流程图 (1) 数据描述与存储 该学生信息统计系统设计一个全局结构体变量,将学生的姓名,学号,各科成绩及平均分保存在结构体,然后供设计各种程序调用,以完成修改,增加,排序和数据显示的功能。学生成绩数据以二进制存储在d://score.txt文件,可以利用程序随时进行增加和修改,同时它会自动排序。的描述题目所使用的核心数据,如;结构体类型定义及结构体成员含义说明。并说明所使用的数据存储方法,指定文件的路径和文件名,保存数据的格式和读数据的目的。 (2) 结构体定义及介绍 typedef struct rec /*定义一个结构体类型*/ { char name[20]; /*第一个元素为学生姓名,20个字节*/ short number; /*第一个元素为学生学号,2个字节(输入注意不要超出)*/ short score[M]; /*(M为全局3)依次定义三门科目分数:数,英,机*/ float average; /*定义浮点型平均数,保留2位小数,有函数计算赋值*/ }score; score stu[N]; /*(N为全局100)定义全局总数100个学生信息以录入*/ (3)对于该程序的一点说明 1.学号在0~32768之间,请录入前对学号做好数据处理。 2.该系统的成绩满分为一百分制,如有某科成绩不符合应提前处理。 3.录入退出后,同样的数据不需两次输入,可直接运行程序处理及查看。 4.保存退出后请勿删除文件,数据会丢失。 5.柱状图的分辨率在十位数。 (4) 主要函数功能基变量说明

西北工业大学机械原理课后答案第3章-1

第三章 平面机构的运动分析 题3-3 试求图示各机构在图示位置时全部瞬心的位置(用符号P ij 直接标注在图上) 解: 1 P 13(P 34)13 ∞ 题3-4 在图示在齿轮-连杆机构中,试用瞬心法求齿轮1与齿轮3 的传动比w1/w3. P 13 P 23 P 36 3 D 6 52 C 4 B P 16A 1 P 12 解:1)计算此机构所有瞬心的数目 152 ) 1(=-=N N K 2)为求传动比31ωω需求出如下三个瞬心16P 、36P 、13P 如图3-2所示。 3)传动比31ω计算公式为: 13 1613 3631P P P P =ωω 题3-6在图a 所示的四杆机构中,l AB =60mm ,l CD =90mm ,l AD =l BC =120mm ,ω2=10rad/s ,试用瞬心法求:

23 1) 当φ=165°时,点C 的速度Vc ; 2) 当φ=165°时,构件3的BC 线上速度最小的一点E 的位置及速度的大小; 3) 当Vc=0时,φ角之值(有两个解) 解:1) 以选定比例尺,绘制机构运动简图。(图3-3 ) 2)求V C ,定出瞬心P 13的位置。如图3-3(a ) s rad BP l l v l AB AB B 56.213 23=== μωω s m CP v l C 4.0313==ωμ 3)定出构件3的BC 线上速度最小的点E 的位置。 因为BC 线上速度最小的点必与P 13点的距离最近,所以过P 13点引BC 线延长线的垂线交于E 点。如图3-3(a ) s m EP v l E 375.0313==ωμ 4)当0=C v 时,P 13与C 点重合,即AB 与BC 共线有两个位置。作出0=C v 的两个位置。 量得 ?=4.261φ ?=6.2262φ 题3-12 在图示的各机构中,设已知各构件的尺寸、原动件1以等角速度ω1顺时针方向转动。试用图解法求机构在图示位置时构件3上C 点的速度及加速度。

C语言大作业报告范文

学院XX学院

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (3) 2.3函数实现 (3) 2.4开发日志 (4) 3 程序调试及运行 (4) 3.1程序运行结果 (4) 3.2程序使用说明 (4) 3.3程序开发总结 (4) 4 附件(源程序) (4)

1 摘要 1.1 设计题目 (A)求最大数;(B)高次方数的尾数 1.2 设计容 (A)求555555的约数中最大的三位数; (B)求13的13次方的最后三位数1.3 开发工具 Visual C++ 6.0和Win32。 1.4 应用平台 Windows XP 32位 2 详细设计 2.1 程序结构 (A)求最大数

定义变量a、b、c,a从100至999递增,b为555555,用b除以a,判断是否可以整除,若可以,则把a的值赋给c,a自加1;若不可,a自加1。重复以上步骤,直到a>999,输出c。循环语句采用for 循环。 (B)高次方数的尾数

定义变量i、j,i从1至13递增,j初值为1。用j乘以13,用得到的乘积除以1000并取其余数,赋给j,i自加1。重复以上步骤,直到i>13,输出j。循环语句采用for循环。

2.2 主要功能 程序功能:(A)求555555的约数中最大的三位数; (B)求13的13次方的最后三位数。 原理和方法: (A)题目的原理和方法:因为要求的是三位数,就用555555从小到大依次除以100到999的所有数,并判断能否整除,最后一个可以整除555555的数即为所求。循环语句采用for循环。 (B)题目的原理和方法:乘积的最后三位数只与乘数和被乘数的后三位数有关,因此用1乘以13,再除以1000并取余数,用余数乘以13,再除以1000并取余数,依次进行下去,累乘13个13后除以1000取得的余数即为所求。循环语句采用for循环。 2.3 函数实现 (A)求最大数 int a,b=555555,c; /*定义变量,赋初值*/ for(a=100;a<=999;a++) /*FOR循环*/ { if(b%a==0) /*利用IF语句判断b是否可以被a整除*/ c=a; /*将555555的约数赋给c*/ } printf("%d\n",c); /*输出c*/ (B)高次方数的尾数 int i,j=1; /*定义变量,赋初值*/ for(i=1;i<=13;i++) /*FOR循环*/ { j=j*13%1000; /*将j乘以13的乘积的后三位数赋给j*/ } printf("%d\n",j); /*输出j*/ 2.4 开发日志 (A)选定这个题目后,我先分析此题用何种算法完成,确定了使用FOR循环并限定除数围,然后画出程序框图,再一步步编写源代码。调试过程很顺利,只有一个地方忘加了“;”。运行程序后,结果非常满意。 (B)这个题目不难,但是也不简便,我想到只取三位数的方法,并使用FOR循环,然后画出程序框图,再一步步编写源代码。调试过程发现对其中一个变量的初值是1还是13有待解决,分析程序后发现应该用1,然后进一步调试,运行,直至结果正确。

西北工业大学机械原理课后答案第4章

第四章 平面机构的力分析 题4-7 机械效益Δ是衡量机构力放大程度的一个重要指标,其定义为在不考虑摩擦的条件下机构的输出力(力矩)与输入力(力矩)之比值,即Δ=d r d r F F M M //=。试求图示各机构在图示位置时的机械效益。图a 所示为一铆钉机,图b 为一小型压力机,图c 为一剪刀。计算所需各尺寸从图中量取。 (a ) (b) (c) 解:(a)作铆钉机的机构运动简图及受力 见下图(a ) 由构件3的力平衡条件有:02343=++R R r F F F 由构件1的力平衡条件有:04121 =++d R R 按上面两式作力的多边形见图(b )得 θcot ==?d r F F (b )作压力机的机构运动简图及受力图见(c ) 由滑块5的力平衡条件有:04565=++R R F F G 由构件2的力平衡条件有:0123242 =++R R R 其中 5442R R = 按上面两式作力的多边形见图(d ),得t F G = ? (c) 对A 点取矩时有 b F a F d r ?=? a b =? 其中a 、b 为F r 、F d 两力距离A 点的力臂。t F G = ?

(d) (a)(b) d r R41 F R43 F d G 题4-8 在图示的曲柄滑块机构中,设已知l AB=0.1m,l BC=0.33m,n1=1500r/min(为常数),活塞及其附件的重量G3=21N,连杆质量G2=25N,J S2=0.0425kg·m2,连杆质心S2至曲柄销B的距离l BS2=l BC/3。试确定在图示位置时活塞的惯性力以及连杆的总惯性力。 解:1) 选定比例尺, mm m l 005 .0 = μ绘制机构运动简图。(图(a) ) 2)运动分析:以比例尺vμ作速度多边形,如图(b) 以比例尺 a μ作加速度多边形如图4-1 (c) 2 44 . 23 s m c p a a C ='' =μ2 2 2 2100 s m s p a a S = '' =μ 2 2 2 1 5150 s BC c n l a l a BC t B C= '' = = μ μ α 3) 确定惯性力 活塞3:) ( 3767 3 3 3 3 N a g G a m F C S I = - = - =方向与c p''相反。 连杆2:) ( 5357 2 2 2 2 32 N a g G a m F S S I = - = - =方向与 2 s p'相反。 ) (8. 218 2 2 2 m N J M S I ? = - =α(顺时针) 总惯性力:) ( 5357 2 2 N F F I I = = ') ( 04 .0 2 2 2 m F M l I I h = =(图(a) )

机械原理大作业3 凸轮结构设计

机械原理大作业(二) 作业名称:机械原理 设计题目:凸轮机构设计 院系:机电工程学院 班级: 设计者: 学号: 指导教师:丁刚陈明 设计时间: 哈尔滨工业大学机械设计

1.设计题目 如图所示直动从动件盘形凸轮机构,根据其原始参数设计该凸轮。 表一:凸轮机构原始参数 序号升程 (mm) 升程运动 角(o) 升程运动 规律 升程许用 压力角 (o) 回程运动 角(o) 回程运动 规律 回程许用 压力角 (o) 远休止角 (o) 近休止角 (o) 12 80 150 正弦加速 度30 100 正弦加速 度 60 60 50 2.凸轮推杆运动规律 (1)推杆升程运动方程 S=h[φ/Φ0-sin(2πφ/Φ0)]

V=hω1/Φ0[1-cos(2πφ/Φ0)] a=2πhω12sin(2πφ/Φ0)/Φ02 式中: h=150,Φ0=5π/6,0<=φ<=Φ0,ω1=1(为方便计算) (2)推杆回程运动方程 S=h[1-T/Φ1+sin(2πT/Φ1)/2π] V= -hω1/Φ1[1-cos(2πT/Φ1)] a= -2πhω12sin(2πT/Φ1)/Φ12 式中: h=150,Φ1=5π/9,7π/6<=φ<=31π/18,T=φ-7π/6 3.运动线图及凸轮线图 运动线图: 用Matlab编程所得源程序如下: t=0:pi/500:2*pi; w1=1;h=150; leng=length(t); for m=1:leng; if t(m)<=5*pi/6 S(m) = h*(t(m)/(5*pi/6)-sin(2*pi*t(m)/(5*pi/6))/(2*pi)); v(m)=h*w1*(1-cos(2*pi*t(m)/(5*pi/6)))/(5*pi/6); a(m)=2*h*w1*w1*sin(2*pi*t(m)/(5*pi/6))/((5*pi/6)*(5*pi/6)); % 求退程位移,速度,加速度 elseif t(m)<=7*pi/6 S(m)=h; v(m)=0; a(m)=0; % 求远休止位移,速度,加速度 elseif t(m)<=31*pi/18 T(m)=t(m)-21*pi/18; S(m)=h*(1-T(m)/(5*pi/9)+sin(2*pi*T(m)/(5*pi/9))/(2*pi)); v(m)=-h/(5*pi/9)*(1-cos(2*pi*T(m)/(5*pi/9))); a(m)=-2*pi*h/(5*pi/9)^2*sin(2*pi*T(m)/(5*pi/9)); % 求回程位移,速度,加速度

哈工大机械原理大作业凸轮

机械原理大作业二 课程名称: _______ 设计题目: 凸轮机构设计 院 系: ------------------------- 班 级: _________________________ 设计者: ________________________ 学 号: _________________________ 指导教师: ______________________ 哈尔滨工业大学 Harbin I nstituteof Techndogy

设计题目 如右图所示直动从动件盘形凸轮机构,选择一组凸轮机构的原始参数, 据此设计该凸轮机构。 凸轮机构原始参数 二.凸轮推杆升程、回程运动方程及推杆位移、速度、加速度线图 凸轮推杆升程运动方程:冷3唱—亦(中] 156 12 .. v 」1 - cos()] 兀1 5 374.4 2 12 ? a 1si n( ) 兀 1 5 % t 表示转角, s 表示位移 t=0:0.01:5*pi/6; %升程阶段 s= [(6*t)/(5*pi)- 1/(2*pi)*si n(12*t/5)]*130; hold on plot(t,s);

t= 5*pi/6:0.01:pi; %远休止阶段 s=130; hold on plot(t,s); t=pi:0.01:14*pi/9; %回程阶段 s=65*[1+cos(9*(t-pi)/5)]; hold on plot(t,s); t=14*pi/9:0.01:2*pi; %近休止阶段 s=0; hold on plot(t,s); grid on % t表示转角,令3 1=1 t=0:0.01:5*pi/6; %升程阶段v=156*1*[1-cos(12*t/5)]/pi hold on plot(t,v); t= 5*pi/6:0.01:pi; %远休止阶段

西北工业大学机械原理习题答案教材

1—1填空题: 1.机械是机器和机构的总称。 机械原理课程的研究内容是有关机械的基本理论问题。 2.各种机构都是用来传递与变换运动和力的可动的装置。 如:齿轮机构、连杆机构、凸轮机构等。 3.凡用来完成有用功的机器是工作机。 如:机床、起重机、纺织机等。 凡将其它形式的能量转换为机械能的机器是原动机。 如:电动机、蒸气机、内燃机等。 4.在机器中,零件是制造的单元,构件是运动的单元。 5.机器中的构件可以是单一的零件,也可以是由多个零件装配成的刚性结构。 在机械原理课程中,我们将构件作为研究的基本单元。 6.两个构件直接接触形成的可动联接称为运动副。 7.面接触的运动副称为低副,如移动副、转动副等。 点或面接触的运动副称为高副,如凸轮副、齿轮副等。 8.构件通过运动副的连接而构成的可相对运动的系统是运动链,若组成运动链的各构件构成首尾封闭的系统称为闭链,若未构成首尾封闭的系统称为开链。 9.在运动链中,如果将其中一个构件固定而成为机架,则该运动链便成为机构。10.平面机构是指组成机构的各个构件均在同一个平面上运动。 11.在平面机构中,平面低副提供 2 个约束,平面高副提供 1 个约束。12.机构具有确定运动时所必须给定的独立运动参数的数目称为机构的自由度。13.机构具有确定运动的条件是机构的原动件数目应等于机构的自由度的数目。1—2试画出图示平面机构的机构示意图,并计算自由度(步骤:1)列出完整公式,2)

带入数据,3)写出结果)。其中: 图a) 唧筒机构――用于水井的半自动汲水机构。图中水管4直通水下,当使用者来回摆动手柄2时,活塞3将上下移动,从而汲出井水。 解:自由度计算:画出机构示意图: n= 3 p L= 4 p H= 0 p'= 0 F'= 0 F=3n-(2p l+p h-p′)-F′ = 3×3-(2×4+0-0)-0 = 1 图b) 缝纫机针杆机构原动件1绕铰链A作整周转动,使得滑块2沿滑槽滑动,同时针杆作上下移动,完成缝线动作。 解:自由度计算:画出机构示意图: n= 3 p L= 4 p H= 0 p'= 0 F'= 0 F=3n-(2p l+p h-p′)-F′ = 3×3-(2×4+0-0)-0 = 1 1—3试绘出图a)所示偏心回转油泵机构的运动简图(各部分尺寸由图中直接量观察方向 3 2 4 1 4 3 2 1

C语言大作业(图书管理)

c语言图书管理系统 主要功能: 1. 新进图书基本信息的输入。 2. 显示全部记录 3. 按图书名称查询图书基本信息。 4. 根据图书名称对撤消的图书信息进行删除。 5. 按图书名称从小到大排序。 6. 统计某价格以上的图书数量。 7. 列出所有未借出去的图书信息。 基本信息:图书编号、图书名称、单价、作者、存在状态、借书人姓名、性别、学号等 #include #include #include #include typedef int BOOL; typedef struct bookinfo { char number[15];/*产品编号*/ char name[30];/*产品名称*/ float price;/*单价*/ char auther[20];/*作者*/ BOOL isExit;/*存在状态*/ char lendername[20];/*借书人姓名*/ char lendersex[2];/*借书人性别*/ char lendernum[15];/*借书人学号*/ }BOOKINFO; void menu() { printf("\n\n\n\n\n\n\n"); printf("\t\t\t图书管理系统\n"); printf("\t\t\t1:新进图书基本信息的输入\n"); printf("\t\t\t2:显示全部记录\n");

printf("\t\t\t3:根据图书名称查询图书基本信息\n"); printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n"); printf("\t\t\t5:按照图书名称从小大到排序\n"); printf("\t\t\t6:统计某价格以上的图书数量\n"); printf("\t\t\t7:列出所有未借出去的图书信息\n"); printf("\t\t\t8:退出\n"); } void choice_1_input_new()/*输入新进的图书信息*/ { char choice; FILE *p; BOOKINFO newbook; system("cls"); while(1) { printf("输入图书编号:"); gets(newbook.number); printf("输入图书名称:"); gets(https://www.360docs.net/doc/8c10915127.html,); printf("输入图书单价:"); scanf("%f",&newbook.price); while(getchar()!='\n'); printf("输入图书的作者:"); gets(newbook.auther); printf("输入借书人姓名:"); gets(newbook.lendername); printf("输入借书人性别:"); gets(newbook.lendersex); printf("输入借书人学号:"); gets(newbook.lendernum);

西北工业大学机械原理课后答案第2章

第二章 机构的结构分析 题2-11 图a 所示为一简易冲床的初拟设计方案。设计者的思路是:动力由齿轮1输入,使轴A 连续回转;而固装在轴A 上的凸轮2与杠杆3组成的凸轮机构使冲头4上下运动,以达到冲压的目的。试绘出其机构运动简图(各尺寸由图上量取),分析是否能实现设计意图,并提出修改方案。 解:1)取比例尺,绘制机构运动简图。(图2-11a) 2)要分析是否能实现设计意图,首先要计算机构的自由度。尽管此机构有4个活动件,但齿轮1和凸轮2是固装在轴A 上,只能作为一个活动件,故 3=n 3=l p 1=h p 01423323=-?-?=--=h l p p n F 原动件数不等于自由度数,此简易冲床不能运动,即不能实现设计意图。 分析:因构件3、4与机架5和运动副B 、C 、D 组成不能运动的刚性桁架。故需增加构件的自由度。 3)提出修改方案:可以在机构的适当位置增加一个活动构件和一个低副,或用一个高副来代替一个低副。 (1) 在构件3、4之间加一连杆及一个转动副(图2-11b)。 (2) 在构件3、4之间加一滑块及一个移动副(图2-11c)。 (3) 在构件3、4之间加一滚子(局部自由度)及一个平面高副(图2-11d)。

1 1 (c) 题2-11 (d) 5 4 3 6 4 (a) 5 3 2 5 2 1 5 43 6 4 2 6 (b) 3 2 1 讨论:增加机构自由度的方法一般是在适当位置上添加一个构件(相当于增加3个自由度)和1个低副(相当于引入2个约束),如图2-1(b )(c )所示,这样就相当于给机构增加了一个自由度。用一个高副代替一个低副也可以增加机构自由度,如图2-1(d )所示。 题2-12 图a 所示为一小型压力机。图上,齿轮1与偏心轮1’为同一构件,绕固定轴心O 连续转动。在齿轮5上开有凸轮轮凹槽,摆杆4上的滚子6嵌在凹槽中,从而使摆杆4绕C 轴上下摆动。同时,又通过偏心轮1’、连杆2、滑杆3使C 轴上下移动。最后通过在摆杆4的叉槽中的滑块7和铰链G 使冲头8实现冲压运动。试绘制其机构运动简图,并计算自由度。 解:分析机构的组成: 此机构由偏心轮1’(与齿轮1固结)、连杆2、滑杆3、摆杆4、齿轮5、滚子6、滑块7、冲头8和机架9组成。偏心轮1’与机架9、连杆2与滑杆3、滑杆3与摆杆4、摆杆4与滚子6、齿轮5

哈工大机械原理大作业

H a r b i n I n s t i t u t e o f T e c h n o l o g y 大作业设计说明书 课程名称:机械原理 设计题目:凸轮机构 院系:机电学院 班级: 姓名: 学号: 指导教师:丁刚 设计时间: 哈尔滨工业大学 1.设计题目 2.运动方程式及运动线图 由题目要求凸轮逆时针旋转 (1)确定凸轮机构推杆升程、回程运动方程,并绘制推杆位移、速度、加速度线图。升程第一段:(0 <φ< pi /4)φ0=pi/2; s1 = 73*φ^2; v1=146*w*φ; a1 = 146*w^2;

升程第二段:(pi/4 <φ< pi /2) s2 =90-73*(pi/2-φ)^2; v2=146*w*( pi/2-φ); a2 =-146*w.^2; 远休止程:(pi/2 <φ< 10*pi/9) s3 = 90; v3 = 0; a3 = 0; 回程:(10*pi/9)< φ< ( 14*pi/9) s4 =45*(1+cos(9/4*(φ-10*pi/9))); v4 =*w*sin(9/4*(φ-10*pi/9)) ; a4 =*w^2* cos(9/4*(φ-10*pi/9)); 近休止程:(14*pi/9)< φ < ( 2*pi); s5 =0; v5 =0; a5 =0; 1.由上述公式通过编程得到位移、速度、加速度曲线如下:(编程见附录). 2. 凸轮机构的线图及基圆半径和偏距的确定 凸轮机构的线图如下图所示(代码详见附录): 因为凸轮逆时针旋转,,所以滚子从动件右偏,但由于绘图原因,采用向左为正方向,由此 确定凸轮基圆半径与偏距: 基圆半径为r0 = (50^2+100^2)=112mm,偏距e = 50mm。 3.凸轮实际轮廓,理论轮廓,基圆,偏距圆绘制

西北工业大学机械原理课后第9篇

第9章课后参考答案 9-1何谓凸轮机构传动中的刚性冲击和柔性冲击?试补全图示各段s v一、一曲线,并指出哪些地方有刚性冲击,哪些地方有柔性冲击? 答凸轮机构传动中的刚性冲击是指理论上无穷大的惯性力瞬问作用到构件上,使构件产生强烈的冲击;而柔性冲击是指理论上有限大的惯性力瞬间作用到构件上,使构件产生的冲击。 s-S , v-S , a-S曲线见图。在图9-1中B,C处有刚性冲击,在0, A,D,E处有柔性冲击。 9—2何谓凸轮工作廓线的变尖现象和推杆运动的失真现象?它对凸轮机构的工作有何影响?如何加以避免? 答在用包络的方法确定凸轮的工作廓线时,凸轮的工作廓线出现尖点的现象称为变尖现象:凸轮的工作廓线使推杆不能实现预期的运动规律的现象件为失真现象。变尖的工作廓线极易磨损,使推杆运动失真.使推杆运动规律达不到设计要求,因此应设法避免。变尖和失真现象可通过增大凸轮的基圆半径.减小滚子半 题9-1图 径以及修改推杆的运动规律等方法来避免。 9—3力封闭与几何封闭凸轮机构的许用压力角的确定是否一样?为什么?答力封闭与几何封闭凸轮机沟的许用压力角的确定是不一样的。因为在回程阶 段-对于力封闭的凸轮饥构,由于这时使推杆运动的不是凸轮对推杆的作用力F,而是推杆所受的封闭力.其不存在自锁的同题,故允许采用较大的压力角。但为?4^ y 5 J 曲

使推秆与凸轮之间的作用力不致过大。也需限定较大的许用压力角。而对于几何形状封闭的凸轮机构,则需要考虑自锁的问题。许用压力角相对就小一些。 9—4 一滚子推杆盘形凸轮机构,在使用中发现推杆滚子的直径偏小,欲改用较大的滚子?问是否可行?为什么? 答不可行。因为滚子半径增大后。凸轮的理论廓线改变了.推杆的运动规律也势必发生变化。 9—5 一对心直动推杆盘形凸轮机构,在使用中发现推程压力角稍偏大,拟采用推杆偏置的办法来改善,问是否可行?为什么? 答不可行。因为推杆偏置的大小、方向的改变会直接影响推杆的运动规律. 而原凸轮机构推杆的运动规律应该是不允许擅自改动的。 9-6 在图示机构中,哪个是正偏置?哪个是负偏置?根据式(9-24)说明偏置方向对凸轮机构压力角有何影响? S 9-6 答由凸轮的回转中心作推杆轴线的垂线?得垂足点,若凸轮在垂足点的速度沿推杆的推程方向?刚凸轮机构为正偏置?反之为负偏置。由此可知?在图示机沟中,两个均为正偏置。由 , ds/d me tan J(r0 e2) s 可知.在其他条件不变的情况下。若为正偏置(e前取减号).由于推程时(ds/d S )为正.式中分子ds/d5 -evds/d S ,故压力角a减小。而回程时,由于ds/d S 为负,式中分子为 |(ds/d S )-e|=| (ds/d S ) |+ |e| >ds/d S。故压力角增大。负偏置时刚相反,即正偏置会使推程压力角减小,回程压力角增大;负偏置会使推程压力角增大,回程压力角减小。9—7试标出题9—6a图在图示位置时凸轮机构的压力角,凸轮从图示位置转过90。后推杆的位移;并标出题9—6b图推杆从图示位置升高位移s时,凸轮的转角和凸轮机构的压力角。 解如图(a)所示,用直线连接圆盘凸轮圆心A和滚子中心B,则直线AB与推杆导路之间所夹的锐角为图示位置时凸轮机构的压力角。以A为圆心,AB为半径作圆,得凸轮的理论廓线圆。连接A与凸轮的转动中心O并延长,交于凸轮的理论廓线于C点。以O 为圆心.以OC为半径作圆得凸轮的基圆。以O为圆心,以O点到推杆导路的距离OD 为半径作圆得推杆的偏距圆;。延长推杆导路线交基圆于G-点,以直线连接0G。过0点作0G的垂线,交基圆于E点。过E 点在偏距圆的下侧作切线?切点为H点?交理论廓线于F点,则线段EF的长即为凸轮从图示位置转过90后推杆的位移s。

C语言大作业

学院

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计内容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (10) 2.3函数实现 (10) 2.4开发日志 (17) 3 程序调试及运行 (18) 3.1程序运行结果 (18) 3.2程序使用说明 (19) 3.3程序开发总结 (20) 4 附件(源程序) (20)

1 摘要 1.1 设计题目 A题算法型:折半查找算法演示程序 B题空间桁架结构节点位移求解 1.2 设计内容 A题: 本程序是一个演示折半查找算法的演示程序。当用户输入查找数据表列和要查找的数据时,程序会演示折半法查找该数的详细过程,并且支持多次查找、错误提示等功能。 B题: 空间桁架结构节点位移求解 1.3 开发工具 Code Blocks 12.11(内置MinGW) 1.4 应用平台 Windows 7 64位 2 详细设计 2.1 程序结构 A题: 程序功能模块: 本程序主要包含六大模块:程序说明模块、输入模块、排序模块、折半法查找模块、选择模块和程序

退出模块。 工程文件结构: 本程序的工程含有6个文件,其中main.cpp、print_stars.cpp、judge.cpp、sort.cpp、putout.cpp5个cpp 文件和include.h1个头文件(参见下图),两者共同存在于工程“折半法查找演示程序”中。其中main.cpp 文件包含了程序的主体部分,程序说明模块、输入、排序、折半查找、选择、程序退出模块按线性排列。其中输入、排序模块执行一次,这般查找、选择模块可多次执行,直到程序退出模块执行。 六大模块说明: (1) 程序说明模块: 给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。此部分模块主函数源代码如下: int a[N]; /*存储要查找的数表,用户输入*/ int i,n,num,count; /*count为折半次数计数器,n为数表数据个数,num存储所查数据*/ int top,bottom,mid; char c; /*存储选择函数中的输入的字符y或n*/ int flag=1; /*折半法循环标志变量*/ int loc=-1; /*存储所查找数据位置*/ double k=0; p_s(76);puts("\n"); /*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)

相关文档
最新文档