实验二 控制结构

合集下载

c语言实验报告实验

c语言实验报告实验

c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。

二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。

三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。

熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。

2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。

运用 switch 语句进行多分支选择,处理不同的情况。

利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。

3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。

掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。

4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。

实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。

5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。

掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。

6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。

了解共用体的概念和使用场景,比较结构体和共用体的区别。

四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。

PID控制实验报告

PID控制实验报告

实验二数字pid控制计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。

因此连续pid控制算法不能直接使用,需要采用离散化方法。

在计算机pid控制中,使用的是数字pid控制器。

一、位置式pid控制算法按模拟pid控制算法,以一系列的采样时刻点kt代表连续时间t,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,可得离散pid位置式表达式:?tu(k)?kp?e(k)??ti?k?e(j)?j?0k?td(e(k)?e(k?1))??t?e(k)?e(k?1) t ?kpe(k)?ki?e(j)t?kdj?0式中,ki?kpti,u为控制,kd?kptd,e为误差信号(即pid控制器的输入)信号(即控制器的输出)。

在仿真过程中,可根据实际情况,对控制器的输出进行限幅。

二、连续系统的数字pid控制仿真连续系统的数字pid控制可实现d/a及a/d的功能,符合数字实时控制的真实情况,计算机及dsp的实时pid控制都属于这种情况。

1.ex3 设被控对象为一个电机模型传递函数g(s)?1,式中2js?bs j=0.0067,b=0.1。

输入信号为0.5sin(2?t),采用pd控制,其中kp?20,kd?0.5。

采用ode45方法求解连续被控对象方程。

d2ydyy(s)1?,则?u,另y1?y,y2?y?2因为g(s)?,所以j2?bdtu(s)js?bsdt??yy??12,因此连续对象微分方程函数ex3f.m如下 ?y?2??(b/j)y?(1/j)*u?2? function dy = ex3f(t,y,flag,para) u=para; j=0.0067;b=0.1;dy=zeros(2,1);dy(1) = y(2);dy(2) = -(b/j)*y(2) + (1/j)*u;控制主程序ex3.mclear all;close all;ts=0.001; %采样周期xk=zeros(2,1);%被控对象经a/d转换器的输出信号y的初值e_1=0;%误差e(k-1)初值u_1=0;%控制信号u(k-1)初值for k=1:1:2000 %k为采样步数time(k) = k*ts; %time中存放着各采样时刻rin(k)=0.50*sin(1*2*pi*k*ts); %计算输入信号的采样值para=u_1; % d/a tspan=[0 ts];[tt,xx]=ode45(ex3f,tspan,xk,[],para); %ode45解系统微分方程%xx有两列,第一列为tt时刻对应的y,第二列为tt时刻对应的y导数xk = xx(end,:); % a/d,提取xx中最后一行的值,即当前y和y导数yout(k)=xk(1); %xk(1)即为当前系统输出采样值y(k) e(k)=rin(k)-yout(k);%计算当前误差de(k)=(e(k)-e_1)/ts; %计算u(k)中微分项输出u(k)=20.0*e(k)+0.50*de(k);%计算当前u(k)的输出%控制信号限幅if u(k)>10.0u(k)=10.0;endif u(k)<-10.0u(k)=-10.0;end %更新u(k-1)和e(k-1)u_1=u(k);e_1=e(k);endfigure(1);plot(time,rin,r,time,yout,b);%输入输出信号图xlabel(time(s)),ylabel(rin,yout); figure(2);plot(time,rin-yout,r);xlabel(time(s)),ylabel(error);%误差图程序运行结果显示表1所示。

Python实验报告(分享文档)

Python实验报告(分享文档)

目录备注: 实验考核要求及成绩评定4.检查已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。

5.运行程序并分析运行结果是否合理。

在运行时要注意当输入不同的数据时所得结果是否正确,应测试两组以上数据,分别检查在不同情况下结果是否正确。

列出1-7题源程序清单并记录上机运行结果。

1.编写Python程序, 进行摄氏度和华氏度之间的温度转换。

源程序:运行结果:2.天天向上的力量计算。

一年365天, 以第1天的能力值为基数, 记为1.0,当好好学习时能力值相比前一天提高1‰, 当没有学习时由于遗忘等原因能力值相比前一天下降1‰。

每天努力和每天放任, 一年下来的能力值相差多少呢?源程序:运行结果:思考:如果好好学习时能力值相比前一天提高5‰, 当放任时相比前一天下降5‰。

效果相差多少呢?源程序:运行结果:如果好好学习时能力值相比前一天提高1%, 当放任时相比前一天下降1%。

效果相差多少呢?源程序:运行结果:3.一年365天, 一周5个工作日, 如果每个工作日都很努力, 可以提高1%,仅在周末放任一下, 能力值每天下降1%, 效果如何呢?源程序:运行结果:4.每周工作5天, 休息2天, 休息日水平下降0.01, 工作日要努力到什么程度一年后的水平才与每天努力1%所取得的效果一样呢?(选作)源程序:运行结果:5.输入一个星期数字, 返回对应星期名称。

源程序:运行结果:6.利用print()函数实现简单的非刷新文本进度条及单行动态刷新文本进度条。

(1) 简单的非刷新文本进度条源程序:运行结果:(2) 单行动态刷新文本进度条源程序:运行结果:五、总结1.实验过程中的问题及解决方法:答: 在“温度转换”实例中对字符串的逆序截取那一部分不太熟悉,通过查询了“廖雪峰Python学习网站”之后得到了解决。

对format格式的输出还不太熟悉, 通过不断地练习得到了改善。

