当前位置:文档之家› c实验指导(12)

c实验指导(12)

c实验指导(12)
c实验指导(12)

淮阴工学院

C语言程序设计实验指导书

课程号:1316471

适用专业:电气工程及电子信息类

制定人:王文豪

教研室:软件工程教研室

计算机工程学院

2009 年2 月

实验一Turbo C开发环境的使用一、目的和要求

1.学习Turbo C2.0集成环境,掌握源程序编辑方法;

2.掌握在Turbo C2.0集成开发环境中编译、调试与运行程序的方法;

3.通过运行简单的C程序,初步了解C源程序的特点。

二、实验设备及分组

1.Windows2000以上操作系统;

2.Turbo C2.0语言环境;

3.每人一台PC机。

三、内容和步骤

(一)C程序设计步骤

一个C程序的设计可分成5个步骤:

1.分析问题。根据实际问题,分析需求,确定解决方法。

2.编辑源程序。编写C源程序,并利用一个编辑器将源程序输入到计算机中的某一个文件中。C源文件的扩展名为“.c”。

3.编译程序。编译源程序,检查语法错误,生成目标代码文件。目标代码文件的扩展名为“.obj”。

4.连接程序。将一个或多个目标程序与库函数进行连接后,生成一个可执行文件。可执行文件的扩展名为“.exe”。

5.运行程序。执行可执行文件,分析运行结果。若有算法错误,可进一步进行修改、编译、调试。

在编译、连接和运行程序的过程中,都有可能出现各式各样的错误,要不断地修改源程序,重复以上过程,直到获得正确的结果为止。

(二)VC上机操作方法

VC++6.0系统包含了许多独立的组件,如编辑器、编译器、调试器以及各种各样为开发Windows环境下的C程序而设计的工具。通过该集成环境,程序员可以观察和控制整个开发进程。

使用VC++6.0调试C程序要经过以下几个步骤:

1.启动VC++6.0系统

2.输入和编辑源程序

在源程序编辑窗口输入例1.1中的源程序代码。

3.保存源程序文件

选择“File”菜单中的“Save”命令,将源程序保存到相应的文件中。

4.编译和连接

选择“Compile”菜单中的“Compile”或“Build”命令,将源程序编译或编译连接,产生可执行文件。系统自动加上文件扩展名“.exe”。

在编译和连接期间,若出现错误,则在信息输出窗口给出错误或警告信息。改正错误后,重新编译或编译连接源程序,直到没有错误为止。

5.运行

选择“Run”菜单中的“Run”命令,则在TC集成环境的控制下运行程序。被启动的程序在控制台窗口下运行,与Windows中运行DOS程序的窗口类似。

注意:也可以按快捷键“Ctrl+F5”,直接编译与运行源程序。

6.退出VC++6.0集成环境

选择“File”菜单中的“Exit”命令,可以退出集成环境。

(三)验证分析程序

1.设计一个C++程序,输出以下信息:

***************

Hello!

***************

解:

# include

void main()

{

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

printf(" Hello!\n");

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

}

运行结果:

***************

Hello!

***************

2.设计一个程序,从键盘输入一个圆的半径,求其周长和面积。

解:

# include

void main()

{

float s,r;

printf("请输入圆的半径: \n");

cin>>r;

s=3.14159*r*r;

printf(" 圆的面积为:%f\n",s);

}

运行结果:请输入圆的半径:5

圆的面积为:78.5397

三、完成实验项目

1.设计一个程序,从键盘输入一个小写字母,将它转换成大写字母输出。

2.输入一个球的半径,求其表面积和体积。

实验二结构化程序设计

一、目的和要求

1.掌握数据类型的定义方法、运算符和表达式;

2.掌握数据控制台输入与输出;

3.掌握if语句、witch语句、while、do~while和for语句的使用方法。

二、内容:

1.编写程序,从键盘输入一个三位正整数,将其倒序输出。例如:输入861,输出为168。

#include

void main()

{

int n,i,j,k;

printf("输入一个三位正整数n:");

scanf("%d",&n);

i=n%10; //i存放个位数

n=(n-i)/10; //去掉个位数

j=n%10; //j存放十位数

n=(n-j)/10; //去掉十位数

k=n; //k存放百位数

n=i*100+j*10+k;

printf("逆转数为:%d\n",n);

}

2.编写程序,求两个自然数m和n的最大公约数和最小公倍数。

分析:

最大公约数就是能同时整除m和n的最大正整数,可用欧几里德算法(也称辗转相除法)求解。应用欧几里德算法计算两个数的最大公约数的方法是:求两个数(m、n)相除的余数r(r=m/n m>n),当余数不为零时,m取n的值,n取r的值,再求两个数相除的余数,反复进行直到余数为零,除数n是最大公约数。

最小公倍数=m×n/最大公约数。

#include

void main()

{

int m,n,e,r,t;

printf("enter m,n:\n");

scanf("%d%d",&m,&n);

t=m*n;

r=m%n;

while(r!=0)

{

m=n;

n=r;

r=m%n;

}

e=t/n;

printf(" 最大公约数为: %d\n",n);

printf(" 最小公倍数为:%d\n",e);

}

3.编写程序打印如图4-2所示蝶形图形。

分析:此图形为上下对称结构,用-3~3的整数标识行号i,则每行字符“B”的个数可表示为6*|i|+1。每行字符“B”前空格的个数随着|i|的增大而减少,空格的个数要大于0。

解:

# include

void main()

{

int i,j,k,d;

for(i=-3;i<=3;i++)

{

printf("\n");

d=i;

if (i<0) d=-i;

for (j=1;j<=10-3*d;j++)

printf(" ");

for (k=1;k<=6*d+3;k++)

printf("B");

}

printf("\n ");

}

三、完成实验项目

1. 将三位正整数倒序输出

2. 编写程序,实现下列函数功能:

3.编写程序打印如图4-2所示蝶形图形。

实验三函数

一、目的:

1.掌握函数的定义方法、函数实参和形参的对应关系和值传递的方式、函数的嵌套调用和递归调用的方法、

2.全局和局部变量动态变量,静态变量的概念和使用。 二、 内容

1.编写程序,输入m 和n(n>m),求m

n c 的值。

:已知)!

