济大机械CAD实验答案Word下载.docx
《济大机械CAD实验答案Word下载.docx》由会员分享,可在线阅读,更多相关《济大机械CAD实验答案Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
2、编制三角带传动的程序设计程序
三、实验报告内容
每次上机实验结束后,学生要作一份完整的实验报告,实验报告内容应包括:
1、实验的基本原理简述及程序框图绘制。
2、编制实验程序。
3、用考核题对所编程序进行考核。
四、实验考核办法
本课程实验成绩依据以下几个方面进行考核
1、实验报告
2、考核所编制的程序
3、实验纪律、出勤等
实验一链表
1.用链表的方法编写减速箱零件清单(包括序号、名称、数量、材料)的管理程序,要求提供插入、删除、列表功能。
减速箱零件清单
名称
数量
材料
箱体
HT100
箱盖
齿轮轴
45
轴
齿轮
6
端盖
…
实验程序清单
#include"
stdafx.h"
stdio.h"
malloc.h"
string.h"
typedefstruct_tagLink{
intNo,Num;
charName[10],Mat[10];
struct_tagLink*next;
}LINK;
LINK*Head=NULL;
voidOutPut(LINK*t)
{
printf("
%5d%15s%5d%15s\n"
t->
No,t->
Name,t->
Num,t->
Mat);
}
//插入
voidInsert(intNo,char*Name,intNum,char*Mat)
LINK*Node=(LINK*)malloc(sizeof(LINK));
Node->
No=No;
strcpy(Node->
Name,Name);
Num=Num;
Mat,Mat);
next=Head;
Head=Node;
//查询
voidCheck(intNo)
LINK*t=Head;
while(t){
if(t->
No==No){
OutPut(t);
break;
}elset=t->
next;
}
//删除
voidDelete(intNo)
LINK*p,*t;
p=t=Head;
while(t&
&
t->
No!
=No){
p=t;
t=t->
if(t==NULL){printf("
未找到%d\n"
No);
return;
if(p==t){
Head=Head->
free(t);
}else{
p->
next=t->
//列表输出
voidOutPutAll()
while(t){
OutPut(t);
intmain(intargc,char*argv[])
for(;
;
){
intcode;
printf("
减速箱零件查询系统\n\n\n"
);
0--退出1--输入\n"
2--查询3--删除\n"
4--列表\n"
请选择:
"
scanf("
%d"
&
code);
if(code==0)break;
switch(code){
case1:
intNo,Num;
charName[10],Mat[10];
for(;
printf("
序号<
0--结束>
:
No);
if(No==0)break;
名称:
%s"
Name);
数量:
Num);
材料:
Insert(No,Name,Num,Mat);
}
break;
case2:
{
intNo;
输入查询的序号:
Check(No);
case3:
输入删除的序号:
Delete(No);
case4:
OutPutAll();
}
return0;
实验二二叉树
1.建立排序二叉树、遍历排序二叉树
2.编写建立和遍历二叉排序树的程序。
3.实验数据:
18,14,22,7,17,20,35,27,11,3,20
4.程序清单:
typedefstruct_tagLink{
struct_tagLink*LC,*RC;
intdata;
LINK*Head;
intA[]={18,14,22,7,17,20,35,27,11,3,20};
intN=sizeof(A)/sizeof(int);
//建立二叉排序树的函数
voidbuilt()
for(inti=0;
i<
N;
i++){
LINK*Node,*Temp;
Node=(LINK*)malloc(sizeof(LINK));
Node->
data=A[i];
LC=Node->
RC=NULL;
if(i==0){Head=Node;
continue;
Temp=Head;
for(;
if(A[i]<
Temp->
data){
if(Temp->
LC==NULL){Temp->
LC=Node;
elseTemp=Temp->
LC;
}else{
RC==NULL){Temp->
RC=Node;
RC;
}
//用中序遍历二差树,输出结果为排序的数据
voidoutput()
LINK*stack[50];
intTOP=0;
LINK*P=Head;
if(P!
=NULL){
stack[TOP++]=P;
P=P->
}else{
if(TOP==0)break;
P=stack[--TOP];
%d\n"
P->
data);
built();
output();
实验三参数化图素拼装原理实验
实验内容:
编制构成轴的七种形状特征的函数,并利用这些函数生成一根轴。
构成轴的七种结构形式
传动轴
程序示例
voidCTSPZView:
DrawUnit_Arc(CDC*pDC,intr,CPointp0,CPointp1,CPointp2)
CRectrect(p0.x-r,p0.y-r,p0.x+r,p0.y+r);
pDC->
Arc(&
rect,p1,p2);
DrawUnit_A(CDC*pDC,CPointp0,intd,intc,boolv)
p2.x=p3.x=p0.x;
p2.y=p0.y-(d/2-c);
p3.y=p0.y+(d/2-c);
p1.x=p4.x=p0.x+(v?
(-c):
c);
p1.y=p0.y-d/2;
p4.y=p0.y+d/2;
MoveTo(p1);
LineTo(p2);
LineTo(p3);
LineTo(p4);
DrawUnit_B(CDC*pDC,CPointp0,intd,intb,boolv)
DrawUnit_C(CDC*pDC,CPointp0,intd,intb,boolv)
DrawUnit_D(CDC*pDC,CPointp0,intd,intb,boolv)
DrawUnit_E(CDC*pDC,CPointp0,intd,intb,intr,boolv)
DrawUnit_F(CDC*pDC,CPointp0,intd,intb,intl)
p5.x=p4.x=p0.x+(l-d/2);
p5.y=p1.y=p0.y-b/2;
p4.y=p3.y=p0.y+b/2;
intt=(int)(sqrt(d*d/4.0-b*b/4.0)+0.5);
p1.x=p3.x=p0.x+t;
DrawUnit_Arc(pDC,d/2,p0,p1,p3);
LineTo(p5);
DrawUnit_G(CDC*pDC,CPointp0,intb,intl)
OnTspzA()
CClientDCdc(this);
DrawUnit_A(&
dc,CPoint(200,300),100,10);
dc,CPoint(300,300),100,10,false);
//CDC*pDC,CPointp0,intd,intc,boolv)
OnTspz0()
//TODO:
Addyourcommandhandlercodehere
OnTspzB()
OnTspzC()
OnTspzD()
OnTspzE()
OnTspzF()
CDlgDrawFdlg;
if(dlg.DoModal()!
=IDOK)return;
DrawUnit_F(&
dc,CPoint(dlg.m_x0,dlg.m_y0),dlg.m_d,dlg.m_b,dlg.m_l);
OnTspzG()
OnTspzM()
实验四设计资料的程序处理
实验内容及要求:
编制下列函数及相应的主程序来调用这些函数。
保证输出结果正确。
1.制查三角胶带型号的函数(参见图5-5)。
要求输入转速和功率,输出型号。
2.编制“一元函数插值”的函数,实验数据见表5-7.
3.编制“二元函数插值”的函数,实验数据见表5-7.
4.编制“最小二乘法求线形方程”的函数,实验数据见表5-11.
math.h"
//找三角胶带型号输入参数N-转速;
P-功率
//函数返回值:
0-O型1-A型2-B型3-C型4-D型5-E型6-F型
intfind_type(doubleN,doubleP)
doubleA[6][4]={{4900,3.8,490,0.8},
{3400,10.5,100,1},
{2400,22.5,100,2.7},
{1500,36,100,5.9},
{1200,85,100,17.5},
{700,170,100,44}};
inti;
doublec;
for(i=0;
6;
if(N>
=A[i][0])returni;
c=log10(A[i][2])+(log10(A[i][0])-log10(A[i][2]))*
(log10(P)-log10(A[i][3]))/(log10(A[i][1])-log10(A[i][3]));
=pow(10.0,c))returni;
return6;
//一元函数线形插值
//xx,yy--节点数据,n--节点个数
intfind_liner(double*xx,double*yy,intn,doublex,double*y)
doublex1,y1,x2,y2;
inti=0;
if(x<
xx[0]||x>
xx[n-1])return0;
while(x>
xx[i])i++;
i--;
x1=xx[i];
y1=yy[i];
x2=xx[i+1];
y2=yy[i+1];
*y=y1+(x-x1)*(y2-y1)/(x2-x1);
return1;
//一元函数抛物线插值
intfind_quadric(double*xx,double*yy,intn,doublex,double*y)
doublex1,y1,x2,y2,x3,y3;
if((x-xx[i])<
(xx[i+1]-x))i--;
if(i<
0)i=0;
if(i>
n-3)i=n-3;
x3=xx[i+2];
y3=yy[i+2];
*y=0;
*y+=y1*(x-x2)*(x-x3)/(x1-x2)/(x1-x3);
*y+=y2*(x-x1)*(x-x3)/(x2-x1)/(x2-x3);
*y+=y3*(x-x1)*(x-x2)/(x3-x1)/(x3-x2);
//最小二乘法求线形方程
voidminlength_line(doublexy[][2],intm,double*a,double*b)
doublea1,b1,c1,a2,b2,c2,d;
b1=c1=a2=b2=c2=0.0;
m;
b1+=xy[i][0];
c1+=xy[i][1];
b2+=xy[i][0]*xy[i][0];
c2+=xy[i][0]*xy[i][1];
a1=m;
a2=b1;
d=a1*b2-a2*b1;
*a=(c1*b2-c2*b1)/d;
*b=-(c1*a2-c2*a1)/d;
find_type(2400,3.8));
doublexx[6]={0.4,0.5,0.6,0.7,0.8,0.9};
doubleyy[6]={0.38942,0.47943,0.56464,0.64422,0.71736,0.80341};
doublex=0.57891,y;
find_liner(xx,yy,6,x,&
y);
%lf\n"
y);
find_quadric(xx,yy,6,x,&
//最小二乘法求线形方程
doublexy[][2]={{1,0},{2,2},{3,2},{4,5},{5,4}};
doublea,b;
minlength_line(xy,5,&
a,&
b);
a=%lf\nb=%lf\n"
a,b);
实验五三角带传动的程序设计
1、已知条件
传动用途和工作条件,传动功率P,主、从带轮的转速n1,n2
2.设计时需要确定的内容
三角带型号、长度和根数,带轮直径,传动中心距,带的张紧力和轴上载荷,同时还要验算带的速度和小带轮上的包角。
三角带传动设计的源程序
#include<
stdio.h>
stdlib.h>
math.h>
#definePI3.1415926
=A[i][0])returni+1;
=pow(10.0,c))returni+1;
voidfind_S_KB(inttype,double*S,double*Q1,double*DMIN,double*DL,double*KB)
doubleA[5][7]={{47,81,138,230,476,692,1170},
{0.06,0.1,0.17,0.3,0.62,0.9,1.52},
{71,100,140,200,315,500,800},
{25,33,40,59,76,96,119},
{0.29,0.77,1.99,5.63,19.95,37.35,96.10}};
*S=A[0][type-1];
*Q1=A[1][type-1];
*DMIN=A[2][type-1];
*DL=A[3][type-1];
*KB=0.001*A[4][type-1];
doublefind_D2(doubleD2)
doubleA[53]={71,75,80,90,95,100,106,112,118,125,132,140,150,160,170,180,200,212,
224,236,250,265,280,300,315,355,375,400,425,450,475,500,530,560,600,630,670,
710,750,800,900,1000,1060,1120,1250,1400,1500,1600,1800,1900,2000,2240,2500};
53;
i++)if(A[i]>
=D2)returnA[i];
voidfind_LP_LI(doublel0,doubleDL,double*LP,double*LI)
doubleA[32]={450,500,560,630,710,800,900,1000,1120,1250,1400,1600,1800,
2000,22