2.实验收获实验成绩评定表处理:if PM2.5值>= 75, 打印空气污染警告if 35 <= PM2.5值< 75, 打印空气良好提醒if PM2.5值< 35, 打印空气质量优, 建议户外运动输出: 打印空气质量提醒源程序:运行结果:2.编写一个根据体重和身高计算BMI值的程序, 并同时输出国际和国内的BMI指标建议值。

实验2 控制结构

实验2   控制结构

实验2 控制结构一、实验目的1、掌握if、switch选择语句的使用及其嵌套的使用方法2、掌握用while语句、do…while语句和for语句实现循环的方法。

3、了解转向语句的使用。

4、学习循环结构的嵌套使用。

二、实验要求1、实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;2、能认真独立完成实训内容;3、实验后做好实验总结,根据实验情况完成总结报告。

三、实验学时6学时四、实验内容1、编程实现:输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。

(注:90分以上:为A,80一89分为B,70一79分为C,60一69分为D,60分以下为E。

)要求:该程序能正确处理任何数据。

当输人数据大于:100或小于0的数据通知用户“输人数据错”,结束程序。

#include<iostream>using namespace std;int main(){float score;cout<<"Eeter the score:"<<endl;cin>>score;if(100>=score&&score>=0){if(score>=90)cout<<"The degree is A"<<endl;else if(score>=80)cout<<"The degree is B"<<endl;else if(score>=70)cout<<"The degree is C"<<endl;else if(score>=60)cout<<"The degree is D"<<endl;elsecout<<"The degree is E"<<endl;}else cout<<"Your input is Wrong!"<<endl;return 0;}2、输入一个年份,判断是否为闰年。

2024版C语言程序设计实验教案

2024版C语言程序设计实验教案

C语言程序设计实验教案contents •实验目标与要求•实验内容与步骤•实验难点与重点解析•实验报告撰写指导•课程回顾与拓展延伸•考核方式与评价标准目录01实验目标与要求掌握C语言的基本语法和程序结构熟悉C语言的开发环境和调试工具培养学生运用C语言解决实际问题的能力提高学生的编程思维和算法设计能力01020304010204学生需要具备一定的计算机基础知识,如操作系统、基本编程概念等学生需要安装并配置好C语言的开发环境,如编译器、调试器等学生需要按照实验步骤和要求完成实验任务,并提交实验报告学生需要积极参与实验讨论和交流,分享自己的经验和心得03Windows 、Linux 或Mac OS 等主流操作系统操作系统开发工具实验素材Visual Studio 、Code:Blocks 、GCC 等C 语言编译器和调试器提供必要的实验素材和代码示例,供学生参考和学习使用030201实验环境准备02实验内容与步骤•实验目的:掌握C语言的基本语法,包括变量、数据类型、运算符和表达式等。

实验内容编写程序,实现两个整数的四则运算。

编写程序,输入一个整数,判断其正负和奇偶性。

•编写程序,实现三个数的排序并输出。

实验步骤2. 使用编译器编译并运行程序。

1. 编写程序源代码。

3. 观察并记录程序运行结果。

实验一:基础语法练习•实验目的:掌握C语言的控制结构,包括条件语句、循环语句和跳转语句等。

实验内容编写程序,实现输入一个整数,判断其是否为素数。

编写程序,求1到100之间的所有偶数的和。

•编写程序,实现输入一个年份,判断其是否为闰年。

实验步骤1. 分析问题,确定算法。

2. 编写程序源代码。

3. 使用编译器编译并运行程序。

4. 观察并记录程序运行结果。

•实验目的:掌握C语言的函数和数组的使用方法。

实验内容编写程序,实现输入一个整数数组,输出其中的最大值和最小值。

编写程序,实现输入一个字符串,统计其中每个字符出现的次数。

Java语言实验2程序控制结构

Java语言实验2程序控制结构

一、实验目的1.理解定义变量的作用,掌握定义变量的方法。

2.掌握顺序结构程序控制。

3.掌握算法与程序设计的基本方法。

4.掌握if语句、if-else-if结构的使用。

5.掌握switch语句的使用。

6.掌握使用while语句实现循环。

7.了解使用do-while语句实现循环。

8.掌握使用for语句实现循环。

9.了解continue语句和break语句的使用。

10.掌握一维数组的概念、定义和使用。

二、实验内容及步骤1.顺序结构(1)任务写一个程序,读入三个整数并打印他们的平均值。

源代码:public class renwu1 {public static void main(String[] args) {int sum = 0;int aver = 0;Scanner scanner = new Scanner(System.in);for(int i = 1;i <= 3; i++) {System.out.print("请输入第" + i +"个数:");sum +=scanner.nextInt();aver = sum / i;}System.out.println("平均数是:" + aver);}}运行结果:写一个程序,读入两个浮点数并打印他们的和、差和积。

源代码:public static void main(String[] args) {float sum = 0;float cha = 0;float ji = 0;Scanner scanner = new Scanner(System.in);System.out.println("请输入第一个浮点数:");float num1 = scanner.nextFloat();System.out.println("请输入第二个浮点数:");float num2 = scanner.nextFloat();sum = num1 + num2;cha = num1 - num2;ji = num1 * num2;System.out.println("和是:" + sum);System.out.println("差是:" + cha);System.out.println("积是:" + ji);}}运行结果:2.分支结构(1)任务任务1:使用简单if语句编程,从键盘键入三个整数,然后按照从小到大的顺序将其输出。

高二物化生报告实验控制组设置

高二物化生报告实验控制组设置

高二物化生报告实验控制组设置在高二物化生实验中,为了更准确地验证某一变量对实验结果的影响,通常会设置实验组和对照组。

其中,控制组则是对照组中非常重要的一部分,它的设置对实验结果的准确性起到了至关重要的作用。

本文将详细探讨高二物化生报告实验控制组的设置。

一、控制组的定义控制组是实验研究中的一个重要概念,它是与实验组相对应的一个组别。

