自动控制原理习题及答案.doc
上传时间: 2016-08-01
上传用户:qaz1008611
#include <iostream> #include <stdio.head> #include <stdlib.head> #include <string.head> #define ElemType int #define max 100 using namespace std; typedef struct node1 { ElemType data; struct node1 *next; }Node1,*LinkList;//链栈 typedef struct { ElemType *base; int top; }SqStack;//顺序栈 typedef struct node2 { ElemType data; struct node2 *next; }Node2,*LinkQueue; typedef struct node22 { LinkQueue front; LinkQueue rear; }*LinkList;//链队列 typedef struct { ElemType *base; int front,rear; }SqQueue;//顺序队列 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 //1.采用链式存储实现栈的初始化、入栈、出栈操作。 LinkList CreateStack()//创建栈 { LinkList top; top=NULL; return top; } bool StackEmpty(LinkList s)//判断栈是否为空,0代表空 { if(s==NULL) return 0; else return 1; } LinkList Pushead(LinkList s,int x)//入栈 { LinkList q,top=s; q=(LinkList)malloc(sizeof(Node1)); q->data=x; q->next=top; top=q; return top; } LinkList Pop(LinkList s,int &e)//出栈 { if(!StackEmpty(s)) { printf("栈为空。"); } else { e=s->data; LinkList p=s; s=s->next; free(p); } return s; } void DisplayStack(LinkList s)//遍历输出栈中元素 { if(!StackEmpty(s)) printf("栈为空。"); else { wheadile(s!=NULL) { cout<<s->data<<" "; s=s->next; } cout<<endl; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 //2.采用顺序存储实现栈的初始化、入栈、出栈操作。 int StackEmpty(int t)//判断栈S是否为空 { SqStack.top=t; if (SqStack.top==0) return 0; else return 1; } int InitStack() { SqStack.top=0; return SqStack.top; } int pushead(int t,int e) { SqStack.top=t; SqStack.base[++SqStack.top]=e; return SqStack.top; } int pop(int t,int *e)//出栈 { SqStack.top=t; if(!StackEmpty(SqStack.top)) { printf("栈为空."); return SqStack.top; } *e=SqStack.base[s.top]; SqStack.top--; return SqStack.top; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 //3.采用链式存储实现队列的初始化、入队、出队操作。 LinkList InitQueue()//创建 { LinkList head; head->rear=(LinkQueue)malloc(sizeof(Node)); head->front=head->rear; head->front->next=NULL; return head; } void deleteEle(LinkList head,int &e)//出队 { LinkQueue p; p=head->front->next; e=p->data; head->front->next=p->next; if(head->rear==p) head->rear=head->front; free(p); } void EnQueue(LinkList head,int e)//入队 { LinkQueue p=(LinkQueue)malloc(sizeof(Node)); p->data=e; p->next=NULL; head->rear->next=p; head->rear=p; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //4.采用顺序存储实现循环队列的初始化、入队、出队操作。 bool InitQueue(SqQueue &head)//创建队列 { head.data=(int *)malloc(sizeof(int)); head.front=head.rear=0; return 1; } bool EnQueue(SqQueue &head,int e)//入队 { if((head.rear+1)%MAXQSIZE==head.front) { printf("队列已满\n"); return 0; } head.data[head.rear]=e; head.rear=(head.rear+1)%MAXQSIZE; return 1; } int QueueLengthead(SqQueue &head)//返回队列长度 { return (head.rear-head.front+MAXQSIZE)%MAXQSIZE; } bool deleteEle(SqQueue &head,int &e)//出队 { if(head.front==head.rear) { cout<<"队列为空!"<<endl; return 0; } e=head.data[head.front]; head.front=(head.front+1)%MAXQSIZE; return 1; } int gethead(SqQueue head)//得到队列头元素 { return head.data[head.front]; } int QueueEmpty(SqQueue head)//判断队列是否为空 { if (head.front==head.rear) return 1; else return 0; } void travelQueue(SqQueue head)//遍历输出 { wheadile(head.front!=head.rear) { printf("%d ",head.data[head.front]); head.front=(head.front+1)%MAXQSIZE; } cout<<endl; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 //5.在主函数中设计一个简单的菜单,分别测试上述算法。 int main() { LinkList top=CreateStack(); int x; wheadile(scanf("%d",&x)!=-1) { top=Pushead(top,x); } int e; wheadile(StackEmpty(top)) { top=Pop(top,e); printf("%d ",e); }//以上是链栈的测试 int top=InitStack(); int x; wheadile(cin>>x) top=pushead(top,x); int e; wheadile(StackEmpty(top)) { top=pop(top,&e); printf("%d ",e); }//以上是顺序栈的测试 LinkList Q; Q=InitQueue(); int x; wheadile(scanf("%d",&x)!=-1) { EnQueue(Q,x); } int e; wheadile(Q) { deleteEle(Q,e); printf("%d ",e); }//以上是链队列的测试 SqQueue Q1; InitQueue(Q1); int x; wheadile(scanf("%d",&x)!=-1) { EnQueue(Q1,x); } int e; wheadile(QueueEmpty(Q1)) { deleteEle(Q1,e); printf("%d ",e); } return 0; }
上传时间: 2018-05-09
上传用户:123456..
这是用C语言写的结合TC图形库写出来的贪吃蛇,大家可以从中学习学习~~~ 运行时别忘了修改初始化图形的地址:initgraph(&driver,&mode,address); 比如说我的 address=D:\Win-TC\projects, 因为要有EGAVGA.BGI图形文件支持才能正常运行
上传时间: 2013-06-10
上传用户:zgu489
果园收获作业机械化、自动化是广大果农们关注的热点问题,开展果树采摘机器人研究,不仅对于适应市场需求、降低劳动强度、提高经济效率有着一定的现实意义,而且对于跟踪世界农业新技术、促进我国农业科技进步,加速农业现代化进程有着重大的历史意义。 果树采摘机器人是一个集环境感知、动态决策与规划、行为控制与执行等多种功能于一体的综合系统,它是由机械手固定在履带式移动平台上构成的一类特殊的移动机器人系统。本文在国家“863”高技术项目“果树采摘机器人关键技术研究”支持下,以自行设计的机器人机械结构为研究对象,对果树采摘机器人的控制系统进行了分析、研究和设计,设计了视觉伺服控制器,并对采摘机器人避障技术进行了探讨。主要工作如下: 首先,分析了果树采摘机器人机械结构,介绍了机器人运动学理论,根据自行设计的5自由度机械臂机械特性,采用几何结构算法,建立了果树采摘机器人机械臂的正、逆运动学方程。 其次,基于开放、先进和可靠的考虑,采用开放式结构设计机器人的控制系统。在开放式控制系统设计中,主要对果树采摘机器人硬件组成部分主控计算机、运动控制器、数据采集卡等进行了选型设计。在分析果树采摘机器人工作环境和工作特性的基础上,设计了果树采摘机器人的外围传感器。 再次,根据果树采摘机器人机械结构和控制系统结构组成,设计了PID控制器,应用于机器人视觉伺服控制,实现果树采摘机器人的实时控制。在详细论述关节式机器人避障方法的基础上,对果树采摘机器人避障方法进行了初步的探讨,提出了采用C—空间法实现采摘机器人实时避障。 最后,建立了传感器实验平台,通过实验验证了所设计传感器的正确性。利用固高PAN&TILT两维数控转台和实地拍摄的苹果图像,对所提出的控制方法通过转台控制实验进行了验证。
上传时间: 2013-08-05
上传用户:liuxiaojie
C程序设计语言(第2版·新版)非扫描版&详细书签版.pdfC程序设计语言(第2版·新版)非扫描版&详细书签版.pdf
上传时间: 2013-04-24
上传用户:busterman
为了让公司新进人员及经销商伙伴们对交换式电源供应器有基本的了解,明纬特别出版了 这本『交换式电源供应器技术手册』。这是我们编辑小组以明纬 22 年来从事设计、生产、 销售交换式电源供应器的经验为基础,结合教科书及安规文件而编辑出之成果。 此手册包含电源供应器简介、规格解释、安规、EMC 及 CE 简介、信赖度、电源供应器使 用注意事项、常见技术问题 Q&A、及简易故障排除等主题。内容着重于事实的描述而非理 论的推导,非常适合无电源供应器技术背景的从业人员研读,读者必可在短时间内对交换 式电源供应器及相关规格、应用、安规有概略性的认识。 本手册缘起于 1996 年 2 月发行之『交换式电源供应器使用手册』,历经多次修订再版。而 本版主要加强了图、表的辅助说明,让非技术背景的读者更容易接纳此手册的内容。另外 针对安规及 EMC 的部分也参考最新规范予以修订,整理出更完整的内容以利读者的了解。 最后感谢编辑小组各成员不吝分享自己在技术、研发、工程、品保、维修、安规及 EMC 等 领域的经验,然编辑小组组员均系工程背景人员,在文章撰写上均并非专业,期望读者多 予包涵并能不吝指教提供您宝贵的意见,让本手册下一版的内容更加完整、更有价值。 明纬企业股份有限公
上传时间: 2013-07-11
上传用户:kksuyiwen
共有7个元件库,如下: NO.1 CMOS&TTL74原理图元件库(896个) NO.2 IC集成电路原理图元件库(135个) NO.3 jointbar连接器原理图元件库(59个) NO.4 photounit光电元件原理图元件库(22个) NO.5 电阻电容电感晶振二极管三极管原理图元件库(54个) NO.6 others其他原理图元件库(42个) NO.7 杂原理图元件库(277个)
标签: AltiumDesigner 原理图 元件库
上传时间: 2013-06-27
上传用户:lhc9102
调用方法(加密》解密》加密): unsigned char key1[] = "12345678"; unsigned char key2[] = "abcdefgh"; unsigned char key3[] = "~!@#$%^&"; //如果只需要两组密钥,则本组密钥可以和密钥1一样。 unsigned char en_data[] = "龙的子孙"; unsigned char en_out_put[8]; //3DES 加密 des(en_data, key1, en_out_put, DES_ENCRYPT); des(en_out_put, key2, en_data, DES_DECRYPT); des(en_data, key3, en_out_put, DES_ENCRYPT);
上传时间: 2013-07-10
上传用户:Poppy
Op Amp Applications Handbook
上传时间: 2013-06-08
上传用户:哇哇哇哇哇
单电源运放使用指南《A Single-Supply Op-Amp Circuit Collection》
上传时间: 2013-06-22
上传用户:17854267178