(!!

m n m n c m

n -=

根据公式,只要自定义一个函数计算阶乘,即可通过函数调用求出m

n c 的值。 解:

阶乘函数定义如下: double fact(int k) { int p=1;

if((k==0)||(k==1)) return p;

else { for(int i=1;i<=k;i++) p=p*i;

return p;

}

}

void main() { int m,n; double c;

l1: printf("please input m,n: \n"); scanf("%d%d",&m,&n); if (n

c= fact(n)/( fact(m)* fact(n-m)); printf("c=%f\n",c);

}

2. 求出100~200之间的所有素数,输出时一行打印五个素数。

分析:判断一个数a 是否为素数,只需将它整除以2~a (取整)即可,如果都不能整除,则a 就是素数。

解:

# include int sushu(int n) {

int m,flag=1;

//printf("请输入要测试的整数:\n");

//scanf("%d",&n);

for (m=2;m<=n/2;m++)

if (n%m==0)

{

flag =0;/* 设置非素数标志*/

break; /* 一旦找到一个m,断定该n非素数,不需再验证*/ }

if(flag)

return 1;

else

return 0;

}

void main()

{

int n,k;

k=0;

printf("\nThe primers from 100 to 200 is:\n");

for(n = 101; n <= 200; n +=2) /* 仅测试100~200间的奇数*/

{

if(sushu(n))

{

printf("%4d",n);

k++;

if(k%5==0)

printf("\n");

}

}

printf("\n");

}

程序运行后,输出,:

101 103 107 109 113

127 131 137 139 149

151 157 163 167 173

179 181 191 193 197

199

三、完成实验项目

1.已知5个学生4门课的成绩,要求主函数分调用各函数实现:

(1)找出每门课成绩最高的学生序号;

(2)找出课程有不及格的学生的序号及其各门课的全部成绩;

(3)求每门课程的平均分数,并输出;

(4) 将学生按总分高低排序。

编写函数求:

n

1

17

16

15

14

13

12

1+

-+

-

+

-

+

-

实验四 数组

一、目的:

1.掌握一维数组和二维数组的定义、赋值、字符数组和字符串数组的使用

2.掌握和数组有关的算法特别是排序算法。

二、内容

例1 将下列10个数按由小到大的顺序排列输出。 15,8,0,-6,2,39,-53,12,10,6

分析:这是对数组中元素的排序问题。对数据进行排序的算法是一种常用的重要算法。排序的方法很多,这里介绍两种比较简单的排序方法:选择排序和冒泡排序。

(1)选择排序

选择排序的基本思想(由小到大的顺序排列):在一组数据中选择一个比较小的数放在排头,在剩余的数据中再选择一个比较小的数放在次排头,…,按照这种方法一直排下去,直到剩下最后一个数为止。假设有n 个数据,要排序n-1轮。

以数列:15,8,0,-6,2,39,这6个数为例,下面给出这6个数的选择排序过程。

第五轮:

39

选择排序的最后结果为:-6,0,2,8,15,39。实现选择排序的程序为:

# include void selectsort(int a[],int n) {

第一轮:

0,-6,2,39

15-6,2,

39 15,82,

39 15,8,0

39 15,8,0,2

15,8,0,2,39

第二轮:

0,2,

39 152,

39 15

,839

15,8,2

15,8,2

第三轮:

2,39 1539 15,815,8,39 第四轮: 39 1515,39

int i,j,p,temp;

for(i=0;i

{

p=i;

for(j=i+1;j

if(a[j]

if(p!=i)

{

temp=a[p];

a[p]=a[i];

a[i]=temp;

}

}

}

void enter(int a[],int n)

{

int i;

for(i=0;i

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

printf("\n the origenal numbers:\n");

for(i=0;i

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

printf("\n");

}

void print(int a[], int n)

{

int i;

printf("\n the sorted numbers:\n");

for(i=0;i

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

}

void main()

{

int a[10],n;

printf("enter n:\n");

scanf("%d",&n);

enter(a,n);

selectsort(a,n);

print(a,n);

}

void bubblesort(int r[],int n)

{ int i,j;

int x;

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

for(j=0;j

if(r[j]>r[j+1])

{ x=r[j];

r[j]=r[j+1];

r[j+1]=x;}

}

例2从键盘输入两个字符串,将它们连接成一个字符串。

分析:建立两个变量i、j,先使i指向字符数组str1的第一个元素,然后移动i使其指向str1的末尾,即指向str1的最后一个元素‘\0’;再使j指向字符数组str2的第一个元素,然后将str2中的元素分别赋给str1中相应位置的元素,直到str2结束为止,即j指向str2的最后一个元素‘\0’;最后在str1的末尾添加一个结束标志‘\0’。

程序如下:

解:

#include

void main(void)

{

char str1[40],str2[20]; //定义字符数组str1、str2

int i,j;

printf("输入二个字符串:\n");

gets(str1); //输入字符串1到str1中

gets(str2); //输入字符串2到str2中

i=0; //使i指向str1的第一个元素

while (str1[i]!='\0') //判断str1是否结束

i++; //str1没有结束,使i指向下一个元素j=0; //使j指向str2的第一个元素

while (str2[j]!='\0') //判断str2是否结束

{

str1[i]=str2[j]; //str2没有结束,将str2[j]赋给;str1[i]

i++; //使i指向str1的下一个元素

j++; //使j指向str2 的下一个元素

}

str1[i]='\0'; //在str1末尾添加结束标志'\0'

printf(str1); //输出str1

printf("\n");

}

三、完成实验项目

1.设A、B、C为m行n列矩阵。设计矩阵加法程序,能完成C=A+B的操作。m与n用

define定义为常量,其值由用户自定义。

2.已有一按从小到大次序排序好的数组,现输入一数,要求用折半查找法找出该数在数组

中的位置。

3. 应用二维数组打印如图5-1所示杨辉三角形。

实验五指针

一、目的

1.掌握指针的概念、定义和使用

2.掌握数组的指针和指向数组的指针变量

3.掌握字符串的指针和指向字符串的指针变量。

二、内容

1.设计一个通用的矩阵相乘的函数,并测试

#include

void matrixmul(int *pa, int *pb, int *pc,int m,int n, int p)

{

int i,j,k;

int t;

for(i=0;i

for(j=0;j

{

t=0;

for(k=0;k

t+=*(pa+i*n+k)* *(pb+k*p+j);

*(pc+i*p+j)=t;

}

}

void print(int *pc,int m,int n )

{

for(int i=0;i

{

for(int j=0;j

printf("\n");

}

}

void main()

{

int a[2][2]={{1,2},{3,4}};

int b[2][3]={{1,2,3},{4,5,6}};

int c[2][3];

int *pc=c[0];

int *pa=a[0];

int *pb=b[0];

matrixmul(pa,pb,pc,2,2,3);

print(pc,2,3);

}

2.约瑟夫问题

15个教徒和15个非教徒在深海上遇险,必须将一半人投入海中,其余的人才能幸免遇难,于是想了个办法:30个人围成一个圆圈,从第一个开始依次报数,每数到第9个就将他扔入大海,如此循环直到仅余15个人,问怎样排法才能使每次投入大海的都是非教徒。

#include "stdio.h"

main()

{

int i,k,quit_num,a[30],*p;

p=a;

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

*(p+i)=i+1; //**(p+i) a[i]

printf("the position of feijiaotu are:\n");

quit_num=0;

k=0;

i=0;

while(quit_num<15)

{if(*(p+i)!=0)k++;

if(k==9)

{printf("%5d",*(p+i));

quit_num++;

*(p+i)=0;

k=0;

}

i++;

if(i==30)i=0;

}

printf("\nthe position of jiaotu are:\n");

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

if(*(p+i)!=0)printf("%5d",*(p+i));

}

三、完成实验项目

1. 下面的程序中,调用了findmax()函数,该函数寻找数组中的最大元素,将该元素的下标通过参数返回,并返回其地址值,编程实现findmax()函数。

# include < stdio.h >

int * findmax(int * array, int size, int * index);

void main ( )

{

int a[10] = {33,91,54,67,82,37,85,63,19,68};

int * maxaddr;

int idx;

maxaddr = findmax(a, 10, &idx);

cout<

}

2、用指针变量编写下列字符串处理函数:

(1)字符串拼接函数Strcat;

(2)字符串比较函数Strcmp;

(3)取字符串长度函数Strlen

实验六结构体和链表

一、目的

1.掌握结构体类型变量的定义和使用、结构体类型数组的概念和使用

2掌握链表的概念、初步学会对链表进行操作。

二、内容

从键盘读入一批数据(读入的值小于0结束),建立链表(按读入的顺序),并打印。

#include

#include

struct node{

int data;

node *next;

};

void Creat(node *&h)

{

int x;

node *r,*p;

//cout<<"Input data:";

printf("Input data:\n");

scanf("%d",&x);

//cin>>x;

while(x>=0){

r=new node;

if(r==NULL) exit(0);

r->data=x;

if(h==NULL) h=p=r;

else { p->next=r;

p=r;}

//cout<<"input data:";

printf("Input data:\n");

scanf("%d",&x);

//cin>>x;

}

p->next=NULL;

}

void printlist(node *p)

{

node *q;

q=p;

while(q!=NULL)

{

//cout<data<<' ';

printf("%d ",q->data);

q=q->next;

}

//cout<

printf("\n");

}

void deleteone(node *&h,int x)

{

node *q,*p;

if(h==NULL)

{

printf(" no delete\n");

return;

}

q=NULL;

p=h;

while(p!=NULL && p->data!=x) { q=p;

p=p->next; }

if(p==NULL)

{

printf(" no delete\n");

return;

}

if(q==NULL) h=p->next;

else q->next=p->next;

delete p;

}

void insert(node *&h,node* s)

{

node *r,*p,*q;

r=new node;

r->data=s->data;

r->next=NULL;

if(h==NULL){

h=r;

return;

}

q=NULL;

p=h;

while(p!=NULL && p->data > s->data)

{ q=p;

p=p->next;

}

if(q==NULL) { r->next=h;

h=r;}

else { q->next=r;

r->next=p;

}

}

node* Sort(node *&h)

{

node *p=h,*head1=NULL,*r;

while(p!=NULL)

{

r=p;

insert(head1,r);

p=p->next;

delete r;

}

return head1;

}

void main()

{

void deleteone(node *&,int);

node *head=NULL;

node *head2=NULL;

Creat(head);

printlist(head);

deleteone(head,23);

printlist(head);

deleteone(head,45);

printlist(head);

head2=Sort(head);

printlist(head2);

}

//在链表h中加入一个值为x的数据,数据要求递增。void insert(node *&h,int x)

{

node *r,*p,*q;

r=new node;

r->data=x;

r->next=NULL;

if(h==NULL){

h=r;

return;

}

q=NULL;

p=h;

while(p!=NULL && p->data

{ q=p;

p=p->next;

}

if(q==NULL) { r->next=h;

h=r;}

else { q->next=r;

r->next=p;

}

//输入一批大于等于0的数据,并有序void Creat(node *&h)

{

int x;

cout<<"Input data:";

cin>>x;

while(x>=0){

insert(h,x);

cin>>x;

}

}

void main()

{ node *head=NULL;

Creat(head);

printlist(head);

}

请编写26个字母按特定字母值插入或删除的完整程序,可自行选用顺序存储或链表结构。

#include /*全局变量及函数提前说明:*/

#include

typedef struct liuyu{char data;struct liuyu*link;}test;

liuyu *p,*q,*r,*head;

int L; /*元素的个数*/

int m=sizeof(test);

void build(); /* 主函数中会被调用的函数应当预先说明*/

void display();

int insert_char(char,char); /*插入一个字母,在第字母Y之前,若无字母则加到末尾*/

int delet_char(char); /* 删除元素X,注意保存X的前趋元素指针!*/

/*---------------------------------------------------------*/

void build() /*字母链表的生成*/

{int i;

head=(test*)malloc(m); /*m=sizeof(test);*/

p=head;

for(i=1;i

{ p->data=i+'a'-1; /* 'a'也可用其ASCII码97来表示*/

p->link=(test*)malloc(m); /*m=sizeof(test));*/

p=p->link; }

p->data=i+'a'-1;

p->link=NULL;

}

/*---------------------------------------------------------*/

void display() /*字母链表的输出*/

{p=head;

while (p->link!=NULL)

{ printf("%c",p->data);

p=p->link; }

printf("%c\n",p->data);

}

/*---------------------------------------------------------*/

int insert_char(char X,char Y) /*插入一个字母X在某个字母Y之前,若找不到Y字母则加到末尾*/ {p=head;

r=(test*)malloc(m);

r->data=X;

if(head->data==Y)

{ head=r;

r->link=p; }

else{ while((p->data!=Y)&&(p->link!=NULL)) {q=p; p=p->link;}

if(p->data==Y) { q->link=r; r->link=p; }

else{p->link=r;r->link=NULL;}

}

L++;

return(0);

}

/*---------------------------------------------------------*/

int delet_char(char X) /* 删除元素X,注意保存X的前趋元素指针!*/

{ p=head;

if(head->data==X){head=head->link;free(p);}

else{ while((p->data!=X)&&(p->link!=NULL))

{q=p;

p=p->link;}

if(p->data==X)

{ q->link=p->link;

free(p); }

else return(-1);

}

L--;

return(0);

}

/*---------------------------------------------------------*/

void main(void) /*字母线性表的生成和输出*/

{ L=26;

build();

display();

printf("insert return value=%d\n",insert_char('L','W'));

display();

printf("delete return value=%d\n",delet_char('z'));

display();

}

void InsertSort(int r[ ],int n)

{

int x;

for(i=1;i

{

x=r[i];

for(j=i-1;j>=0;j--)

if(r[j]>x)

r[j+1]=r[j];

else break;

r[j+1]=x;

}

}

#define NUM 20

#include

#include

void printarr(int r[],int n)

{

int i;

for(i=0;i

cout<

cout<

}

void main()

{

int arr[NUM];

int i;

srand(1); //初始化随机数发生器

for(i=0;i

arr[i]=rand()%100; //随机数在0到99范围内InsertSort(arr,sizeof(arr)/sizeof(int));

printarr(arr,sizeof(arr)/sizeof(int));

}

void ShellSort(int r[],int n)

{ int i,j,d;

int x;

d=n/2;

while(d>=1){

for(i=d ;i

{ x=r[i];

for(j=i-d;j>=0;j-=d)

if(r[j]>x) r[j+d]=r[j];

else break;

r[j+d]=x;

《自动控制原理》实验指导书

自动控制原理实验指导书 池州学院 机械与电子工程系

目录 实验一、典型线性环节的模拟 (1) 实验二、二阶系统的阶跃响应 (5) 实验三、根轨迹实验 (7) 实验四、频率特性实验 (10) 实验五、控制系统设计与校正实验 ......................................... 错误!未定义书签。实验六、控制系统设计与校正计算机仿真实验...................... 错误!未定义书签。实验七、采样控制系统实验 ..................................................... 错误!未定义书签。实验八、典型非线性环节模拟 ................................................. 错误!未定义书签。实验九、非线性控制系统分析 ................................................. 错误!未定义书签。实验十、非线性系统的相平面法 ............................................. 错误!未定义书签。

实验一、典型线性环节的模拟 一、实验目的: 1、学习典型线性环节的模拟方法。 2、研究电阻、电容参数对典型线性环节阶跃响应的影响。 二、实验设备: 1、XMN-2型实验箱; 2、LZ2系列函数记录仪; 3、万用表。 三、实验内容: 1、比例环节: r(t) 方块图模拟电路 图中: i f P R R K= 分别求取R i=1M,R f=510K,(K P=0.5); R i=1M,R f=1M,(K P=1); R i=510K,R f=1M,(K P=2); 时的阶跃响应曲线。 2、积分环节: r(t) 方块图模拟电路图中:T i=R i C f 分别求取R i=1M,C f=1μ,(T i=1s); R i=1M,C f=4.7μ,(T i=4.7s););

C语言程序设计实验指导(课后习题)参考答案

《实验指导》课后练习题参考答案实验1: 1.主函数 2-4:DDC 5.stdio.h 6-9:CCCC 实验2: 1.double 2-4:ABB 5.2 6-12:CDDDADC 13.! 14.8 15-17:ACC 18.G 19-20:CA 21.5 4 22.x=6c 23-25:DCA 26.0x 27.2.000000 28-29:AB 30.a=3 31.D 32.3.15 33.B 34.double 实验3: 1-3:CCD 4.B 5.2,0 6-8:CAC 9. (1)pass, (2)中 及格 不及格 10-12:ADD 13.2 14.B 15.10 16.6 17.x>=1 && x<=sqrt(10)

实验4: 1.B 2.1 3.A 4.3/5,5/8 5.30 实验5: 1.D 2.(1)9 (2)1 3-5:CDB 6.(1)10 (2)7 7.C 8.(1)x=16 (2)y=8 9.return 实验6: 1-5:CCADA 6.10,20 7.13 11 12 8.7 9.2 10.B 11.(1)3 (2) 1 12-13:CB 14.-31 15.221 16.main函数 17.22 18.(1)return (2)void 实验7: 1.C 2.auto 3.9 4.(1) 4 (2) 0 5.10 6.(1)5 (2) 7 (3) 8 7.C 8.110 9-12:DDBC 13.(1) 1 (2) 3

15.6 720 16.auto 17.48 18.(1)1 (2)2 19.D 20.D 21.5,25 22.6 实验8: 1-2. DD 3. 16 4. (1)0 2 3 (2)2 3 5 (3)7 11 13 5. (1)i<9 (2)j<9-i (3)a[j]=a[j+1] (4)a[j+1]=temp 实验9: 1. D 2. (1)-1 (2)2 3. (1)1 (2)a[i-1][j-1]+a[i-1][j] (3)j<=i 4. (1)1 3 4 5 6 7 (2)3 4 5 6 (3)End of main()! 实验10: 1. 0或NULL 2-5. CACA 6. (1)10 (2)15 (3)19 7. (1)ia[j] (3)”%d”,p+i (4)”%d”, *(p+i) 8. (1)2 6 (2)2 2 (3)4 6 实验11: 1. A 2. C 3. 7 4. (1)strlen(s) (2)s[i]>=’a’ && s[i]<=’z’(3)s[i]+32 (4)’\0’(5)s2[j]!=s2[n2-j-1] (6)j

《C语言》实验指导书

内江职业技术学院 上机实验指导书 科目:C语言程序设计 系别:电商学院 班级:15软件1班 教师:王刚 2015—2016学年第一学期

《计算机基础》课程实验指导书 目录 实验一C语言概述 (1) 实验二基本数据类型 (3) 实验三输入输出和算法 (6) 实验四选择和循环结构 (10) 实验五循环结构和函数 (13) 实验六模块化设计 (14) 实验七一维数组和字符串 (18) 实验八多维数组和指针 (20) 实验九指针 (22) 实验十指针和结构体 (23) 实验十一链表和共同体 (26) 实验十二文件 (27) 教材和参考书 1、教材: 《谭浩强、张基温,《C/C++程序设计教程》,高等教育出版社。 2、参考书: (1)《(美)H.M.Deitel,P.J.Deitel著,薛万鹏译,《C程序设计教程》,机械工业出版社。 (2)杨路明,《C语言程序设计教程》,北京邮电大学出版社。

实验一C语言概述 一、实验目的 1、了解所用的计算机系统。 2、了解在该系统上如何进行编辑、编译、连接和运行一个C程序。 3、通过运行简单的C程序了解C程序的特点。 二、实验内容 1、熟悉C语言集成环境。 2、利用C语言集成环境进行编辑、编译、连接和运行一个C程序。 3、运行一个自己编写的程序,程序的功能是输出两行文字。 三、实验设备及环境 微机若干台,并安装有C语言软件。 四、实验步骤 1、熟悉所用的系统。了解Windows资源管理器的使用方法:文件的查看、复制、运行等方法,C所在目录,文本文件的建立方法。 2、进入C,并新建一个C源程序文件。 3、熟悉C的集成环境,了解各菜单项有哪些子菜单。 4、输入下面的程序,注意区分大小写。 #include void main() { printf("This is a C program.\n"); } 编译并运行程序。 5、关闭工作区,新建一个程序,然后输入并运行一个需要在运行时输入数据的

《车站信号自动控制》实验指导书

前言 计算机联锁系统采用了最新计算机技术、总线技术、网络技术,实现了一套性能可靠、具有故障安全性、功能完善、操作简单、维护方便的车站联锁系统。本课程的目的是通过本课程的教学使学生计算机联锁的基本知识、基本原理和基本技能,熟悉计算机联锁的使用和 维护,使计算机联锁更加安全可靠地运行,充分发挥其效能。 目 录 前言 实验一 (联锁设计实验1)进路选择实验.......................................... 4 实验二 (联锁设计实验1)进路解锁实验.......................................... 7 实验三 (系统认识实验)进路模拟行车实验 (9) 实验四 (接口电路实验)进路故障模拟及处理实验.............................. 11 实验五 车站联锁维修实验............................................................... 13 参考文献 (15)

前言 车站信号自动控制(联锁)系统是保证行车安全的信号基础设备,必须保证工作可靠,并符合“故障-安全”原则。实现车站联锁的基本功能,完成列车进路建立、锁闭、解锁、道岔控制、信号机控制,完成轨道电路和信号设备状态的监督。通过车站联锁实验的教学使学生掌握联锁系统的基本知识、基本原理和基本技能,熟悉车站联锁系统的使用和维修,使联锁系统更加安全可靠地运行,充分发挥其效能。

实验1 进路选择实验 一、实验目的 1.了解车站联锁车务仿真培训系统,熟悉系统的操作。 2.通过办理进路过程过程,验证各种进路的选路处理过程。 二、实验设备及工作原理 1.实验设备: ⑴PC机E8000 1台 ⑵瘦客户机T5740W 20台 ⑶服务器E8100 2台 ⑷交换机ProCurve 1台 ⑸集群软件Pink E8000 1套 ⑹车站联锁车务仿真培训系统1套 2. 车站联锁车务仿真培训系统的体系结构,如下图1-1所示。 教师机调度集中机 学员机1 学员 机2 学员 机m 学员 机n ··········· 扩展功能 以太网图1-1 车站联锁车务仿真培训系统体系结构图 三、工作原理 本系统把联锁上位机操作平台,底层联锁逻辑和模拟现场设备的状态及变化过程集合到一台计算机上构成学员机,在一台计算机上实现了联锁系统的所有功能。同时结合教学及培训的特点,设置了一台教师机来完成学员操作过程的记录、回放并设置设备故障及行车命令以供考核学员的处理作业的能力。 四、车站站场图 实验用车站站场图,如下图所示。

自控实验指导书

自控理论实验指导书 录目 . 1 ..…硬件资源………………………………………..……… 4 ..…………………………………..……………软件的使用6 ………………………………………………实验系统部分.. . 6 …………典型环节及其阶跃响应实验一 .. 8 二阶系统阶跃响应……………………实验二 . 10 …. 连续系统串联校正…………………实验三 1 自控理论实验指导书

硬件资源第一章 (可打印机AD/DA采集卡、自动控制原理实验箱、EL-AT-III型实验系统主要由计算机、,其中计算机根据不同的实验分别起信号产生、测量、显示、系统控制和数1选)组成如图据处理的作用,打印机主要记录各种实验数据和结果,实验箱主要构造被控模拟对象。 显示器 实验箱电路卡AD/DA 计算机打印机 1 实验系统构成图 2:实验箱面板如图 实验箱面板图2 下面主要介绍实验箱的构成:系统电源一、系统采用高性能开关电源作为系统的工作电源,其主要技术性能指标为:AC 220V 1.输入电压:12V/0.5A,-12V/0.5A,+5V/2A /电流:+2.输出电压22W .3输出功率: 54.工作环境:-℃~+℃。40 2 自控理论实验指导书 二、 AD/DA采集卡 AD/DA采集卡如图3采用CYGNAL的C8051F410/2芯片做为主控芯片,负责数据采集和USB通信,AD采样位数为12位,采样率最大为10MHz。DA转换位数为12位。 AD/DA采集卡有两路输出(DA1、DA2)和两路输入(AD1、AD2),其输入和输出电压均为-5V~+5V。

图3 AD/DA采集卡 三、实验箱面板 实验箱面板主要由以下几部分构成: 1.实验模块 本实验系统有八组由放大器、电阻、电容组成的实验模块。每个模块中都有一个由UA741构成的放大器和若干个电阻、电容。这样通过对这八个实验模块的灵活组合便可构造出各种型式和阶次的模拟环节和控制系统。 2.二极管,电阻、电容、二极管区 这些区域主要提供实验所需的二极管、电阻和电容。 3.AD/DA卡输入输出模块 该区域是引出AD/DA卡的输入输出端,一共引出两路输出端和两路输入端,分别是DA1、DA2,AD1、AD2。有一个按钮复位,按下一次对AD/DA卡进行一次复位。20针的插座用来和控制对象连接。 4.电源模块 电源模块有一个实验箱电源开关,有四个开关电源提供的DC电源端子,分别是+12V、-12V、+5V、GND,这些端子给外扩模块提供电源。 5.变阻箱、变容箱模块 变阻箱、变容箱是本实验系统的一个突出特点,只要按动数字旁边的“+”、“-”按钮便可调节电阻电容的值,而且电阻电容值可以直接读出。 3 自控理论实验指导书

C语言程序设计实验实验指导书及答案

实验一熟悉C程序运行环境 班级学号成绩 一、实验目的 1. 熟悉C语言Visual C++6.0调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果:

项目3. 调试并运行下面程序,并写出运行结果: #include int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果:

C实验指导书答案

篇一:c语言程序设计实验指导书课后答案 实验一 (1)编程求37+29的值,实习vc环境。 #include<stdio.h> void main() { int a,b,sum; a=37; b=29; sum=a+b; printf(sum=%d,sum); } (2)从键盘输入三个整数,求出最大数并输出。 #include<stdio.h> void main() { int a,b,c,y; int max(int x,int y); printf(input a,b,and c:); scanf(%d,%d,%d,&a,&b,&c); y=max(a,b); y=max(y,c); printf(\nmax=%d\n,y); } int max(int x,int y) { int z; if(x>y) z=x; else z=y; return(z); } (3)通过上机实践,运行下列程序并分析输出结果。 a 程序代码 #include<stdio.h> void main() { char ch=a; printf(%c对应的ascii码是:%d\n,ch,ch); } 程序输出结果:a对应的asc||码是:97b 程序代码 #include<stdio.h> void main() { int a=168;

float b=123.456; float x=35.567,y; printf(a=%5d\n,a); printf(a=%-5d\n,a); printf(b=%6.2f\n,b); printf(b=%e\n,b); y=(int)(x*100+0.5)/100.0; printf(x=f,y=%f\n,x,y); } 程序输出结果: a=168 a=168 b=123.46b=1.234560e+002 x=f,y=35.567001 c程序代码 #include<stdio.h> void main() { int a=168; printf(十进制数%d对应的八进制数是%o\n,a,a); printf(十进制数%d对应的十六进制数是%x\n,a,a); } 程序输出结果: 十进制数168对应的八进制数是250 十进制数168对应的十六进制数是a8 实验二 2.1顺序结构 2.1.1已知a=1.5,b=5.3,c=2.9,计算s=??2 -4ac的结果并输出。 #include<stdio.h> void main() { float a,b,c,s; a=1.5; b=5.3; c=2.9; s=b*b-4*a*c; printf(s的值是%f\n,s); } 2.1.2输入某学生的三个科目的期末考试成绩,计算出该学生的成绩总分和平均分。#include <stdio.h> void main() { int math,english,c_program; float sum ,average;

《C语言》实验指导书

《C语言程序设计》 实 验 指 导 书 华中师范大学信息技术系 二00九年三月

项目一:熟悉C语言的运行环境及简单程序设计 (12) 实验一熟悉C语言的运行环境 实验二c程序初步 (3) 实验三数据类型及输入输出 (5) 实验四运算符与表达式 (8) 项目二:流程控制、指针、数组、模块化程序设计 实验五分支程序设计 (9) 项目六循环程序设计 (11) 项目七函数 (12) 项目八数组 (13) 项目九指针 (15) 项目三:综合程序设计——竞赛编排及优胜排序 (注:每个项目应包含实验学习目标、实验内容、实验原理、实验设备、实验步骤、实验注意事项或实验思考等内容。 基本型实验应有明确的实验学习目标、详细的过程和具体的结果;综合设计型实验应有明确的实验学习目标、可参考的过程和实验结果评价标准)

实验基本要求 1、每次实验前,学生必须预习实验内容,实验程序必须自行编制、自行调试。 2、每次实验,学生都必须提交实验报告,内容包括实验目的、实验内容、实验程序、实验过程(软件的使用、程序的调试)等,见下面的实验报告模版。 3、学生第一次上机时,应在教师机指定文件夹下建立以自己学号+姓名的子文件夹,例如学号为2005683001的学生张三,应在教师机指定文件夹下建立“2005683001张三”的子文件夹,此文件夹就是学生张三存放本课程实验全部文档的文件夹,也是教师评价学生饰演成绩的主要依据。 4、学生每次实验完毕后,都应将实验报告、实验程序等文档上传到教师机自己建立的子文件夹中。 5、学生每次实验,都应该在考勤表上签到。 附 华中师范大学信息技术系c语言程序设计实验报告 实验目的: 实验设备(包括软件): 实验内容: 实验过程: 实验程序及实验结果: 实验体会:

自动控制原理实验指导书(2017-2018-1)

自动控制原理实验指导书 王娜编写 电气工程与自动化学院 自动化系 2017年11月 实验一控制系统的时域分析

[实验目的] 1、熟悉并掌握Matlab 操作环境和基本方法,如数据表示、绘图等命令; 2、掌握控制信号的拉氏变换与反变换laplace 和ilaplace ,控制系统生成模型的常用函数命令sys=tf(num,den),会绘制单位阶跃、脉冲响应曲线; 3、会构造控制系统的传递函数、会利用matlab 函数求取系统闭环特征根; 4、会分析控制系统中n ζω, 对系统阶跃、脉冲响应的影响。 [实验内容及步骤] 1、矩阵运算 a) 构建矩阵:A=[1 2;3 4]; B=[5 5;7 8]; 解: >> A=[1 2;3 4] A = 1 2 3 4 >>B=[5 5;7 8] B = 5 5 7 8 b) 已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵A 的特征值、特征多项式和特征向量. 解:>> A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4]; >> [V ,D]=eig(A) V = 0.4181 -0.4579 - 0.3096i -0.4579 + 0.3096i -0.6044 0.6211 -0.1757 + 0.2740i -0.1757 - 0.2740i 0.0504 0.5524 0.7474 0.7474 -0.2826 0.3665 -0.1592 - 0.0675i -0.1592 + 0.0675i 0.7432 D = 13.0527 0 0 0 0 -4.1671 + 1.9663i 0 0 0 0 -4.1671 - 1.9663i 0 0 0 0 2.1815 >> p=poly(A) p = -6.9000 -77.2600 -86.1300 604.5500 2. 基本绘图命令 a) 绘制余弦曲线y=cos(x),x ∈[0,2π] 解:>> x=linspace(0,2*pi); >> y=cos(x); >> plot(x,y)

自动控制理论实验指导书

《自动控制理论》实验指导书

目录 《自动控制原理》实验须知 (3) 一、仪器简介 (3) 二、预习及预习报告 (6) 三、实验及实验报告 (6) 实验一典型环节及其阶跃响应 (7) 实验二控制系统的瞬态响应 (12) 实验三控制系统的稳定性分析 (14) 实验四系统的频率特性测量 (16) 实验五连续系统的串联校正 (19)

《自动控制原理》实验须知 一、仪器简介 本课程实验的仪器主要为爱迪克labACT自控/计控原理教学实验系统。 (一) 构成 labACT自控/计控原理实验机由以下七个模块组成: 1.自动控制原理实验模块 2.计算机控制原理实验模块 3.信号源模块 4.控制对象模块 5.虚拟示波器模块 6.控制对象输入显示模块 7.CPU控制模块 各模块相互交联关系框图见图1-1-1所示: 图1-1-1 各模块相互交联关系框图 自动控制原理实验模块由模拟运算单元及模拟运算扩充库组成,这些模拟运算单元的输入回路和反馈回路上配有多个各种参数的电阻、电容,因此可以完成各种自动控制模拟运算。例如构成比例环节、惯性环节、积分环节、比例微分环节,PID环节和典型的二阶、三阶系统等。利用本实验机所提供的多种信号源输入到模拟运算单元中去,再使用本实验机提供的虚拟示波器界面可观察和分析各种自动控制实验的响应曲线。 主实验板外形尺寸为35厘米×47厘米,主实验板的布置简图见图1-1-2所示。

根据功能本实验机划分了各种实验区均在主实验板上。实验区组成见表1-1-1。

表1-1-1 实验区组成 (二 1)虚拟示波器的显示方式 为了满足自动控制不同实验的要求我们提供了示波器的四种显示方式。 (1)示波器的时域显示方式 (2)示波器的相平面显示(X-Y)方式 (3)示波器的频率特性显示方式有对数幅频特性显示、对数相频特性显示(伯德图),幅相特性显示方式(奈奎斯特图),时域分析(弧度)显示方式。 (4) 示波器的计算机控制显示方式 2)虚拟示波器的设置 用户可以根据不同的要求选择不同的示波器,具体设置方法如下: (1)示波器的一般用法:运行LABACT程序,选择‘工具’栏中的‘单迹示波器’项或‘双迹示波器’

C实验指导书

《C程序设计语言》实验指导书 信息教研室编 西南科技大学计算机科学与技术学院 2006年8月

实验一简单的C语言程序 1.1 实验类型:验证型实验2学时 1.2 实验目的 1、熟悉并学习使用C程序编译平台TurboC; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的C程序; 3、掌握C语言基础数据类型,熟悉变量定义和赋值方法; 4、学会使用C算术运算符和算术表达式; 1.3 知识点介绍 1、C程序的结构。 一个程序有多个程序单位构成,每一个程序单位作为一个文件,编译系统分别对每个程序文件分别编译,然后连接起来形成可执行程序。 在一个程序单位中包含以下几部分: 预处理命令 全局声明部分 函数(有函数首部和函数体组成),一个C必须有一个(而且只能有一个)main()函数。 2、C数据类型和表达式 C有多种数据类型,数据类型隐含着该类数据的表示、存储及处理规则。 C运算符丰富,使用十分灵活。有运算符和括号将运算对象(操作数)连接起来,构成表达式。表达式中混合运算式要注意运算符的优先级和结合性。此外,不同数据类型运算时,存在类型转换(隐式自动转换和强制转换)。 3、C程序的编写实现 用C语言编写程序——对源程序文件进行编译声称目标文件——对目标文件连接形成可执行程序——运行程序得到结果——分析结果。 1.4 实验内容 题目1 最简单的C程序 按提示的操作步骤,输入下面程序代码,编译连接并执行。

[实验提示] 按照操作步骤创建第一个应用: (1)编辑你的第一个C源程序 (2)保存你的源文件 (3)编译、连接得到可执行程序 (4)改正源程序中的错误 (5)运行你的第一个程序 [思考与扩展] 1、如果程序中大小写输入错误如main 写成Main,结果会怎样? 2、编译运行通过后,本程序输出了一行字符,如果还想输出一行字符: "it’s too easy! " 程序代码该如何修改添加? 提示:注意使用换行控制符’\n’ 题目2 简单应用—求圆柱体的体积 输入下面程序代码,编译运行。 [实验提示] 按照第一题的操作步骤新建工程,输入代码,编译连接,执行程序,输入测试数据分析结果是否正确,如有错误改正后再重新编译连接,直到没有错误为止。 [测试数据] 运行时输入: 5 8

自控实验指导书分解

实验一 典型环节的时域响应 一、实验目的 1、掌握典型环节模拟电路的构成方法、传函及输出时域函数的表达式。 2、掌握各典型环节的特征参数的测量方法。 3、熟悉各种典型环节的阶跃响应曲线。 二、实验设备 Pc 机一台,TD-ACC+教学实验系统一套 三、实验原理及内容 1、比例环节 1)结构框图 图1-1 比例环节的结构框图 2)传递函数 K S R S C =) ()( 3)阶跃响应 K t C =)( )0(≥t 其中 01/R R K = 4)模拟电路 图1-2 比例环节的模拟电路图 注:图中运算放大器的正相输入端已经对地接了100k 电阻。不需再接。

2、积分环节 1)结构框图 图1-3 积分环节的结构框图 2)传递函数 TS S R S C 1 )()(= 3)阶跃响应 t T t C 1 )(= )0(≥t 其中 C R T 0= 4)模拟电路 图1-4 积分的模拟电路图 3、比例积分环节 1)结构框图 图1-5 比例积分环节的结构框图

2)传递函数 TS K S R S C 1)()(+= 3)阶跃响应 t T K t C 1)(+= )0(≥t 其中 01/R R K = ;C R T 0= 4)模拟电路 图1-6 比例积分环节的模拟电路图 4、惯性环节 1)结构框图 图1-7 惯性环节的结构框图 2)传递函数 C(S)R(S)=1TS +1 3)阶跃响应 )1()(/T t e K t C --= 其中 01/R R K = ;C R T 1= 4)模拟电路 图1-8 惯性环节的模拟电路图