在同样的条件下,控制组不接受实验所要求的处理,目的是为了比较实验组的结果是否受到其他因素的影响。

二、控制组的作用1. 消除干扰因素:通过控制组的设置,可以排除实验结果中的其他可能干扰因素的影响,确保实验结果更加准确可靠。

2. 对照比较:控制组与实验组进行对照比较,可以更加直观地了解实验处理的效果,分析实验变量对实验结果的影响程度。

三、控制组设置的注意事项1. 同质性:在设置控制组时,需要保证与实验组的学生或实验对象在性质上尽可能相似,以减少其他因素对实验结果的影响。

2. 随机分配:为了避免实验结果的偏差,实验对象应该通过随机分配的方式被分到不同的组别,确保控制组的选取过程公平合理。

3. 处理保持统一:尽量保持实验组和控制组在实验过程中除了所要比较的变量以外,其他处理条件尽量统一,以确保变量对实验结果的影响准确可靠。

四、控制组设置的具体案例以高二物化生实验为例,假设我们要探究不同温度对植物生长的影响。

我们设置实验组和对照组,其中实验组A置于25摄氏度的温室中,实验组B置于30摄氏度的温室中,而控制组则置于常温条件下的自然环境中。

在此案例中,控制组的设置可以帮助我们排除其他因素(除温度以外的因素)对植物生长的影响,准确评估不同温度对植物生长的影响。

五、结论通过设置控制组,能够有效控制实验环境中的其他干扰因素,从而更加准确地评估实验处理的效果。

在高二物化生实验中,合理设置控制组是确保实验结果准确可靠的重要步骤之一。

综上所述,高二物化生实验中的控制组设置是为了消除干扰因素、对照比较不同变量对实验结果的影响。

实验二 控制结构

实验二  控制结构

实验二控制结构一、目的和要求1.掌握Visual C++6.0集成环境中的单步执行;2.熟悉if 与switch语句的格式、执行过程、使用方法及典型案例;3.学会使用选择结构解决一般的实际问题,能编写简单的应用程序。

4.掌握循环结构while、do-while、for等语句格式、执行过程、使用方法及典型案例。

5.学习循环结构的嵌套使用。

6.掌握分支与循环综合程序的编写方法;7.学习并熟悉break、continue的区别与使用。

8.学会常用数值与图形的编程方法。

二、实验设备及分组1.Windows2000以上操作系统;2.Visual C++6.0语言环境;3.每人一台PC机。

三、内容和步骤(一)验证分析程序第一部分选择结构1.由键盘输入三个数,判断能否构成三角形。

分析:判断b+c>a是否成立,若不成立则一定不能构成三角形;若成立则有可能构成三角形,再判断b-c<a是否成立。

因b-c有可能小于0,用b-c<a时不能准确描述两边之差小于第三边,需取绝对值进行分析。

参考程序如下:#include<iostream.h>void main(){double a,b,c,t;cout<<"请输入a的值"<<endl;cin>>a;cout<<"请输入b的值"<<endl;cin>>b;cout<<"请输入c的值"<<endl;cin>>c;t=b-c;if(t<0)t=-t;if(b+c>a){if(t<a)cout<<"能构成三角形"<<endl;elsecout<<"不能构成三角形"<<endl;}elsecout<<"不能构成三角形"<<endl;}思考:● 将程序改为非嵌套的if 语句实现。

实验二 简单数据类型和流程控制

实验二 简单数据类型和流程控制

实验二简单数据类型和流程控制一、实验目的1.掌握Java语言的标识符和保留字,各简单数据类型变量以及有逻辑量意义数据的表示方法以及表示条件的表达式的类型。

2.掌握Java语言中具各种运算符表达式的基本知识。

3.熟练掌握使用if语句进行单分支结构和双分支结构程序设计的基本方法。

4.熟练掌握使用if语句的嵌套及switch语句进行多分支结构程序设计的基本方法。

5.熟练掌握while、do-while和for三种语句组成循环结构的基本方法。

熟练掌握特殊流程控制语句如break,continue,标号语句。

6.熟练掌握一维数组和二维数组的使用二、实验内容与要求1、仔细读下面的JA V A语言源程序,自己给出程序的运行结果public class Ch21{public static void main(String args[]){char x,y,z;x='K';y='\\';z='\117';System.out.print(x);System.out.print(y);System.out.print(z);}}2、仔细读下面的JA V A语言源程序,自己给出程序的运行结果public class Ch22{public static void main(String args[]){boolean x,y,z;int a=12,b=24;x=(a>b);y=(a!=b);z=(a+b==36);System.out.println("x="+x);System.out.println("y="+y);System.out.println("z="+z);}}3、仔细读下面的JA V A语言源程序,自己给出程序的运行结果public class Ch23{public static void main(String args[]) {int x,y,z=0;for (x=1;x<=10;x++)for (y=1;y<10;y++){if (x==5)continue;if (y>5)break;z++;}System.out.println("z="+z);}}4、给定两个浮点数,输出它们的和,差,积。

自控实验报告实验二

自控实验报告实验二

自控实验报告实验二一、实验目的本次自控实验的目的在于深入理解和掌握控制系统的性能指标以及相关参数对系统性能的影响。

通过实验操作和数据分析,提高我们对自控原理的实际应用能力,培养解决实际问题的思维和方法。

二、实验设备本次实验所使用的设备主要包括:计算机一台、自控实验箱一套、示波器一台、信号发生器一台以及相关的连接导线若干。

三、实验原理在本次实验中,我们主要研究的是典型的控制系统,如一阶系统和二阶系统。

一阶系统的传递函数通常表示为 G(s) = K /(Ts + 1),其中 K 为增益,T 为时间常数。

