实验五_顺序、分支结构程序设计
c语言程序设计课程教学大纲(计算机科学与技术)
甘肃民族师范学院计算机专业课程教学大纲C语言程序设计一、说明(一)课程性质必修课(二)教学目的本课程是为计算机类等本、专科学生开设的,以培养学生程序设计能力为目的的专业基础课,是学习其他专业课的基础,同时也是第一门高级语言程序设计课。
本课程的任务是结合一般数值计算向学生介绍计算机程序设计的基本知识,使学生掌握C语言的基本语法,掌握程序设计的基本思想、基本概念和基本方法和技巧,并能运用所学的知识和技能对一般问题进行分析和程序设计,编制出高效的C 语言应用程序;同时了解进行科学计算的一般思路,培养应用计算机解决和处理实际问题的思维方法与基本能力,为进一步学习和应用计算机打下基础。
(三)教学内容计算机程序语言发展史,结构化程序设计的三种基本结构,函数,数组,指针,文件。
(四)教学时数90学时,60理论,30上机(五)教学方式多媒体授课二、本文第一章C语言程序设计基础教学要点:C程序的基本结构。
上机环境,进行简单C程序的编写。
教学时数:4学时(理论3学时,上机1学时)教学内容:第一节概述程序设计语言的发展。
C程序的基本结构。
第二节开发环境上机环境,进行简单C程序的编写。
考核要求:1.掌握编写C语言程序的基本步骤。
2. 掌握上机调试过程。
第二章数据类型、运算符与表达式教学要点:数据类型。
表达式。
输入输出函数。
教学时数:12学时(理论8学时,上机4学时)教学内容:第一节数据类型整型、实型、字符型、枚举型、构造类型、指针。
第二节常量与变量第三节运算符与表达式算术运算符及表达式、关系运算符及表达式、逻辑运算符及表达式、逗号运算符及表达式、条件运算符及表达式、赋值运算符及表达式。
第四节标准输入/输出scanf()函数、printf()函数。
第五节数学函数数学库头文件<math.h>。
第六节随机数发生器函数rand()和srand()函数,对应的头文件“stdlib.h”。
考核要求:1.理解数据结构、常量、变量的概念;2.掌握各种运算符的优先级及结合方向;3.熟练掌握数据的输入、输出方法;4.了解其他数学函数及随机函数的使用方法。
实验5
实验五第3章MATLAB程序设计第二节程序控制结构程序控制结构有三种:顺序结构、旋择结构、循环结构.任何复杂的程序都可以由这三种基本结构构成.Matlab提供了实现控制结构的语句,利用这些语句可以编写解决实际问题的程序.一、顺序结构顺序结构是指按照程序中语句的排列顺序从上到下依次执行,直到程序的最后一个语句如例1的qiu文件和例2的dd1文件.这是最简单的一种程序结构.一般涉及数据的输入、计算或处理、数据的输出等内容.1. 数据的输入通过input命令来接收从终端输入的内容,它也可以显示文本和提示.命令集14 输入命令input(out ,in)在屏幕上显示出字符串out的文本并等待终端的输入.如果变量in是's',则输入的内容以字符串的形式进行保存,通常MATL AB在保存前要尽可能地求出表达式的值.如果使用格式控制符号如'\n',字符串out可以是若干行.2. 数据的输出可以通过简单地输入变量的名字来显示数字矩阵或者字符串向量的内容,结果将显示出变量的名字和内容.另一种显示变量的值就是使用命令disp.使用它只显示出变量的内容,这是有用的,特别是在字符串的应用中.命令集15显示命令disp(A)显示矩阵A的内容,如果A是字符串,则显示出它的文本.二、循环结构循环结构是按照给定的条件,重复执行指定的语句.Matlab用于实现循环结构的语句有for — end语句和while — end语句.1.for —end语句for-end语句的格式为:for 循环变量=表达式1 : 表达式2 : 表达式3循环体语句end其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值.步长为1时,表达式2可以省略.循环语句应用时应注意:● 循环语句可以嵌套使用;● 不能在 for — end 循环体内改变循环变量的值; ● 为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免 for — end 循环的使用,如例8;● 如果预先就知道循环的次数,则可以采用 for — end 循环;否则,如果预先无法确定循环的次数,则可以使用 while — end 循环.2. while — end 循环while-end 语句的一般格式为:while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环.■例1 使用while-end 结构计算1+2+3+…+100 . 解:■例2 计算 Matlab 中 eps 值 (exp1.m) 解:s=0;for i=1:100 s=s+i; end ss=0; i=1;while i<=100 s=s+i; i=i+1; end snum=0; EPS=1; while (1+EPS)>1 EPS=EPS/2; num=num+1; endEPS,num三、选择结构选择结构是根据给定的条件成立或不成立,分别执行不同的语句.Matlab 用于实现选择结构的语句有条件语句:if –end 和 开关语句:switch-end .1.单分支结构 if —end 语句 2.双分支结构 if —else —end 语句 if-end 语句的格式为: if-else-end 语句的格式为:3.多分支结构 if — elseif — else — end 语句 if — elseif — else — end 语句的格式为:if 条件表达式 语句组 endif 条件表达式 语句组1 else语句组2 endif 条件表达式1 语句组1 elseif 条件表达式 2 语句组2 ... ...elseif 条件表达式 m 语句组m else 语句组end■例3求函数1;00;1;x y x x -<⎧⎪= =0⎨⎪ >⎩ ,输入x 值,输出y 值.解:■例4一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数.输出全部水仙花数.解:程序如下运行结果:153 370 371 407function y=fuhao(x) if x<0 y=-1; elseif x==0 y=0; else y=1; endA=[];for m=100:999m1=fix(m/100); %求m 的百位数字 m2=rem(fix(m/10),10); %求m 的十位数字 m3=rem(m,10); %求m 的个位数字 if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 A=[A,m];endend disp(A)4. switch-end 语句根据表达式的不同取值,分别执行不同的语句.其格式如下:■关于 switch-end 语句的几点注解:● Matlab 首先计算表达式的值,然后将它依次与各个case 指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出 switch-end 结构● 如果所有的比较结果都为假,则执行 otherwise 后面的语句组,然后跳出 switch-end 结构 ● otherwise 指令可以不出现● switch 后面的表达式的值可以是一个标量或字符串 ● case 指令后的检测值超过一个时,应用{}括起来switch 表达式 case 值1 语句组1 case 值2 语句组2 ... ... case 值m 语句组m otherwise 语句组n end■例5 阅读程序method=input('请输入方法名:')switch methodcase {'linear','bilinear'}disp('Method is linear')case 'cubic'disp('Method is cubic')case 'nearest'disp('Method is nearest')otherwisedisp('Unknown method.')end■例6用switch-end语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设:90分以上为…A‟, 80~89分为…B‟,70~79分为…C‟,60~69分为…D‟,60分以下为…E‟.function sctole(score)grade=fix(score/10);switch gradecase {10,9}grade='A'case 8grade='B'case 7grade='C'case 6grade='D'otherwisegrade='E'end四、其他流程控制语句●break语句●continue语句●return语句●try语句●echo命令●keyboard命令●pause命令1.break和continue语句与循环结构相关的语句还有break语句和continue语句.它们一般与if语句配合使用.break语句用于终止循环的执行.当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句后的下一语句.continue语句控制跳过循环体中的某些语句.当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环. ■例7求[100,200]之间第一个能被21整除的整数.for n=100:200if rem(n,21)~=0continueendbreakendn for n=100:200if rem(n,21)==0breakendendn2.try语句语句格式为:try语句组1catch语句组2endtry语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2.这种试探性执行语句是其他高级语言所没有的.■例8矩阵乘法运算要求两矩阵的维数相容,否则会出错.先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘.function C=rc(A,B)%A,B为矩阵tryC=A*B;catchC=A.*B;endlasterr %显示出错原因3.请求键盘输入命令keyboard暂停运行程序并处于等待键盘输入状态(便于调试及程序运行中修改变量),键入“return”程序继续运行.如运行如下:4. echo 命令(在命令窗口,程序调用前使用)一般情况下,M 文件执行时,文件中的命令不会显示在命令窗口.echo 命令可使文件命令在执行时可见.这对程序的调试及演示很有用.对命令文件和函数文件,echo 的作用稍微有些不同.●对命令文件,其格式如下:echo on 打开命令文件的回应命令 echo off 关闭回应命令●对函数文件,其格式如下:echo file on 使指定的file 文件的命令在执行中被显示出来 echo file off 关闭指定文件的命令在执行中的回应function y=f(x) keyboardy=(5*x-6)/((x-3)*(x-3)+2);>> f K>> x=4; K>> return ans = 4.6667>> y=f(4) K>> return y = 4.6667。
matlab实验五循环结构程序设计实验报告
实验五:循环结构程序设计实验报告一、实验目的1. 了解循环结构的基本概念和原理;2. 掌握使用Matlab进行循环结构程序设计的方法;3. 提高编程能力和问题解决能力。
二、实验内容1. 学习while循环和for循环的基本语法和用法;2. 设计并编写一些基于循环结构的Matlab程序;3. 分析程序运行结果并进行总结。
三、实验原理循环结构是程序设计中的重要组成部分,它可以让一段代码重复执行多次,从而简化程序的编写。
在Matlab中,循环结构主要有while 循环和for循环两种形式。
while循环在执行循环体前判断条件是否为真,只有条件为真时才会执行循环体;for循环则是指定循环的次数,每次迭代时执行一次循环体。
四、实验步骤与结果1. 编写一个使用while循环的程序,实现1~100的累加。
程序代码如下:```matlabsum = 0;i = 1;while i <= 100sum = sum + i;i = i + 1;enddisp(sum);```运行程序后,得到的结果为5050。
2. 编写一个使用for循环的程序,实现1~10的阶乘。
程序代码如下:```matlabresult = 1;for i = 1:10result = result * i;enddisp(result);```运行程序后,得到的结果为xxx。
五、实验总结通过本次实验,我深刻理解了循环结构的基本概念和原理,掌握了使用Matlab进行循环结构程序设计的方法。
在编写循环程序的过程中,我发现循环结构可以大大简化程序的编写,并且能够高效地处理重复性任务。
我也进一步提高了自己的编程能力和问题解决能力。
本次实验使我对Matlab中的循环结构有了更加深入的了解,我相信这对我的编程能力和日后的学习工作都将大有裨益。
六、实验感想和改进意见通过本次实验,我深刻认识到循环结构在程序设计中的重要性和灵活性。
循环结构能够帮助我们简化程序的编写,提高代码的重用性和可读性,因此在实际的程序设计中,合理地运用循环结构能够大大提高程序的效率和逻辑清晰度。
实验报告1
实验报告1实验五正负数据分流程序设计一、实验目的1.掌握汇编语言程序的编写方法。
2.学习汇编语言程序的编辑、组装、连接、调试和运行的全过程。
3.掌握分支程序结构和循环程序结构的编程二、实验内容使用缓冲区的第一个地址设置内存缓冲区,以存储16个数字(字节)。
尝试将数据块中的正数(包括0)存储到起始地址为正的缓冲区中,将负数存储到起始地址为负的缓冲区中。
数据为F5H、46h、78h、4f、0bch、0dah、0abh、02h、12h、56h、0d5h、0ach、34h、89h、45h、0c3h。
三、实验步骤1.输入源程序,建立asm文件。
程序的编辑d:\\masm5>edit文件名.asm2.使用MASM宏汇编程序汇编源文件并生成目标文件obj。
程序汇编d:\\masm5>masm文件名;3.使用链接连接程序形成执行文件exe。
程序链接D:\\masm5>链接文件名;4.实施程序。
程序运行D:\\masm5>文件名5程序调试D:\\masm5>调试文件名Exe(或D:>debugd:\\masm5\\filename.Exe)四、思考题1.使用调试软件(.EXE文件形式)调试程序。
不执行任何命令,就可以使用D命令(dds:0)查看数据段的原始数据吗?为什么?2.如果汇编语言源程序通过汇编和链接,是否正确?为什么?5、实验报告1.画出程序流程图。
2.写出源程序清单。
数据段bufferdb0f5h,46h,78h,4fh,0bch,0dah,0abh,02h,12h,56h,0d5h,0ach,34h,89h,45h,0c3h plusdb16dup(?)minusdb16dup(?)dataendscodesegment假设:代码,ds:datastart:movax,datamovds,axmovcx,16movsi,offsetbufferleadi,plusleabx,minuslop:moval,[si]testal,80hjnzl1莫夫[di],艾尔incdijmpagainl1:mov[bx],alincbxjmpagain:印西looplopmovah,4chint21hcodeendsendstart3.回答思考问题1.首先用t命令顺序执行用户程序的前几条直到寄存器ds/es已预置为用户的数据段。
程序设计基础(C语言)实验报告
程序设计基础(C语言)实验报告课程名称:程序设计基础(C语言)姓名:学号:年级:专业:指导教师:实验地点:目录实验一顺序结构程序设计实验二选择结构程序设计实验三循环结构程序设计实验四数组及其应用实验五函数及其应用实验六指针及其应用实验(一)顺序结构程序设计一、实验目的1.掌握顺序结构程序的设计思想,领会顺序结构的程序执行时顺次执行的特点。
2.掌握赋值语句的特点、功能。
3.掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
4.掌握编写程序和调试程序的方法。
二、实验内容及要求1.用下面的scanf函数输入数据使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。
#include <stdio.h>int main(){int a,b;float x,y;char c1,c2;scanf("a=%db=%d",&a,&b);scanf("%f%e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%.1f,y=%.2f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);return 0;}运行时分别按以下方式输入数据,观察输出结果,分析原因(□表示空格,↙表示回车)。
(1)a=3,b=7,x=8.5,y=71.82,A,a↙(2)a=3□b=7□x=8.5□y=71.82□A□a↙(3)a=3□b=7□8.5□71.82□A□a↙(4)a=3□b=7□8.5□71.82Aa↙(5)3□7□8.5□71.82Aa↙(6)a=3□b=7↙8.5□71.82↙A↙a↙(7)a=3□b=7↙8.5□71.82↙Aa↙(8)a=3□b=7↙8.5□71.82Aa↙通过此题,总结输入数据的规律和容易出错的地方。
C语言实验学生版(最新版)
实验一:简单的C程序设计(2学时)一、实验方式:一人一机二、实验目的:1、了解C语言程序的编译环境和编写过程。
2、掌握C语言程序在Visual C++ 6.0环境下的调试过程。
3、初步了解C语言程序的特点。
4、掌握C语言的数据类型。
三、实验内容:1、计算两个数x和y的和。
(教材P5【例1-2】)2、从键盘输入华氏温度h,输出摄氏温度c(摄氏温度=5/9*(华氏温度-32))。
(实验教材P18)3、给定圆环,输入内圆环半径r1、外圆环半径r2,求出圆环的面积。
(实验教材P27)4、从键盘上输入两个整数x、y,实现两个数的交换,并求出最大值、最小值和两个数的平均值。
(实验教材P21)5、输入并运行以下程序,分析运行结果。
(实验教材P27)#include <stdio.h>void main( ){int i,j;i=8; j=10;printf(“%d,%d\n”,++i,++j);i=8; j=10;printf(“%d,%d\n”,i++,j++);i=8; j=10;printf(“%d,%d\n”,++i,i);i=8; j=10;printf(“%d,%d\n”,i++,i);}四、实验程序代码:五、实验运行结果(截图):实验二:顺序结构程序设计(2学时)一、实验方式:一人一机二、实验目的:1、掌握标识符、常量、变量的定义及使用。
2、掌握C语言的常用运算符及表达式。
3、掌握单分支if语句的使用方法。
4、掌握双分支if-else语句的使用方法。
三、实验内容:1、从键盘输入一个3位整数,请输出该数的逆序数。
(实验教材P27)2、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。
(实验教材P27)3、判断箱子是正方体还是长方体。
(实验教材P33)4、有一函数: x (x<1)y= 2x-1 (1≤x<10)3x-11 (x≥10) 编写程序,输入x值,输出y值。
顺序结构程序设计实验报告
顺序结构程序设计实验报告顺序结构程序设计实验报告引言顺序结构是计算机程序设计中最基础的结构之一,它按照代码的书写顺序依次执行,没有条件判断或循环控制。
本实验旨在通过实践,加深对顺序结构的理解,并掌握其在程序设计中的应用。
实验目的通过编写程序,实现以下目标:1. 熟悉编程环境的搭建和基本操作;2. 掌握顺序结构的概念和使用方法;3. 运用顺序结构设计一个简单的计算器。
实验过程1. 编程环境搭建在实验开始前,我们先搭建编程环境。
选择一款编程软件,如Python或C++,并安装到计算机上。
打开软件后,创建一个新的项目或文件,以便开始编写代码。
2. 顺序结构的实现顺序结构的实现非常简单,只需按照代码的书写顺序编写即可。
在本实验中,我们将使用Python语言来实现顺序结构。
首先,我们定义两个变量a和b,用于存储用户输入的两个数字。
然后,我们使用input()函数来获取用户输入,并将其转换为整数类型。
代码如下:```a = int(input("请输入第一个数字:"))b = int(input("请输入第二个数字:"))```接下来,我们定义一个变量sum,用于存储两个数字的和。
通过将a和b相加,将结果赋值给sum变量。
代码如下:```sum = a + b```最后,我们使用print()函数将计算结果输出到屏幕上,让用户可以看到最终的结果。
代码如下:```print("两个数字的和为:", sum)```3. 编译和运行程序在编写完代码后,我们需要将其编译并运行。
编译的过程会将代码转换为计算机可以理解和执行的形式。
在Python中,不需要显式地进行编译,可以直接运行代码。
点击运行按钮或使用命令行工具运行程序,即可看到程序输出的结果。
根据用户输入的不同数字,程序将计算并输出它们的和。
实验结果经过编译和运行,我们成功实现了一个简单的计算器。
用户可以输入任意两个数字,程序会将它们相加并输出结果。
实验五 循环结构程序设计
实验五循环结构程序设计一、实验目的(1)掌握使用while语句,do-while语句和for语句实现循环的方法。
(2)掌握在循环结构中使用break与continue语句的方法。
(3)掌握多重循环的使用方法。
二、实验步骤、数据记录及处理(1)编写程序输出半径为1到15的圆的面积,若面积在30到100之间则予以输出,否则,不予输出。
程序代码:#include<stdio.h>int main(){int i;float area;for(i=1;i<=15;i++){area=3.14*i*i;if(area<30) continue;else if(area>100) break;printf("半径为%d的圆的面积为%6.2f\n",i,area);}return 0;}运行结果:(2)输入一个正整数x(可以是1-9位的正整数),将其转换为逆序正整数y输出,例如输入x的值为3456,则输出y的值6543。
程序代码:#include<stdio.h>int main(){int num,temp,i=0;printf("请输入一个数字:");scanf("%d",&num);while(num>0){temp=num%10;++i;printf("%d",temp);num=num/10;}printf("\n这个数是%d位数",i);return 0;}运行结果:(3)编写程序,分行输出斐波那契Fibonacci数列的前20项(每行5个数)。
说明:斐波那契序列:1,1,2,3,5,8,13,21,……题目扩展(选做):求Fibonacci数列中小于t的最大的一个数,其中t由键盘输入。
例如:输入t=1000时,则输出987。
程序代码:#include <stdio.h>void main(){int i,a[20];a[0]=1;a[1]=1;for(i=2;i<20;i++)a[i]=a[i-1]+a[i-2];i=0;while(i<20){printf("%d\t",a[i++]);if(i%5 == 0)printf("\n");}}运行结果:(4)编写程序,输出“九九乘法口诀表”。
《数据库原理》实验指导书--最新版
实验一实验环境熟悉与数据库(表)的建立实验目的熟悉实验的环境,掌握数据库、数据表的建立方法。
实验内容1、熟悉SQL的使用环境进入SQL环境(企业管理管理器、查询分析器)。
2、建立学生管理系统所需的数据库、数据表一个数据库,三张数据表。
实验环境1、硬件PC机,具有网络功能。
2、软件OS:windows 2000 professional;DBMS: SQL Server 2000.实验过程一、SQL server 2000环境1、系统的安装系统的安装过程比较简单,给学生演示一下。
2、进入查询分析器开始→程序→Microsoft SQL Server→查询分析器, 如下图所示:图1-1查询分析器的界面如图1-2所示:图1-2在文本框输入命令即可。
举例:计算圆面积的SQL程序的输入与运行结果界面(图1-3)。
图1-33、企业管理器的进入开始→程序→Microsoft SQL Server→企业管理器, 如下图所示:图1-4企业管理器的界面如图1-5:图1-5二、建立数据库与数据表1、建立学生管理数据库用SQL语句(生成的主文件名为: XSGL.MDF)语句为:CREATE DATABASE XSGL2、建立学生管理系统的数据表(共3个)使用SQL语句建立如下三个数据表(表结构见课本P92):学生表: Student.DBF(选本班10个同学作为10条记录)CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20)UNIQUE, Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));INSERT INTO Student ( Sno, Sname, Ssex, Sdept, Sage) V ALUES ('200215128','陈东','男','IS',18);建立表结构的语句见课本p85(P88—P89),记录的输入用插入命令INSERT, 详见课本P115。
分支程序设计实验报告
分支程序设计实验报告
实验名称:分支程序设计实验报告
实验目的:通过分支程序设计的实验,深入理解程序运行的基本
原理,掌握分支语句的应用方法,提高编写程序的能力和水平。
实验原理:分支程序设计是一种基于逻辑运算的程序结构,它可
以根据不同的条件,选择不同的执行路径,从而实现程序不同的输出
效果。
实验过程:首先,确定需要实现的程序功能,并根据程序逻辑设
计分支语句。
然后,使用编程工具编写代码,调试程序,运行程序。
最后,对程序进行测试和优化,达到预期的效果。
实验结果:通过实验,我深入理解了分支程序设计的基本原理和
应用方法。
我能够设计和编写简单的分支程序,实现不同的输出结果。
我还学会了如何测试和优化程序,以达到最佳的执行效果。
通过实验,我提高了编写程序的能力和水平。
实验总结:分支程序设计是计算机编程中非常重要的一部分,掌
握分支语句的应用方法可以提高编写程序的效率和质量。
通过实验,
我能够利用分支语句来设计程序,实现复杂的逻辑运算和条件判断。
我对编程语言的掌握和应用能力也有了进一步的提高。
我相信,凭借
自己的勤奋努力和不断的实践,我一定能成为一名优秀的程序员。
实验五查找及排序
实验五查找及排序实验课程名:数据结构与算法(3)运行结果分析:运用顺序结构完成查询。
任务二:哈希表的开放定址法算法。
在输出结果中显示查找成功与查找不成功信息。
解答:(1)源代码:#include<string.h>#include<ctype.h>#include<malloc.h> // malloc()等#include<limits.h> // INT_MAX等#include<stdio.h> // EOF(=^Z或F6),NULL#include<stdlib.h> // atoi()#include<io.h> // eof()#include<math.h> // floor(),ceil(),abs()#include<process.h> // exit()#include<iostream.h> // cout,cin// 函数结果状态代码#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1// #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行(2)运行结果:(3)运行结果分析:运用哈希表开放定地址算法实现。
任务三:各种插入排序算法的实现。
解答:(1)源代码:#include<string.h>#include<ctype.h>#include<malloc.h> // malloc()等#include<limits.h> // INT_MAX等#include<stdio.h> // EOF(=^Z或F6),NULL #include<stdlib.h> // atoi()#include<io.h> // eof()(3)运行结果分析运用直插、折半插、路插的方法编写。
实验五 顺序控制功能图编程实验
实验五顺序控制功能图编程实验一、实验目的通过一个钻床的PLC模拟控制编程,掌握顺序控制法的分析、画图和梯形图编程方法,强化用顺序控制法进行PLC编程的技能训练。
二、实验内容某专用钻床用来加工圆盘状零件上均匀分布的6个孔,如下图a和b所示。
开始自动运行时钻头在最上面的位置,即位开关I0.3和I0.5为ON。
操作人员放好I0.1为ON,Q0.1和Q0.3使两只钻头同时开始工作,钻到由限位开关I0.2和I0.4设定的深度时,Q0.2和Q0.4使两只钻头同时上行,升到由限位开关I0.3和I0.5设定的起始位置时停止上行。
设定值为3的计数器C0的当前值加1。
两个都上升到位后,工没有钻完3对孔,C0的常闭触点闭合,Q0.5使工件旋转120°,旋转到位时限位开关I0.6为ON,旋转结束后又开始钻第2对孔。
3对孔都钻完后,计数器的当前值等于设定值3,C0的常开触点闭合,Q0.6使工件松开,松开到位时,限位开关I0.7为ON,系统返回初始状态。
三、实验设备(1)S7-200 PLC一台(2)安装了编程软件的微型计算机一台(3)连接S7-200 PLC 和计算机的通信接口的PC/PPI编程电缆一根(4)紧锁导线若干四、实验要求分析系统的顺序步,画出顺序功能图和PLC控制系统的外部接线图,根据你画出的功能图分别用“起保停”方法、“以转换为中心”的方法和“使用SCR指令”的方法编制梯形图程序,并上机调试成功。
五、实验报告(1)画出PLC硬件连线图、顺序功能图。
(2)写出三种方法的梯形图程序。
(3)整理出运行和监控程序时出现的问题。
(4)根据你的理解,对比三种方法(“起保停”方法、“以转换为中心”的方法和使用SCR指令的方法)。
(5)实验心得。
六、本次实验考核评分表最后一页附在实验报告中上交。
实验五 分支结构程序设计
实验五分支结构程序设计
一、实验目的:
1、掌握分支结构程序设计的基本方法。
2、掌握无条件转移指令和条件转移指令的使用。
3、掌握分支结构程序设计的两种基本结构的使用。
二、实验内容及步骤:
1.将X字节单元中的内容拆为两个十六进制数,并分别转换为相应的ASCII码存于Y及Z 单元中。
DATA SEGMENT
X DB 9AH
Y DB ?
Z DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,X
MOV CL,4
SHR AL,CL
CMP AL,9
JBE NEXT1
ADD AL,07H
NEXT1: ADD AL,30H
MOV Y,AL
MOV AL,X
AND AL,0FH
CMP AL,9
JBE NEXT2
ADD AL,07H
NEXT2: ADD AL,30H
MOV Z,AL
MOV DL,Y
MOV AH,2
INT 21H
MOV DL,Z
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
2.编写程序比较两个16位带符号数的大小,若A>B,则显示出A>B,否则显示B > A。
3.编写下列函数的实现程序:
X+10 X<0Y=20*X 0X 10X-19 X>10⎧⎪≤≤⎨⎪⎩。
分支结构程序设计实验报告
课程名称:微型计算机原理专业/班级:
学号:姓名:
实验地点:菊潭机房一实验时间:5月24号
分数:
实验2 分支结构程序设计
一、实验目的
1.掌握多分支结构程序设计的方法。
2.掌握无符号数和带符号数比较大小转移指令的区别。
二、实验内容
在数据区中定义三个带符号字节变量,编写程序将其中的最大数找出送到MAX单元中。
三、实验仪器、材料
1. 软件MASM5.0
2. PC微机一台
四、实验步骤
进入编辑程序,写入以下代码:
data segment
data1 db -2,-6,5
max db ?
data ends
code segment
main proc far
assume ds:data,cs:code
start: push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
mov si,0
mov al,data1[si]
inc si
cmp al,data1[si]
JL next2
next1: inc si
cmp al,data1[si]
JL next3
jmp over
next2: mov al,data1[si]
jmp next1
next3: mov al,data1[si]
over: mov max,al
ret
main endp
code ends
end start 再转化为目标文件,通过连接程序使其成为可执行文件,最后调试结果如下图sy-2
五、实验结果
Sy-2:。
实验5-分支程序设计
实验五分支程序设计一、实验目的1.掌握分支程序的结构。
2.掌握分支程序的设计、编写及调试方法。
二、实验准备1.复习教材中分支结构程序设计的相关内容。
2.分析下面程序(程序1)的功能。
此程序功能是比较BUF中三个数的最大数,结果存在MAX的变量中DATA SEGMENTBUF DB 38H,73H,1FHMAX DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,BUFCMP AL,BUF+1 ;AL>=BUF+1(即比较BUF中的第一个数与第二JNB LP1 个数的大小)则跳转到LP1MOV AL,BUF+1LP1: CMP AL,BUF+2JAE LP2 ;AL>=BUF+2(即比较BUF中的第二个数与第三个数的MOV AL,BUF+2 大小)则跳转到LP2LP2: MOV MAX,AL ;把三个数种最大的数给MAXMOV AH,4CHINT 21HCODE ENDSEND START2.编写程序2::判断BUF单元存放的带符号字节数的正负,并在屏幕上给出正负信息。
DATA SEGMENTBUF DB 38H,-5H,-32H,-44H,40HSTRING1 DB 'FUSHU',0DH,0AH,'$'STRING2 DB 'ZHENGSHU',0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,00HMOV CL,00HMOV SI,OFFSET BUFLP0: MOV BL,[SI]INC SIINC CLCMP CL,COUNT ;记录测试数据的个数,JNL LP4 当CL大于数据个数时,程序结束CMP AL,BL ;把测试的数据跟0比较,JNL LP1 得出时正数还是负数JMP LP2LP1: MOV DX,OFFSET STRING1 ;小于0,是负数MOV AH,09HINT 21HJMP LP0LP2: MOV DX,OFFSET STRING2 ;大于0,是正数MOV AH,09H INT 21HJMP LP0LP4: MOV AH,4CHINT 21HCODE ENDSEND START3.编写程序3:实现任意给定X 值(-128≤X ≤127),求符号函数Y 的值,存放于内存单元。
实验五 顺序、分支结构程序设计
CMP JGE LEA JMP LOOP1: LEA JMP LOOP2: NEXT: INT INC DEC JNE RET main END
AL,0 LOOP1 DX,A3 NEXT JE LOOP2 DX,A1 NEXT LEA DX,A2 MOV AH,09h 21h SI CX again ENDP code start ENDS
(2)输入程序并检查无误、经汇编、连接后产生正确的可执行文件 SY5-2.EXE。 (3)用 DEBUG 的 U 命令查看 MOV AX,XXXX(DATA)语句,即得到数 据段基址 DS:XXXX。 (4)用 G 命令运行以上程序,记录显示结果,对照数据比较结果是否 正确。 实验注意事项 1.程序 2的调试方法与程序 1 相同。 2.程序2 中 CMP AL,0 指令可用 SUB AL,AL或 AND AL,AL 或OR AL, AL替换,效果是一样的。 实验与思考 1.编写一个程序,在屏幕上输出一个大写字母”A”。 2.编写程序,将_BX与_DX中较大的一个无符号数放到_AX_中。
AX=13F8_BX=0000_CX=002FDX=0000_SP=0000_BP=0000_SI=0000_DI=0 000_ DS=13E8_ES=13E8_SS=13F8_CS=13F9_IP=0003_NV_UP_EI_PL_NZNAPO_ NC_ 13F9:0003_8ED8_ MOV_DS,AX_ 一_T_ AX=13F8_BX=0000_CX=002FDX=0000_SP=0000_BP=0000_SI=0000_DI=0 000 DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0005_NV_UP_EI_PL_NZNAPO_N C_ 13F9:0005_8B1E0000_ MOV_BX,[0000]_ DS:0000=0006_ 一 _T_ AX=13F8_BX=0006_CX=002FDX=0000_SP=0000_BP=0000_SI=0000_DI=0 000_ DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0009_NV_UP_EI_PL_NZNAPO_N C_ 13F9:0009_031E0200_ ADD_BX,[0002]_ DS:0002=0007_ 一 _T_ AX=13F8_BX=000D_CX=002F_DX=0000_SP=0000_BP=0000_SI=0000_DI= 0000_ DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=000D_NV_UP_EI_PL_NZNAPO_N C_ 13F9:000D_B103_ MOV_CL,03_ 一_T_
程序设计语言实验指导书12版
《程序设计语言》实验指导书徐东燕编北方民族大学计算机科学与工程学院2012年9月目录实验一 C语言编程环境熟悉及简单程序的编写(验证型实验,2学时) (3)实验二分支结构程序设计(设计型实验,2学时) (6)实验三循环结构程序设计(设计型实验,2学时) (8)实验四函数程序设计(设计型实验,2学时) (10)实验五数组程序设计((设计型实验,2学时) (12)实验六指针程序设计(设计型实验,2学时) (14)实验七结构体程序设计(设计型实验,2学时) (15)实验八程序结构与递归函数(综合性实验,2学时) (16)实验九指针进阶及综合程序设计(综合型实验,2学时) (17)实验十文件的程序设计(设计型实验,2学时) (18)参考文献 (20)课程编号:11101203 课程类别:专业基础课适用专业:计算机科学与技术、软件工程、网络工程、信管专业课程总学时:76 实验课学时:20开设实验项目数:10实验一C语言编程环境熟悉及简单程序的编写(验证型实验,2学时)一、实验目的与要求实验环境1.熟悉Cfree开发环境或Visual C++ 6.0的使用环境;2.掌握Cfree开发环境或Visual C++ 6.0环境下建立C程序的步骤;3.掌握C程序在Cfree开发环境或Visual C++ 6.0环境下的编辑、调试和运行的步骤、方法;4.理解C程序的一般结构;5.理解并掌握程序的顺序结构程序设计;6.在Cfree开发环境或Visual C++ 6.0环境下编写并运行基本的C程序;7.理解程序调试思想,能修改简单的C语法错误;8.掌握算术、赋值表达式,输入输入语句和简单数据处理方法。
二、实验环境1.微机每人一台,要求PⅢ以上处理器。
2.windows2000/xp操作系统。
3.Cfree开发环境或或Visual C++ 6.0开发环境。
三、实验预习与准备1.计算机基本操作练习。
2.Cfree开发环境或Visual C++ 6.0软件使用预习。
C语言程序实验报告分支结构的程序设计
C语言程序实验报告分支结构的程序设计数学与软件科学学院实验报告学期:11至12___ 第_1 学期 2011年10 月 17 日课程名称:程序设计基础教程-C语言专业:2010级5_班实验编号:04 实验项目:分支结构的程序设计指导教师_姓名:学号:实验成绩:一、实验目的及要求(1) 掌握C语言程序设计中逻辑量的表示和运用方法;(2) 掌握C语言程序设计中条件表达式的值的计算方法及其跟程序执行流程之间的逻辑顺序关系;(3) 掌握C语言中的4中选择结构语句的执行逻辑及其运用方法。
二、实验内容1. if 语句的实验。
请分析如下语句段的逻辑关系:int main(void){...if (nA>1 && nB==0) nX=nX/nA;if (nA==2 || nX>1) nX=nX+1;...return 0;}(a) 以算法流程图的形式表述;(b) 增加输入、输出功能以补充完整该程序段,使之能够运行;(c) 测试该程序段的各种条件组合下的运行结果。
测试数据组如下:nA nB nX1 1 11 1 23 0 12 0 42 1 11 0 22 1 23 0 2(d) 分析讨论:1) 用哪组数据就可以使程序段中每个处理语句都执行一次?为了找出程序中的逻辑错误,应使用什么样的数据进行测试?请上机验证自己的分析结果。
2) 用哪两组数据可以使程序段中的每个分支都至少运行一次?为找出各个分支中的逻辑错误,应选用什么样的数据进行逻辑测试?请上机验证自己的分析结果。
3) 用哪四组数据可以将从起点到终点的各条路径都覆盖一次?为了测试程序在各个不同路径上的错误,应选用什么样的测试数据?请上机验证自己的分析结果。
2. if else语句实验。
用if else句型,编写求4个数中最大者的程序,并设计测试用例、记录测试结果;3. (选做)试用if else if else if ...else实现求4个数中最大者的程序,并做相应测试;4. 请理清习题5-23的逻辑关系,并上机进行验证。
大学vb 实验作业5 顺序结构程序设计
提示:闰年的判断条件
(1)如果此年号能被400整除;
(2)如果此年号能被4整除,但不能被100整除。
满足以上两条件之一,则提示该年是闰年,否则提示该年不是闰年。
3、在文本框1中输入1到7之间的整数,在文本2中显示对应的英文单词。对应规则如下:
1——星期一;2——星期二;3——星期三;4——星期四;
软件:Microsoft Visual Basic 6.0
实验内容
1、编写程序判断某个数是否是水仙花数。
小知识:一个三位数其各位数字立方和等于该数本身,这个数就是水仙花数。如153是一个“水仙花数”,因为153=13+53+33。
要求:用inputbox函数输入一个三位数,将判断结果输出在消息框上,如是则在消息框提示该数是水仙花数(如下图1),否则在消息框上提示该数不是水仙花数(如下图2)。
5——星期五;6——星期六;7——星期日
4、新建工程,在窗体上添加两个按钮,标题分别为“输入”和“交换”。
程序运行后,单击“输入”按钮,通过输入对话框输入两个整数;
单击“交换”按钮,如果第一个数小于第二个数,则交换两数。最后将两个数在窗体上显示出来。
实验小结
实验名称
实验五顺序结构程序设计
实验时间
第六周
实验目的
(1)掌握基本语句的用法
(2)掌握InputBox和MsgBox函数的用法
(3)进一步掌握编写简单顺序结构程序的方法
(4)掌握关系、逻辑表达式的正确书写形式
(5)掌握由IF语句构成的选择结构
(6)学会编写选择结构程序解决实际问题
实验环境
硬件:微型计算机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0000_
DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=000D_NV_UP_EI_PL_NZNAPO_N
C_ 13F9:000D_B103_
MOV_CL,03_ 一_T_
AX=13F8_BX=000D_CX=0003_DX=0000_SP=0000_BP=0000_SI=0000_DI=00 00_
000_
DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0009_NV_UP_EI_PL_NZNAPO_N
C_ 13F9:0009_031E0200_ ADD_BX,[0002]_ DS:0002=0007_ 一
_T_
AX=13F8_BX=000D_CX=002F_DX=0000_SP=0000_BP=0000_SI=0000_DI=
DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0015_NV_UP_EI_PL_NZNAPO_NC_ 13F9:0015_D1FB_ SAR_BX,1_ 一_T_ AX=13F8_BX=0031_CX=0003DX=0000_SP=0000_BP=0000_SI=0000_DI=000 0_
ES=13E8 SS=13F8 CS=13F9 IP=0000 NV UP EI PL NZ NA PO NC
13F9:0000 DBF813
MOV AX,13F8 一_T_
AX=13F8_BX=0000_CX=002FDX=0000_SP=0000_BP=0000_SI=0000_DI=0
000_
000_
DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=001D_NV_UP_EI_PL_NZNAPO_NC
_ 13F9:001D_CD21_
INT_21_ 一 D 0000 0005 ;数据段三个
字内容分别为 X,Y,Z 13F8:0000 06 00 07 00 31 00_
13F9:0015_D1FB_ SAR_BX,1_
13F9:0017_891E0400_ MOV_[0004],BX_
13F9:001B_B44C_ MOV_AH,4C_
13F9:001D_CD21_ INT_21_ ;源程序结束 一_R_ AX=0000 BX=0000
CX=002F DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=13E8
2.编写程序,将_BX与_DX中较大的一个无符号数放到_AX_中。
谢谢观赏
NEXT: MOV AH,09h
INT
21h
INC SI
DEC CX
JNE
again
RET
main ENDP code
ENDS
END start
(2)输入程序并检查无误、经汇编、连接后产生正确的可执行文件 SY5-2.EXE。
(3)用 DEBUG 的 U 命令查看 MOV AX,XXXX(DATA)语句,即得到数 据段基址 DS:XXXX。
实验五 顺序、分支结构程序设计
实验目的 1.掌握顺序、分支结构程序设计的基本方法。_ 2.掌握无条件转移指令和条件转移指令的使用。_ 3.熟悉汇编语言程序设计的基本结构和常用指令的使用。_ 4.进一步熟悉汇编语言的上机过程和DEBUG_的使用。 实验学时 2 学时 实验器材 PC 微机及软件。 实验原理 1.顺序结构 顺序结构的程序,指令逐条依次被执行,指令指针 IP内容为线性增加。 实现这种结构的指令有传送类、运算类和位移类。因此,顺序结构的 程序只能完成简单的功能,例MENT
x
DB 5,-4,0,3,100,-51
A2
DB '0',13,10,'$'
A3
DB '-1',13,10,'$'
data PROC
ENDS code FAR
ASSUME CS: code , DS: data
start: PUSH DS
MOV AX,0
PUSH AX
MOV AX,data
2.分支结构 程序中出现二中选一的分支称为二路分支,三中选一的分支称为三路 分支,还有四中选一,N 中选一称为多路分支。实现分支的要素有两 点: (1)使用能影响状态标志的指令,如算术逻辑运算类指令、移位指 令和位测试指令等,将状态标志设置为能正确反映条件成立与否的状 态。 (2)使用条件转移类指令对状态位进行测试判断,确定程序如何转 移,形成分支。 实验内容与步骤 1. 已知字节变量 X,Y 存放于 VARX,VARY 存储单元中, 利用公式 求 Z的值,并将结果存放于 RESULT 存储单元中。公式:Z=((X+Y)*8-X)/2 。 参考程序如下:(程序名:SY5-1.ASM) data SEGMENT varx DW 0006h vary DW 0007h result DW ? data ENDS code SEGMENT ASSUME CS:code,DS:data start: MOV AX,data MOV DS,AX
INT 21h
; 退出程序
code ENDS
END start
(1)输入程序并检查无误,经汇编、连接后产生正确的可执行文件 SY5-1.EXE。
(2)执行可执行文件,可以看到执行正常,但是没有任何输出,可以 使用 DEBUG来调试。
(3)用 DEBUG 的 U CS:0000 查看 MOV AX,XXXX(DATA)语句,即得
MOV AX,varx ; AX <- X
ADD AX,vary ; AX <- X+Y
MOV CL,3
SAL AX,CL
; AX <- (X+Y)*8
SUB AX,varx ; DL <- (X+Y)*8-X
SAR AX,1
; DL <- ((X+Y)*8-X)/2
MOV result,AX
MOV AH,4ch
DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=001B_NV_UP_EI_PL_NZNAPO_NC_ 13F9:001B_B44C_ MOV_AH,4C_ 一_T_
AX=4CFB_BX=0031_CX=0003_DX=0000_SP=0000_BP=0000_SI=0000_DI=0
DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0011_NV_UP_EI_PL_NZNAPO_NC_ 13F9:0011_2B1E0000_ SUB_BX,[0000]_ 一_T_ AX=13F8_BX=0062_CX=0003DX=0000_SP=0000_BP=0000_SI=0000_DI=000 0_
到数据段段地址 DS=XXXX。
(4)单步运行以上程序到最后一条指令,计算出了((X+Y)*8-X)/2
的内容(0031H),调试过如下:
C:\ > DEBUG SY5-1.EXE 一_U_ ;反汇编_ 13F9:0000_B8F813_
MOV_AX,13F8_
13F9:0003_8ED8_ MOV_DS,AX_
DS=13E8_ES=13E8_SS=13F8_CS=13F9_IP=0003_NV_UP_EI_PL_NZNAPO_
NC_ 13F9:0003_8ED8_ MOV_DS,AX_ 一_T_
AX=13F8_BX=0000_CX=002FDX=0000_SP=0000_BP=0000_SI=0000_DI=0
….1._ 2.假设有一组数据:5,-4,0,3,100,-51,请
编一程序,判断:每个数大于_0,等于_0,还是小于_0;并输出其判
断结果。
即:_ y=_ _____
1_当_x>0_ __0_当_x=0_ 1_当_x<0_
(1)编程提示:・ 首先将原始数据装入起始地址为_XX_的字节存 储单元中。 ・ 将判断结果以字符串的形式存放在数据区中,以便在显示输出时 调用。 ・ 其中判断部分可采用_CMP_指令,得到一个分支结构,分别输出 “y=0”,_“y=1”,_“y=-1” 。 ・ 程序中存在一个循环结构,循环_6_次,调用6_次分支结构后结 束。 参考程序如下:(程序名:SY5-2.ASM) data
(4)用 G 命令运行以上程序,记录显示结果,对照数据比较结果是否 正确。
实验注意事项
1.程序 2的调试方法与程序 1 相同。
2.程序2 中 CMP AL,0 指令可用 SUB AL,AL或 AND AL,AL 或OR AL, AL替换,效果是一样的。
实验与思考
1.编写一个程序,在屏幕上输出一个大写字母”A”。
13F9:0005_8B1E0000_ MOV_BX,[0000]_
13F9:0009_031E0200_ ADD_BX,[0002]_
13F9:000D_B103_ MOV_CL,03_
13F9:000F_D3E3_ SHL_BX,CL_
13F9:0011_2B1E0000_ SUB_BX,[0000]_
000
DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0005_NV_UP_EI_PL_NZNAPO_N
C_ 13F9:0005_8B1E0000_ MOV_BX,[0000]_ DS:0000=0006_ 一
_T_
AX=13F8_BX=0006_CX=002FDX=0000_SP=0000_BP=0000_SI=0000_DI=0