四、实验步骤 1、按图1-2比例环节的模拟电路图将线接好。检查无误后开启设备电源。 2、将信号源单元的“ST ”端插针与“S ”端插针用“短路块”。将信号形式开关设在“方波”档,分别调节调幅和调频电位器,使得“OUT ”端输出的方波幅值小于5V ,周期为10s 左右。 3、将方波信号加至比例环节的输入端R (t ),用示波器的“CH1”和“CH2” 表笔分别监测模拟电路的输入R (t )端和输出C(t)端。记录实验波形及结果。 4、用同样的方法分别得出积分环节、比例积分环节、惯性环节对阶跃信号的实际响应曲线。 5、再将各环节实验参数改为如下: 比例环节: k R 2000=,k R 2001=。 积分环节: k R 2000=,u C 2= ; 比例积分: k R 1000=,k R 2001=,u C 2= ; 惯性环节: k R R 20010==;u C 2= 。 6、 重复步骤3。 五、实验报告要求 1、将各环节的阶跃响应曲线画在实验报告上,标明输入信号的幅值、输出 响应曲线的时间和幅值。分析参数变化对响应曲线的影响。 2、理论计算比例放大倍数K 、积分时间常数T 、惯性时间常数T 的值与实 际测量值进行验证。 六、思考题 1、由运算放大器组成的各种环节的传递函数是在什么条件下推导出的? 2、实验电路中串联的后一个运放的作用?若没有则其传递函数有什么差 别? 3、惯性环节在什么条件下可以近似为比例环节?而在什么条件下可以近似为积分环节?