二阶系统的传递函数则可以表示为 G(s) =ωn² /(s²+2ζωn s +ωn²),其中ωn 为无阻尼自然频率,ζ 为阻尼比。

通过改变系统的参数,如增益、时间常数、阻尼比等,观察系统的输出响应,从而分析系统的稳定性、快速性和准确性等性能指标。

四、实验内容与步骤1、一阶系统的阶跃响应实验按照实验电路图连接好实验设备。

设置不同的时间常数 T 和增益 K,通过信号发生器输入阶跃信号。

使用示波器观察并记录系统的输出响应。

2、二阶系统的阶跃响应实验同样按照电路图连接好设备。

改变阻尼比ζ 和无阻尼自然频率ωn,输入阶跃信号。

用示波器记录输出响应。

五、实验数据记录与分析1、一阶系统当时间常数 T = 1s,增益 K = 1 时,系统的输出响应呈现出一定的上升时间和稳态误差。

随着时间的推移,输出逐渐稳定在一个固定值。

当 T 增大为 2s,K 不变时,上升时间明显变长,系统的响应速度变慢,但稳态误差基本不变。

2、二阶系统当阻尼比ζ = 05,无阻尼自然频率ωn = 1rad/s 时,系统的输出响应呈现出较为平稳的过渡过程,没有明显的超调。

当ζ 减小为 02,ωn 不变时,系统出现了较大的超调,调整时间也相应变长。

通过对实验数据的分析,我们可以得出以下结论:对于一阶系统,时间常数 T 越大,系统的响应速度越慢;增益 K 主要影响系统的稳态误差。

程序设计的实验报告答案

程序设计的实验报告答案

程序设计的实验报告答案程序设计的实验报告答案引言:在计算机科学与技术领域,程序设计是一项重要的技能。

通过实验,我们可以学习和掌握不同编程语言的基本概念和技术,提高我们的编程能力。

本文将从实验的角度,探讨程序设计的一些关键问题和解决方案。

实验一:变量和数据类型在程序设计中,变量和数据类型是最基本的概念。

在实验一中,我们需要学习如何声明和使用变量,以及不同的数据类型。

例如,整数、浮点数、字符和字符串等。

对于不同的数据类型,我们需要了解它们的特点和使用方法,以便正确地进行计算和处理。

实验二:控制结构控制结构是程序设计中用于控制程序流程和执行顺序的重要工具。

在实验二中,我们将学习条件语句、循环语句和分支语句等控制结构的使用方法。

通过掌握这些知识,我们可以根据不同的条件和需求,灵活地控制程序的执行路径,实现复杂的逻辑和功能。

实验三:函数和模块化在实际的程序开发中,模块化是一种重要的设计原则。

通过将程序分解为不同的函数模块,可以提高代码的可读性、可维护性和重用性。

在实验三中,我们将学习如何定义和调用函数,以及如何使用参数和返回值传递数据。

通过合理地设计和使用函数,我们可以将程序分解为多个独立的功能模块,提高程序的效率和可靠性。

实验四:数组和数据结构数组是一种常用的数据结构,用于存储和处理大量的数据。

在实验四中,我们将学习如何声明和使用数组,以及如何进行数组的遍历和操作。

此外,我们还将介绍一些常见的数据结构,如栈、队列和链表等。

通过掌握这些知识,我们可以更好地处理和组织数据,实现更复杂的算法和功能。

实验五:文件操作和异常处理在实际的程序开发中,文件操作和异常处理是不可或缺的技能。

在实验五中,我们将学习如何打开、读取和写入文件,以及如何处理文件操作中可能出现的异常。

通过合理地处理异常,我们可以提高程序的健壮性和可靠性,避免程序崩溃或数据丢失的情况。

实验六:面向对象编程面向对象编程是一种常用的编程范式,通过将数据和操作封装在对象中,实现代码的模块化和重用。

程序设计基础 实验报告

程序设计基础 实验报告

《程序设计基础》实验报告学号:20112627姓名:王飞班级:电子信息工程01学院:计算机与信息学院实验一面向过程的简单程序设计1.实验目的要求(1) 使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程,初步了解C++程序的特点。

(2) 掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运算符和表达式的使用。

(3) 掌握赋值语句的使用。

(4) 掌握数据的输入输出方法。

2.实验设备Visual C++ 6.03.实验内容(1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表达式的值。

<1>d c ba x -++源代码:#include <iostream.h>void main(){ floata,b,c,d,x,ycin>>a>>b>>c>>d>>x;y=x+(a+b)/(c-d);cout<<y<<endl;}测试过程和运行结果分析:输入数据为:2 3 4 2 5 运行结果为:7.5 <2>1111+++x x源代码:#include<iostream.h>#include<math.h>void main(){floatx,y;cout<<"x=";cin>>x;y=sqrt(1+1/(x+1/(x+1)));cout<<"y="<<y;}测试过程和运行结果分析:输入数据:2 运行结果为:1.9523<3> sinX+cosX+tan-1X源代码:#include<iostream.h>#include<math.h>void main(){f loatx,y;cout<<"x=";c in>>x;y=sin(x)+cos(x)+1/tan(x);c out<<"y="<<y;}测试过程和运行结果分析:输入数据:2 运行结果:0.035493 <4>e x+y+e x-y源代码:#include<iostream.h>#include<math.h>void main(){floatx,y,z;cout<<"x=";cin>>x;cout<<"y=";cin>>y;z=exp(x+y)+exp(x-y);cout<<"z="<<z;}测试过程和运行结果分析:输入数据:1,2 运行结果:20.4534<5>log10(1+21x)源代码:#include<iostream.h>#include<math.h>void main(){floatx,y;cout<<"x=";cin>>x;y=log10(1+sqrt(1+pow(x,2)));cout<<"y="<<y;}测试过程和运行结果分析:输入数据:1 运行结果:0.382776 <6>22b a -+⎣⎦b a -源代码:#include<iostream.h>#include<math.h>void main(){floata,b,y;cout<<"a=";cin>>a;cout<<"b=";cin>>b; y=fabs(a*a-b*b)+floor(a-b); cout<<"y="<<y;}测试过程和运行结果分析:输入数据:4,5 运行结果:8(2)阅读下列程序,写出(由指定的输入)所产生的运行结果,并指出其功能。

《c语言程序设计》实验指导书答案

《c语言程序设计》实验指导书答案

《c语言程序设计》实验指导书答案《C语言程序设计》实验指导书答案实验一:C语言环境搭建与基本语法1. 问题:如何在计算机上搭建C语言开发环境?答案:搭建C语言开发环境通常需要安装编译器和集成开发环境(IDE)。

常见的编译器有GCC,而IDE如Visual Studio Code、Code::Blocks等。

安装完成后,配置好编译器路径,即可开始编写和编译C语言程序。

2. 问题:C语言的基本数据类型有哪些?答案:C语言的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)以及更复杂的结构体(struct)和联合体(union)等。

3. 问题:如何定义一个变量?答案:定义变量的基本语法是:`类型名变量名;`。

例如,定义一个整型变量a:`int a;`。

4. 问题:如何实现变量的输入和输出?答案:使用`scanf`函数进行输入,使用`printf`函数进行输出。

例如,输入一个整数并输出:`scanf("%d", &a); printf("%d", a);`。

实验二:控制结构1. 问题:C语言中的条件语句有哪些?答案:C语言中的条件语句主要有`if`语句和`switch`语句。

2. 问题:如何使用`if`语句?答案:`if`语句的基本语法是:`if (条件) { 语句 }`。

例如,判断一个数是否为正数:`if (a > 0) { printf("正数"); }`。

3. 问题:如何使用`switch`语句?答案:`switch`语句用于多条件分支选择。

基本语法是:`switch (表达式) { case 常量1: 语句1; break; case 常量2: 语句2; break; ... default: 默认语句; }`。

4. 问题:C语言中的循环语句有哪些?答案:C语言中的循环语句主要有`for`循环、`while`循环和`do-while`循环。

青岛大学计控-实验2 X-Y运动平台数控实验

青岛大学计控-实验2 X-Y运动平台数控实验
Y
结束
第一象限逆弧逐点比较法插补流程图
4.设备驱动程序基础
利用PCI-1220U运动控制卡的动态链接库DLL可以很快开 发出Windows平台下的运动控制系统。PCI-1220U函数库中提 供常用的单轴运动,多轴独立运动控制,多轴插补运动控制, 中断、等功能。基于PC+运动控制卡多轴运动控制系统的软件 开发需由PCI-1220U运动控制卡提供开发库中的三个文件,一 个是静态库ADVMOT.LIB,一个是头文件AdvMotApi.H,一个是 WindowsNT2000使用的文件winio.sys,动态库中的函数已在 头文件AdvMotApi.H中有声明,用户可以直接调用其中的函数。 使用时需要将库文件、头文件正确配置。配置方法一种是将 库文件、头文件添加到工程所在的目录中,并将库文件的名 称填写到开发软件(如VC)的工程配置中;另一种是将头文 件所在的目录在工程配置中设置好,库文件的名称填写到工 程配置。
(1)逐点比较法直线插补
从坐标原点出发,当Fm≧0时,沿+X方向走一步,当 Fm<0,沿+Y方向走一步,当两方向所走的步数与终点坐标 (Xe,Ye)相等时,停止插补。
插补步骤:按偏差判别(决定下一步的走向)、坐标进给 (走一步)、偏差计算(比较一次)和终点判别(插补结束 判断)四个节拍来实现一次插补过程。
PCI-1220运动控制卡:
PCI-1220是一款两轴步进、 伺服电机控制卡。该卡能够提 供各种运动控制功能,如单轴 点动、连续运动、两轴直线, 圆弧插补,T/S曲线加/减速等。 关于进一步的应用,提供了 Windows 动态链接库和丰富直 观的例程,可以减少编程的工 作量。
PCI-1220
步进电机驱动器:
在“在此函数里编写插补程序,请勿改动其他程序”这句后面 添加插补程序,完成直线和圆弧插补。完成逐点比较法插补需 要调用PCI1220板卡提供的DLL库里的 Acm_GpMoveDirectRel(HAND GroupHandle, PF64 DistanceArray, PU32 ArrayElements)函数完成插补。HAND GroupHandle代表轴组的句柄,即我们这次用的X,Y轴组成的轴 组,PF64 DistanceArray是指轴组走的相对距离,比如我们赋 给它的值是pulse[0]=1, pulse[1]=0,那么X轴相应走一步; 如果pulse[0]=0, pulse[1]=1;那么Y轴走一步。 PU32 ArrayElements指轴组里有的轴数目,如本次实验中有X轴 和Y轴两个轴。这里,我们只需要给PF64 DistanceArray赋值编 写插补程序即可。

控制结构程序设计实验报告

控制结构程序设计实验报告

《测绘程序设计()》上机实验报告(Visual C++.Net)班级:学号:姓名:序号:二零一零年三月实验2 控制结构程序设计一、实验目的掌握VC++.net语言的基本语法;理解顺序结构、选择结构和循环结构程序设计的特点及应用;掌握对基于对话框的MFC应用程序设计方法;掌握一些简单算法二、实验内容1)编写后方交会的程序设计思路:通过反正切求得的角度范围是“-90—90”,而方位角的取值范围是“0—360”,因此需要通过方位角的象限来进行转换。