C语言实验指导及报告模板

C语言程序设计

附件1:实验报告模板 C语言程序设计 实验报告 实验一简单的C程序 教学班级:冶金136 学号:01 姓名:张博 课程教师:胡春安实验教师:胡春安 完成时间:2015-2016学年第1学期

实验一简单的C程序 实验时间:2机时 一、实验目的 1. 熟悉C程序编辑环境,掌握主要菜单项的操作和作用。 2. 熟悉编写一个C程序的上机过程(编辑、编译、链接和运行)。 二、实验意义 通过上机实验,加深对第一章所学基本知识:C语言的基本结构和简单C 程序的理解。通过调试简单的C程序,让学生对C程序的编辑、编译、链接和运行有一个直观的体验和熟悉,激发学习的好奇心和兴趣,为后面的全面学习奠定非常必要的基础。 三、实验内容 1.验证实验 (1)掌握程序的编辑、编译、连接、运行、调试过程,按以下步骤进行实验。 ?输入源程序 #include int main() { float a,b; a=12 b=10; c=a%b; printf("a=%d,b=%d,c=%d",a,b,c); return 0; } ?编译、链接及运行,并记录下列问题: ①您在编辑、编译该程序时,在输出窗口显示了几条错误信息?请记录在实验报告中。 C:\Users\h\Desktop\c\ex1\main.c||In function 'main':| C:\Users\h\Desktop\c\ex1\main.c|6|error: expected ';' before 'b'| C:\Users\h\Desktop\c\ex1\main.c|7|error: 'c' undeclared (first use in this function)| C:\Users\h\Desktop\c\ex1\main.c|7|note: each undeclared identifier is reported only once for each function it appears in| C:\Users\h\Desktop\c\ex1\main.c|7|error: invalid operands to binary % (have 'float' and 'float')| ||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===| 错误1:变量b前少了分号“;” 错误2:变量c未定义; 错误3:%运算符运算对象必须是整型数据。