还有一点不容忽视,反正切函数求出的角度是弧度,而需要得到的方位角显示的是度、分、秒。

因此需要转换。

当dx>0时dy>0,nQuadrant=1,Rad=atan(dy/dx)*180/PIdy<0, nQuadrant==4, Rad=(atan(dy/dx)+2*PI)*180/PIdy=0, Rad=0;当dx<0时,dy>0,nQuadrant=2,Rad=(atan(dy/dx)+PI)*180/PI dy<0, nQuadrant=3, Rad=(atan(dy/dx)+PI)*180/PIdy=0,Rad=180当dx=0时dy>0,Rad=90dy<0,Rad=270dy=0,则两点重合,方位角不存在了计算出弧度(Rad)后,再将其转化为度分秒输出就完成了。

界面设计:界面由5个文本框、5个静态框和2个命令按钮组成,需要完成输入2点坐标,输出方位角的功能其中文本控件属性设置为:主要代码:文件名TriAzimuthDlg.cpp#include"stdafx.h"#include"TriAzimuth.h"#include"TriAzimuthDlg.h"#include"math.h"…….void CTriAzimuthDlg::OnBnClickedCancel(){// TODO: 在此添加控件通知处理程序代码OnCancel();}const double PI=3.1415926;void CTriAzimuthDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码//OnOK();}//将弧度转化成度分秒形式double Rad_To_Dms(double Rad){double dDeg,dDms; //十进制角度及度分秒格式角度,控制变量//用于存放度分秒三个值的变量int iDegree,iMin;double dSec;double dTmp;dDeg=Rad*180/PI; //弧度转化为度//度转化成度分秒iDegree=int(dDeg);dTmp=(dDeg-iDegree)*60;iMin=int(dTmp);dSec=(dTmp-iMin)*60;dDms=iDegree+double(iMin)/100+dSec/10000;return dDms;}void CTriAzimuthDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);double dx,dy;double Rad; //弧度,控制变量dx=X2-X1;dy=Y2-Y1;if(dx>0){if(dy>0)Rad=atan(dy/dx); //A为第一象限角else if(dy<0)Rad=atan(dy/dx)+2*PI; //A为第四象限角elseRad=0; //A=0度}else if(dx<0){if(dy>0)Rad=atan(dy/dx)+PI; //A为第二象限角else if(dy<0)Rad=atan(dy/dx)+PI; //A为第三象限角elseRad=180; //A=180度}else{if(dy>0)Rad=90; //A=90度else if(dy<0)Rad=270; //A=270度elseMessageBox(_T("两点重合,无方位角"));}A=Rad_To_Dms(Rad); //将弧度转化为度分秒形式UpdateData(FALSE);}运行结果:输入两点坐标之后,单击计算,可得方位角,以上方位角表示的是45°00′0000276342″2)空间直角坐标系与大地坐标系的相互转换设计思路:大地坐标系转化为笛卡尔坐标系:首先通过已知的长半径a和扁率α求出偏心率e和卯酉圈曲率半径N;再根据下列公式可求得笛卡尔坐标。

自动控制原理实验——二阶系统的动态过程分析

自动控制原理实验——二阶系统的动态过程分析

⾃动控制原理实验——⼆阶系统的动态过程分析实验⼆⼆阶系统的动态过程分析⼀、实验⽬的1. 掌握⼆阶控制系统的电路模拟⽅法及其动态性能指标的测试技术。

2. 定量分析⼆阶系统的阻尼⽐ξ和⽆阻尼⾃然频率n ω对系统动态性能的影响。

3. 加深理解“线性系统的稳定性只与其结构和参数有关,⽽与外作⽤⽆关”的性质。

4. 了解和学习⼆阶控制系统及其阶跃响应的Matlab 仿真和Simulink 实现⽅法。

⼆、实验内容1. 分析典型⼆阶系统()G s 的ξ和n ω变化时,对系统的阶跃响应的影响。

2. ⽤实验的⽅法求解以下问题:设控制系统结构图如图2.1所⽰,若要求系统具有性能:%20%,1,p p t s σσ===试确定系统参数K 和τ,并计算单位阶跃响应的特征量d t ,r t 和s t 。

图2.1 控制系统的结构图3. ⽤实验的⽅法求解以下问题:设控制系统结构图如图2.2所⽰。

图中,输⼊信号()r t t θ=,放⼤器增益AK 分别取13.5,200和1500。

试分别写出系统的误差响应表达式,并估算其性能指标。

图2.2 控制系统的结构图三、实验原理任何⼀个给定的线性控制系统,都可以分解为若⼲个典型环节的组合。

将每个典型环节的模拟电路按系统的⽅块图连接起来,就得到控制系统的模拟电路图。

通常,⼆阶控制系统222()2nn nG s s ωξωω=++可以分解为⼀个⽐例环节、⼀个惯性环节和⼀个积分环节,其结构原理如图 2.3所⽰,对应的模拟电路图如图2.4所⽰。

图2.3 ⼆阶系统的结构原理图图2.4 ⼆阶系统的模拟电路原理图图2.4中:()(),()()r c u t r t u t c t ==-。

⽐例常数(增益系数)21R K R =,惯性时间常数131T R C =,积分时间常数242T R C =。

其闭环传递函数为:12221112()1()(1)c r KU s TT K K U s T s T s K s s T TT ==++++ (2.1)⼜:⼆阶控制系统的特性由两个参数来描述,即系统的阻尼⽐ξ和⽆阻尼⾃然频率n ω。

自控原理实验二

自控原理实验二

实验二 二阶系统的阶跃响应一、实验目的1. 通过实验了解参数ζ(阻尼比)、n ω(阻尼自然频率)的变化对二阶系统动态性能的影响;2. 掌握二阶系统动态性能的测试方法。

二、实验内容1. 观测二阶系统的阻尼比分别在0<ζ<1,ζ=1和ζ>1三种情况下的单位阶跃响应曲线;2. 调节二阶系统的开环增益K ,使系统的阻尼比21=ζ,测量此时系统的超调量p δ、调节时间t s (Δ= ±0.05);3. ζ为一定时,观测系统在不同n ω时的响应曲线。

三、实验原理1. 二阶系统的瞬态响应用二阶常微分方程描述的系统,称为二阶系统,其标准形式的闭环传递函数为2222)()(n n n S S S R S C ωζωω++= (2-1) 闭环特征方程:0222=++n n S ωζω 其解 122,1-±-=ζωζωn n S ,针对不同的ζ值,特征根会出现下列三种情况:1)0<ζ<1(欠阻尼),22,11ζωζω-±-=n n j S此时,系统的单位阶跃响应呈振荡衰减形式,其曲线如图2-1的(a)所示。

它的数学表达式为: 式中21ζωω-=n d ,ζζβ211-=-tg 。

2)1=ζ(临界阻尼)n S ω-=2,1此时,系统的单位阶跃响应是一条单调上升的指数曲线,如图2-1中的(b)所示。

3)1>ζ(过阻尼),122,1-±-=ζωζωn n S此时系统有二个相异实根,它的单位阶跃响应曲线如图2-1的(c)所示。

(a) 欠阻尼(0<ζ<1) (b)临界阻尼(1=ζ) (c)过阻尼(1>ζ)图2-1 二阶系统的动态响应曲线虽然当ζ=1或ζ>1时,系统的阶跃响应无超调产生,但这种响应的动态过程太缓慢,故控制工程上常采用欠阻尼的二阶系统,一般取ζ=0.6~0.7,此时系统的动态响应过程不仅快速,而且超调量也小。

2. 二阶系统的典型结构典型的二阶系统结构方框图和模拟电路图如下图所示。

实验报告

实验报告