C语言实验指导书

C语言程序设计实验指导书 沈岚岚吕元长编写 桂林电子科技大学信息科技学院 2012.03

前言上机实验的目的和要求 一上机实验的目的 上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。学习程序语言,上机实验的目的如下: 1 加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。 2 了解和熟悉C语言程序开发环境。熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。 3 学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。 4 在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。多动脑筋思考,将会对你有很大帮助。 二上机实验前的准备工作 1 了解所用的计算机系统的性能和使用方法; 2 复习和掌握与本实验有关的教学内容; 3 准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序; 4 准备好调试和运行时所需的数据。 三上机实验的步骤 1 调出C语言编译系统,进入C语言工作环境; 2 输入自己编制好的程序; 3 检查输入是否有错,及时更正; 4 进行编译和连接; 5 运行程序,分析结果。 四、实验结束,整理实验报告 实验报告应包括以下内容: 1 上机题目; 2 程序清单; 3 运行结果; 4 对结果的分析和本次获得的经验和体会。

自控理论实验指导书

自动控制理论 实验指导书 信息工程学院 2005年10月

第一部分 实验要求 1.实验前做好预习。 2.严格按照要求操作实验仪器,用毕恢复原状。 3.接线完成后,由指导教师检查后方可通电。 4.实验完成后,由指导教师检查实验记录、验收仪器后,方可离开。 5.实验报告应包括以下内容: 1) 实验目的; 2) 实验线路; 3) 实验内容; 4) 实验结果(测得的数据、波形等); 5) 实验结果的分析和讨论。 第二部分 实验 实验一 二阶系统的阶跃响应 一、 实验目的 1.学习二阶系统阶跃响应曲线的实验测试方法; 2.研究二阶系统的两个参数n ωξ,对暂态性能指标的影响。 二、 实验设备 1.XMN-2型模拟仪。 2.超低频示波器。 3.万用表。 三、 实验内容 典型二阶系统的框图如图1所示: 图1 二阶系统框图 其闭环传递函数为: 2 222)() (n n n s s s X s Y ωξωω++= 用图2所示电路可模拟二阶系统。其中4个运算放大器分别构成如下环节:

)(t x 图2 用运算放大器构建的二阶系统 . , )(;1)(; ,1)()(6921i f op op op op R R K K s G s G RC T Ts s G s G =-=-==-== 上式中op1、op2、op6、op9分别和模拟仪的运放单元相对应。无阻尼自然振荡角频率、阻尼比与时间常数T 、比例系数K 满足下列关系: 2 );/(1 K s rad T n = = ξω 1. 无阻尼自然振荡角频率n ω保持不变,改变阻尼比ξ,输入单位阶跃信号 V t t x )(1)(=,观察和记录响应曲线)(t y 和最大超调量p M 、调整时间s t 的变化。 1)取K R C M R f 40,0.1,1===μ,使s T K 1,4.0==,可得2.0,1==ξωn 。 2)令K R f 80=,其他参数不变,此时s T K 1,8.0==,4.0,1==ξωn 。 3)令K R f 200=,其他参数不变,此时s T K 1,2==,1,1==ξωn 。 2. 阻尼比ξ保持不变,改变无阻尼自然振荡角频率n ω,输入单位阶跃信号 V t t x )(1)(=,观察和记录响应曲线)(t y 和最大超调量p M 、调整时间s t 的变化(与 上述第一组参数下的结果比较)。 取K R C M R f 40,47.0,1===μ,使s T K 47.0,4.0==,可得12.2=n ω, 2.0=ξ。 3.将以上四组测量结果列表给出,并和最大超调量p M 、调整时间s t 的理论值相比较。 四、 思考题 1.推导图2所示电路的闭环传递函数,并确定n ω、ξ和i f R R C R ,,,的关系。 2.该电路的输出的稳态值是否等于阶跃输入信号的幅值?为什么?

C语言实验指导

C语言实验指导书 实验一:简单的C语言程序 一、实验目的 1.了解C语言的语法结构和书写格式; 2.掌握C语言数据类型以及变量的定义和赋值;掌握运算符的种类、运算优先级和结合性;掌握不同类型数据间的转换和运算。 2.掌握C语言的表达式。 3.掌握C程序的编辑、编译、连接和运行的过程。 二、实验内容 1.输入并运行以下程序: #include void main( ) { char c1,c2; c1=97; c2=98; p rintf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; (类型转换) 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。 2.输入并运行以下程序: ①#include void main() { int a,b,x; x=(a=3,b=a--); printf(“x=%d,a=%d,b=%d\n”,x,a,b); } x=3,a=2,b=3 ②#include void main() { float f1,f2,f3,f4; int m1,m2; f1=f2=f3=f4=2; m1=m2=1; printf(“%d\n”,(m1=f1>=f2) && (m2=f3

③#include void main() { float f=13.8; int n; n=(int)f%3; printf(“n=%d\n”,n); } 3.输入并运行以下程序: #include void main( ) { int i=8,j=10,m,n; m=++i;n=j++; printf(“%d,%d,%d,%d\n”,i,j,m,n); } 分别作以下改动并运行: ①将程序改为: #include void main( ) { int i=8,j=10; printf(“%d,%d\n”,i++,j++); (8,10) } ②在①的基础上,将printf语句改为: printf(“%d,%d\n”,++i,++j);(9,11) ③再将printf语句分别改为: printf(“%d,%d,%d,%d\n”,i,j, i++,j++);(8,10,8,10) printf(“%d,%d,%d,%d\n”,++i,++j,i,j); (9,11,8,10) ④程序改为: main( ) { int i=8,j=10,m=0,n=0; m+=i++; n-=--j; printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n); } (i=9,j=9,m=8,n=-9) 4. 请将下列给出的两个程序段分别输入计算机后,分析其运行结果: ①void main() { int num; num=32767; printf(“num=%d\n”,++num); } ②void main() { int a=-2; printf(“%d, %d\n”,a, a--); }

自动控制理论实验指导书

前言 自动控制原理是自动化、自动控制、电子电气技术等专业教学中的一门重要专业基础课程。它可以处理时变、非线性以及多输入、多输出等复杂的控制系统等问题。本套EL-AT-III型自动控制实验系统克服了以前做自动控制理论实验时,连线复杂,连接不稳定的缺点,通过对单元电路的灵活组合,可构造出各种型式和阶次的模拟环节和控制系统。可以使学生把主要精力集中在系统电路和系统特性的研究上。 本系统采用DA/AD卡通过USB口和计算机连接实现信号源信号的输出和系统响应信号的采集,采集后的信号通过计算机显示屏显示,省去了外接信号源和示波器测量相应信号的麻烦。EL-AT-III型自动控制实验系统支持自动控制理论课的所有实验,通过这套仪器可使学生进一步了解和掌握自动控制理论的基本概念、控制系统的分析方法和设计方法,学习和掌握系统模拟电路的构成和测试技术,提高应用计算机的能力和水平。 本书分为三章,第一章为EL-AT-III型实验箱硬件资源,主要介绍实验箱的硬件组成和系统单元电路。第二章为系统集成操作软件,主要介绍系统软件的安装,操作以及计算机和实验箱的通讯设置。第三章为实验系统部分,主要介绍各个实验的电路组成,原理和实验步骤。另外,在附录部分由部分实验的说明和参考结果。

目录 第一章硬件资源 (2) 第二章软件安装及使用 (5) 第三章实验系统部分 (11) 实验一典型环节及其阶跃响应 (12) 实验二二阶系统阶跃响应 (17) 实验三控制系统的稳定性分析 (21) 实验四系统频率特性测量 (24) 实验五连续系统串联校正 (30) 实验六数字PID控制 (35) 实验七采样实验 (38)

自动控制理论实验指导书解析

自动控制理论实验指导书 目录 实验一典型环节与典型系统的模拟 (1) 实验二二阶系统阶跃响应特性 (6) 实验三自动控制系统稳定性实验 (10) 实验四线性系统动态特性的研究 (12) 实验五自动控制系统静态误差实验 (13) 实验六控制系统的品质及校正装置的应用(设计性) (15) 实验七控制系统频率特性仿真研究 (17) 实验八非线性系统运动特性的研究 (18) 实验九非线性系统的计算机仿真 (20) 附录 KJ82-3型自动控制系统模拟机可做模拟运算电路举例 (21)

实验一 典型环节与典型系统的模拟 一.实验目的 1.观察典型环节阶跃响应曲线,定性了解参数变化对典型环节动特性的影响; 2.观测不同阶数线性系统对阶跃输入信号的瞬态响应,了解参数变化对它的影响。 二.实验设备和仪器 1.KJ82-3型自动控制系统模拟机一台 2.Tektronix TDS 1002数字存储示波器一台 3.万用表一块 三.实验内容及步骤 (一)典型环节的阶跃响应 1.实验步骤: (1)开启电源前先将所有运算放大器接成比例状态,拔去不用的导线。 (2)闭合电源后检查供电是否正常。分别将各运算放大器调零,并用示波器观察调整好方波信号。 (3)断开电源后按图接好线,由信号源引出方波信号接到各环节输入端。 (4)闭合电源,调节有关旋钮,观察阶跃响应波形,并利用表1.1-1.6记录之。 2.实验内容: (1)比例调节器 U s c A 1 100K 50K W 表1.1 (2 U s c A 1 100K C

改变C 时保护输入信号不变 表1.2 sc U A 1 100K 50K R C 表1.3 U s c K 5K 1μ0K 50A 5 R 0 10 表1.4

自动控制实验指导书

第一章THBCC-1型控制理论实验平台硬件组成及使用 一、直流稳压电源 “THBCC-1”实验平台有两个直流稳压电源,主要用于给实验平台提供电源。其中一个直流稳压电源有±5V/0.5A、±15V/0.5A及+24V/1.0A五路,每路均有短路保护自恢复功能。它们的开关分别由相应的钮子开关控制,并由相应发光二极管指示。其中+24V主要用于温度控制单元和直流电机单元。 实验前,启动实验平台左侧的空气开关和实验台上的电源总开关。并根据需要将±5V、±15V钮子开关拔到“开”的位置。 另一个直流稳压电源的功能与前一个相比,是无+24V直流电源。 实验时,也可通过2号连接导线将直流电压接到需要的位置。 二、阶跃信号发生器 “THBCC-1”实验平台有两个阶跃信号发生器,主要提供实验时的给定阶跃信号,其输出电压范围约为-10V~+10V,正负档连续可调。使用时根据需要可选择正输出或负输出,具体通过“阶跃信号发生器”单元的钮子开关来实现。当按下复位按钮时,单元的输出端输出一个可调(选择正输出时,调节RP1电位器;选择负输出时,调节RP2电位器)的阶跃信号(当输出电压为1V时,即为单位阶跃信号),实验开始;当不按复位按钮时,单元的输出端输出电压为0V。 注:单元的输出电压可通过实验台上左面板的直流数字电压表来进行测量,同时可通过2号连接导线将阶跃信号接到需要的位置 三、函数信号发生器 “THBCC-1”实验平台有两个函数信号发生器,一个为低频函数信号发生器,主要用于低频信号输出;另一个为函数信号发生器,主要用于高频输出。 低频函数信号发生器由单片集成函数信号发生器专用芯片及外围电路组合而成,主要输出有正弦信号、三角波信号、方波信号、斜坡信号和抛物坡信号(其中斜坡、抛物坡信号在T1档输出)。输出频率分为T1、T2、T3三档。其中正弦信号的频率范围分别为0.1Hz~3.3Hz、2Hz~70Hz、64Hz~2.5KHz三档,V p-p值为14V。 使用时先将信号发生器单元的钮子开关拔到“开”的位置,并根据需要选择合适的波形及频率的档位,然后调节“频率调节”和“幅度调节”微调电位器,以得到所需要的频率和幅值,并通过2号连接导线将其接到需要的位置。 而用于高频输出的函数信号发生器主要输出有正弦信号、三角波信号、方波信号,输出频率分为T1、T2、T3三档,其中正弦波频率可达90k左右,V p-p值为14V。 四、锁零按钮 锁零按钮用于实验前运放单元中电容器的放电。当按下按钮时,通用单元中的场效应管处于短路状态,电容器放电,让电容器两端的初始电压为0V;当按钮复位时,单元中的场效应管处于开路状态,此时可以开始实验。 注:在实验时,必须用2号导线将通用单元(U3~U14)的G输出端与U0输出端相连时,锁零按钮才有效。 五、频率计 “THBCC-1”实验平台有两个频率计,一个为低频频率计,主要用于测量低频函数信号

相关主题
文本预览
相关文档 最新文档