实验二 实验名称: 实验名称:数组的应用 实验内容: 实验内容: 个学生, 门课程, 有n个学生,每人考 门课程,要求实现: 个学生 每人考m门课程 要求实现: 1)找出各科成绩最高的学生号和课程号; 找出各科成绩最高的学生号和课程号; 找出各科成绩最高的学生号和课程号 2)找出有不及格课程的学生号及其各门课程的成绩; 找出有不及格课程的学生号及其各门课程的成绩; 找出有不及格课程的学生号及其各门课程的成绩 3)求全部学生全部课程的总平均分。 求全部学生全部课程的总平均分。 求全部学生全部课程的总平均分 实验类别:综合性 实验类别: 请于第16周上机课结束前上交实验报告及程序 周上机课结束前上交实验报告及程序。 请于第 周上机课结束前上交数的应用 实验内容:设计一个菜单程序,实现: 实验内容:设计一个菜单程序,实现: 1)由计算机随机出 道四则运算题,用户答题; 由计算机随机出n道四则运算题 由计算机随机出 道四则运算题,用户答题; 2)用户出题 输入带括号的整数四则混合运算, 2)用户出题:输入带括号的整数四则混合运算,计 用户出题: 算机答题(要求用递归算法实现) 算机答题(要求用递归算法实现) 3)退出 退出 实验类别: 实验类别:设计研究性 请于第18周上机课结束前上交实验报告及程序 周上机课结束前上交实验报告及程序。 请于第 周上机课结束前上交实验报告及程序。
实验一 实验名称: 实验名称:循环控制结构编程 实验内容: 实验内容:安排轮休 某公司有7位保安 位保安: 、 、 、 、 、 、 。 某公司有 位保安:A、B、C、D、E、F、G。为 了工作需要,每人每周只能轮休一天。考虑每个人 了工作需要,每人每周只能轮休一天。 的特殊情形,让他们先选择自己希望哪一天轮休。 的特殊情形,让他们先选择自己希望哪一天轮休。 他们的选择如下: 他们的选择如下: A:周二,周四 周二, B:周一,周六 C:周三,周日 周一, 周三, 周二 周一 周三 D:周五 E:周一,周四,周六 周一, 周五 周一 周四, F:周二,周五 周二, G:周三,周六,周日 周三, 周二 周三 周六, 请用C语言编写程序,安排一个轮休表,让他们都 请用 语言编写程序,安排一个轮休表, 语言编写程序 满意。 满意。 实验类别: 实验类别:综合性 请于第14周上机课结束前上交实验报告及程序 周上机课结束前上交实验报告及程序。 请于第 周上机课结束前上交实验报告及程序。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
514229 832040 1346269 2178309
3524578 5702887 9227465 14930352
24157817 39088169 63245986102334155
3.求出100~200之间的所有素数,输出时一行打印五个素数。
分析:判断一个数a是否为素数,只需将它整除以2~ (取整)即可,如果都不能整除,则a就是素数。
cout<<endl;
f1=f1+f2;
f2=f2+f1;
}
}
例中“if”语句的作用是使在一行中输出4个数。
运行结果:
1 1 2 3
5 8 13 21
34 55 89 144
233 377 610 987
1597 2584 4181 6765
10946 17711 28657 46368
75025 121393 196418 317811
#include <iostream.h>
void main()
{
int i,n34;Input an integer:";
cin>>n;
sum=0;
i=1;
while (i<=n)
{
sum=sum+i;
i++;
}
cout<<"sum="<<sum<<endl;
}
运行结果:
Input an integer:5
图4-3数字金字塔
2.输入一行字符,分别统计出其中英文字母、空格、数字字符、其它字符及单词的个数。
3.设有一个数列,它的前四项为0、0、2、5,以后每项分别是其前四项之和,编程求此数列的前20项。
4.求出1~599中能被3整除,且至少有一位数字为5的所有整数。如15、51、513均是满足条件的整数。
2000≤a<5000r=8%
a≥5000r=12%
输入一个奖金数,求税率、应交税款及实得奖金数。
3.输入某一年的年份和月份,计算该月的天数。
提示
(1)一年中的大月(1月、3月、5月、7月、8月、10月、12月),每月的天数为31天;
(2)一年中的小月(4月、6月、9月、11月),每月的天数为30天;
sum=15
2.裴波那契数列的前几个数为1,1,2,3,5,8,……,其规律为:
F1=1(n=1)
F2=1(n=2)
Fn=Fn-1+Fn-2(n≥3)
编写程序求此数列的前面40个数。
分析:可设两个变量f1和f2,它们的初值为f1=1,即数列的第1项,f2=1,即数列的第2项,用一个循环结构来求数列的前40项,每次处理两项,所以共循环20次,进入循环后,首先输出f1、f2,然后令f1=f1+f2,即可求得第3项,再令f2=f2+f1,注意此时的f1已经是第3项了,所以可求得第4项;进入下一次循环时,首先输出第3、4项,然后按上述方法求得第5、6项,以此类推即可求得前40项。
解:
#include <iostream.h>
#include <iomanip.h>
void main()
{
long int f1,f2;
int i;
f1=1;f2=1;
for (i=1;i<=20;i++)
{
cout<<setw(12)<<f1<<setw(12)<<f2;
if (i%2==0)
分析:
判断b+c>a是否成立,若不成立则一定不能构成三角形;若成立则有可能构成三角形,再判断b-c<a是否成立。因b-c有可能小于0,用b-c<a时不能准确描述两边之差小于第三边,需取绝对值进行分析。
参考程序如下:
#include<iostream.h>
void main()
{
double a,b,c,t;
}
else
cout<<"不能构成三角形"<<endl;
}
思考:
将程序改为非嵌套的if语句实现。
在程序中增加语句,使其在能构成三角形的情况下进一步判断三角形的类型(直角、钝角、锐角三角形)。
提示:三角形的类型由最长边所对的角决定。假定三角形最长边为c,其所对的角为θ。其他两边为a、b。计算公式如下:
例如,
151 157 163 167 173
179 181 191 193 197
199
(二)完成实验项目
1.设计一个程序,判断从键盘输入的整数的正负性和奇偶性。
2.编写程序,实现下列函数功能:
3.已知奖金税率如下:(a代表奖金,r代表税率)
a<500(元)r=0%
500≤a<1000r=3%
1000≤a<2000r=5%
解:本例使用了if-else if语句进行多重判断。参考程序如下:
#include<iostream.h>
void main()
{
double m,p;
cout<<"输入购物款:";
cin>>m;
if(m<1000)p=m;
else if (m<2000)p=0.9*m;
else if(m<3000) p=0.8*m;
cout<<"Input x:";
cin>>x;
if (x>=0)
if (x>=10)
y=x*x*x;
else
y=x*x-5;
else
y=x+1;
cout<<"y="<<y<<endl;
}
运行结果:
Input x:-3
y=-2
第二部分循环结构
1.计算:S=1+2+3+4+…+n。
解:
程序流程图如图4.1所示,程序如下:
break;
if (i>k)//若i>k,则i为素数
{
cout<<setw(12)<<a;//输出素数
n=n+1;//对素数统计个数
if (n%5==0)
cout<<endl;
}
}
cout<<endl;
}
程序运行后,输出,:
101 103 107 109 113
127 131 137 139 149
当c2=a2+b2时,为直角三角形;
当c2>a2+b2时,为钝角三角形;
当c2<a2+b2时,为锐角三角形。
2.某商店“五·一”长假期间购物打折。规则如下:
若每位顾客一次购物,
①满1000元,打九折;
②满2000元,打八折;
③满3000元,打七折;
④满4000元,打六折;
⑤5000元,打五折;
编写程序,输入购物款,输出实收款。
else if(m<4000) p=0.7*m;
else if(m<5000) p=0.6*m;
else p=0.5*m;
cout<<"实收款:"<<p<<endl;
}
3.有下列分段函数:
编一程序,输入x,输出y的值。
解:程序如下:
#include <iostream.h>
void main()
{
float x,y;
解:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main(void)
{
int a,k,i,n;
n=0;
for (a=100;a<=200;a++)
{
k=sqrt(a);
for (i=2;i<=k;i++)
if (a%i==0)
6.掌握分支与循环综合程序的编写方法;
7.学习并熟悉break、continue的区别与使用。
8.学会常用数值与图形的编程方法。
二、实验设备及分组
1.Windows2000以上操作系统;
2.Visual C++6.0语言环境;
3.每人一台PC机。
三、内容和步骤
(一)验证分析程序
第一部分选择结构
1.由键盘输入三个数,判断能否构成三角形。
(3)对于2月,则要判断该年是平年还是闰年,平年的2月为28天,闰年的2月为29天。
某年符合下面两个条件之一就是闰年:
①年份能被400整除;
②年份能被4整除,但不能被100整除。
4.输入平面直角坐标系中一点的坐标值(x,y),判断该点是在那一个象限中或那一条坐标轴上。
第二部分循环结构
1.编程序打印一个如图4-3所示的数字金字塔:
实验
一、目的和要求
1.掌握Visual C++6.0集成环境中的单步执行;
2.熟悉if与switch语句的格式、执行过程、使用方法及典型案例;
3.学会使用选择结构解决一般的实际问题,能编写简单的应用程序。
4.掌握循环结构while、do-while、for等语句格式、执行过程、使用方法及典型案例。
5.学习循环结构的嵌套使用。
cout<<"请输入a的值"<<endl;
相关文档
最新文档