实验报告分支结构程序设计
- 格式:doc
- 大小:37.50 KB
- 文档页数:5
分支程序设计实验在计算机科学领域中,分支程序设计是一种重要的概念。
它是指在程序执行过程中,根据不同的条件选择不同的执行路径。
这种设计方法可以使程序更加灵活和智能,提高程序的执行效率和准确性。
在本文中,我们将探讨分支程序设计的原理和实验。
一、分支程序设计的原理分支程序设计的核心原理是根据条件的真假来选择不同的执行路径。
在程序中,我们可以使用条件语句来实现分支程序设计。
常见的条件语句有if语句和switch语句。
if语句是一种基本的条件语句,它根据条件的真假来选择不同的执行路径。
if语句的基本结构是:if (条件) {执行语句} else {执行语句}。
当条件为真时,执行if语句中的代码块;当条件为假时,执行else语句中的代码块。
switch语句是另一种常见的条件语句,它根据条件的不同值来选择不同的执行路径。
switch语句的基本结构是:switch (条件) {case 值1: 执行语句1; break; case值2: 执行语句2; break; default: 执行语句3;}。
当条件的值与某个case的值相等时,执行对应的执行语句;当条件的值与所有case的值都不相等时,执行default语句。
二、分支程序设计的实验为了更好地理解和应用分支程序设计的原理,我们可以进行一些实验。
下面是一个简单的实验示例:实验目的:根据用户输入的成绩,判断其等级。
实验步骤:1. 定义一个变量grade,用于存储用户输入的成绩。
2. 使用scanf函数获取用户输入的成绩,并将其赋值给变量grade。
3. 使用if语句判断成绩的等级,并输出相应的结果。
实验代码:```#include <stdio.h>int main() {int grade;printf("请输入您的成绩:");scanf("%d", &grade);if (grade >= 90) {printf("您的等级为A\n");} else if (grade >= 80) {printf("您的等级为B\n");} else if (grade >= 70) {printf("您的等级为C\n");} else if (grade >= 60) {printf("您的等级为D\n");} else {printf("您的等级为E\n");}return 0;}```在这个实验中,我们根据用户输入的成绩判断其等级,并输出相应的结果。
微机原理实验报告实验二分支程序的设计一、实验目的1.学习提示信息的显示及键盘输入字符的方法。
2.掌握分支程序的设计方法。
二、实验内容在提示信息下,从键盘上输入原码表示的二位十六进制有符号数。
当此数大于0时,屏幕上显示此数为正数。
当此数等于0时,屏幕上显示此数为零。
当此数小于0时,屏幕上显示此数为负数。
三、实验原理分支程序是程序通过判断和比较形成不同的逻辑框并产生相应的分支程序。
它的结构有两种:一种是二分支,一中是多分支。
它们的共同特点是:运行方向总是向前的,在某种确定条件下,只能执行多个分支中的一个分支。
四、程序流程CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATA SEGMENTMESS1 DB'INPUT DATA',0DH,0AH,'$'MESS2 DB'THIS DATA IS +',0DH,0AH,'$'MESS3 DB'THIS DATA IS -',0DH,0AH,'$'MESS4 DB'THIS DATA IS 0',0DH,0AH,'$'DATABUF DB 3ACTLEN DB ?STRING DB 3 DUP(?)DATA ENDSSSEG SEGMENT PARA STACK'STACK'DB 50 DUP(0)SSEG ENDSCODE SEGMENTASSUME CS:CODE,SS:SSEG,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,SSEGMOV SS,AXMOV DX,OFFSET MESS1MOV AH,09HINT 21HMOV AH,0AHMOV DX,OFFSET DATABUFINT 21HCRLFMOV AL,STRINGCMP AL,38HJAE CIRAMOV AL,STRING+1CMP AL,30HJNE CIRBMOV DX,OFFSET MESS4MOV AH,09HINT 21HJMP BOTCIRA:MOV DX,OFFSET MESS3MOV AH,09HINT 21HJMP BOTCIRB:MOV DX,OFFSET MESS2MOV AH,09HINT 21HJMP BOTBOT:MOV AX,4C00HINT 21HCODE ENDSEND START五、程序调试查看结果:DEBUG调试调试结果图上图,程序顺利运行,结果正确。
计算机科学技术学院实验报告import randomguess=0 #输入的数字times=1 #猜数字的次数secret=random.randint(0,100) #生成随机数print("--------欢迎参加猜数字游戏,请开始--------")while guess!=secret:guess=int(input("@数字区间0-100,请输入你猜的数字:"))print("你猜的数字是:",guess)if guess==secret:print("你猜了{}次,猜对了,真厉害".format(times))else:if guess<secret:print("你猜的数字小于正确答案")else:print("你猜的数字大于正确答案")times+=1print("游戏结束")3. 猜数字游戏再续。
用变量maxtimes设置允许猜数字的最大次数(比如最多只允许猜6次maxtimes=6),并在猜错后提示还有几次机会。
用for循环改写整个程序,并提交。
(提示,猜对后可使用break跳出循环)import randomguess=0times=1maxtimes=eval(input("请输入猜数字的最大次数:"))#用户自己设置maxtimessecret=random.randint(0,100)print("----------欢迎参加猜数字游戏,请开始-----------")for i in range(maxtimes):guess=int(input("@数字区间0-100,请输入你猜的数字:"))print("你输入的数字是:",guess)if guess==secret:print("你猜了{}次,猜对了,真厉害".format(times))breakelse:if guess<secret:print("你猜的数字小于正确答案")print("你还有", maxtimes - 1, "次输入机会")else:print("你猜的数字大于正确答案")print("你还有", maxtimes - 1, "次输入机会")times+=1maxtimes-=1else:print("你已没有输入机会,猜数字游戏失败!")print("游戏结束")4.猜数字游戏之续了又续。
汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的1、掌握分支程序、循环程序的设计方法。
2、熟悉DEBUG程序的使用方法。
3、掌握汇编语言程序的编辑、汇编、连接以及调试过程。
二、实验内容1、编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)。
2、编写一程序,将内存中某一区域的数据传送到另一区域(要求考虑数据块重叠问题)。
三、实验准备1、预习数据传送指令,熟悉分支和循环程序设计方法。
2、预习DEBUG调试程序的使用方法。
3、根据实验内容要求,编写好实验源程序。
四、实验步骤1、用QE或其它编辑软件,在计算机上编辑源程序,使其正确无误。
2、汇编、连接源程序,产生.EXE可执行文件。
3、运行程序。
(1) 进入DEBUG。
打入DEBUGT MYPROG.EXE。
MYPROG为所编程序的文件名。
(2) 先用G命令连续剧连续执行程序,程序执行完毕后,观察运行结果。
如果执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误,则执行下一步。
(3) 检查程序。
在程序中设置若干断点,以便杳出错误所在。
(4) 采用单步命令T或执行程序,观察各寄存器和存储单元内容,以便找到错误之处。
五、实验报告要求1、列出程序清单,并给出程序流程图。
2、总结实现数据传送的几种方法,指出它们的区别。
开始3、分析实验中所遇到的一些问题,分析错误原因。
4、说明本实验中是如何使用DEBUG进行调试的。
CX、SI、DI置初值六、流程图勤开始设置增量方式CX、SI、DI置初值保存SI内容AL [SI] SI SI+源块长度[DI] AL N SI>DIYSI SI+1 恢复SI内容恢复SI内容DI DI+1CX CX-1 设置减量方式N CX=0, SI指向源块末尾DI指向目的块末尾Y结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y结束题二流程图七、程序清单题一程序清单:STACK SEGMENT STACK ‘STACK’DB 100 DUP(0)STACK ENDSDATA SEGMENT PARA ‘DATA’SOUR DB 0、1、2、3、4、5、6、7、8、9 DEST DB 10 DUP(,)DB ‘$’DATA ENDSSEGMENT PARA‘CODE’ASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,10MOV SI,offset SOURMOV DI, offset DESTAGAIN: MOV AL,[SI]MOV [DI],ALINC SIIN DILOOP AGAINMOV DX,offset DESTMOV AH,09HINT 21HRETMAIN ENDPCODE ENDSEND START题二程序清单:DATA SEGMENT PARA ‘DATA’STRG DB ‘ABCDEFGHIJKLMNOP’STG1 EQU STRG+4STG2 EQU STHG+8STRSE EQU 6DATA ENDSSTACK SEGMENT PARA ‘CODE’DB 100 DUP(0) STACK ENDSCODE SEGMENT PARA ‘CODE’ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,STRSEMOV SI,OFFSET STG1MOV DI,OFFSET STG2CLDPUSH SIADD SI,STRSE-1CMP SI,DIPOP SIJL MOVESTDADD SI,STRSE-1ADD DI,STRSE-1 MOVE: REP MOVSB RETMAIN ENDPCODE ENDSEND START。
实验二 C语言中的分支语句程序设计一、实验目的:1.掌握C语言的基本语法;2.掌握C语言的表达式运算及标准库函数的调用方法;3.掌握C语言的基本输入输出语句;4.掌握字符类型、整型和浮点型数据的输入输出及表达式计算方法;5.掌握if语句和switch语句的用法;6.掌握分支程序结构的设计思想;二、实验内容(一)分析程序,用程序验证下面各个表达式的值1、当整型变量a,b,c的值分别为3,4,5时,以下各语句执行后a,b,c的值为多少? (1) if(a>c) {a=b; b=c; c=a;}else {a=c; c=b; b=a;}执行后a,b,c的值为,,(2) if(a<c) a=c;else a=b; c=b; b=a;执行后a,b,c的值为,,(3) if(a!=c) ;else a=c; c=b; b=a;执行后a,b,c的值为,,2、若整数x分别等于95、87、100、43、66、79,57,则以下程序段运行后屏幕显示是什么?switch(x/10){ case 6:case 7: printf("Pass\n"); break;case 8: printf("Good\n"); break;case 9:case 10: printf("V eryGood\n"); break;case 5 : printf("Between Pass and Fail\n");default: printf("Fail\n");}x等于95时,程序段运行后屏幕上显示。
x等于87时,程序段运行后屏幕上显示。
x等于100时,程序段运行后屏幕上显示。
x等于43时,程序段运行后屏幕上显示。
x等于66时,程序段运行后屏幕上显示。
x等于79时,程序段运行后屏幕上显示。
x等于57时,程序段运行后屏幕上显示。
深圳大学实验报告课程名称: 学院:信息工程学院
班级:
实验时间:
实验报告提交时间:
教务处制
实验结论: 1.从范例 4 中演示的 C++输入输出易出错的地方,发现在输入数据时,若不指定数据的类型,程序会自动当做十进制数进行处理。
因此涉及到其他进制的输入输出时,一定要在输入输出前加上其进制类型,例如八进制是 oct,十六进制是 hex 等。
在输入字符串时,若直接用 cin,则程序会忽略掉其中的空格,若要空格也作为输入,则必须使用 cin.getline 或 cin.get 函数。
2.对于这次的实验,使用 switch 比使用 if-else 结构简单,因为 switch 结构特别适用于某个整型或字符型表达式的值与一组常量的匹配的情况。
不过 if-else 的适用范围更加广泛。
指导教师批阅意见:成绩评定:指导教师签字:年月日备注:注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后 10 日内。
实验3:分⽀结构程序设计实验2 顺序程序结构程序设计⼀、实验⽬的1.进⼀步掌握关系表达式和逻辑表达式的使⽤。
2.熟悉选择结构程序设计。
3.熟练使⽤if语句进⾏程序设计。
4.使⽤switch语句实现多分⽀选择结构。
⼆、实验要求1.复习关系表达式、逻辑表达式、条件表达式的相关内容;2.复习if语句、if…else语句、switch语句的执⾏流程;3.完成各项实验任务及问题讨论。
三、实验内容(⼀)程序改错题说明:给出的程序可能存在语法或算法上的问题或需要补充完整,但需要修改的地⽅肯定在/*******Found*******/下的第⼀⾏上且每⾏仅有⼀个(类)错误,不能修改其它地⽅,不能修改或删除/*******Found*******/本⾝,遵循最少修改、保持⼀⾏⼀条语句及{与}单独⼀⾏的原则。
考试时由于是计算机⾃动阅卷,修改时不能增加⾏或删除⾏,哪怕是⼀个空⾏都不⾏,否则可能得0分。
1.程序D7.c的功能是判断x和y是否相等,相等则显⽰x=y,不等则显⽰x<>y。
(序号:7)#includeint main(void){/*********Found************/char x, y;x = 39270;y = 41001;/*********Found************/if (x != y){printf("x=y");}/*********Found************/else;;{printf("x<>y\n");}}2.程序D1000.c的功能是从键盘输⼊3个浮点数a,b,c(输⼊时abc之间以空格相隔),⾸先按照输⼊顺序显⽰在屏幕上,然后按从⼩到⼤顺序把它们输出到屏幕上。
(序号:20)#include#includeint main(void){float a, b, c, t;printf("please input three numbers:\n");/*********Found************/scanf("%f%f", &a, &b, &c);printf("before sort:a=%g,b=%g,c=%g\n", a, b, c);if (a > b){t = a;a = b;/*********Found************/b = a;}if (a > c){t = a;a = c;c = t;}if (b > c){t = b;b = c;c = t;}printf("after sort:a=%g,b=%g,c=%g\n", a, b, c);return 0;}#includeint main(void){long int i = 79870, j = 23;/*****Found*****/scanf("%f", &i);/*****Found*****/if (j == i);{printf("Equal!");}else{printf("Not equal!");}return 0;}4.程序D1007.c的功能是使⽤getchar⽅式从键盘读⼊⼀个字符,判断该字符是否⼤写字符.(序号:27)#includeint main(void){char ch;/****Found****/getchar(ch);/*****Found*****/if ('A' <= ch, ch <= 'Z'){printf("yes");}else{printf("no");}}5.程序D1008.c的功能是判断⽤户是不是输⼊的整数0。
实验二分支结构程序设计一、目的和要求1.熟悉关系表达式和逻辑表达式的使用2.熟悉多路分支程序设计3.了解断点调试程序的方法。
二、实验内容1.断点调试1)分析本程序段,请用不同颜色标记出存在错误或不妥的地方。
2)修改本程序段,使之成为正确的程序。
3)在上机过程中熟悉断点调试。
/* 求一元二次方程根的程序*/#include <stdio.h>#include <math.h>int main(void){double a, b, c,d;printf("Enter a, b, c \n");scanf("%lf%lf%lf", &a, &b, &c);d = b * b - 4 * a * c;if(a= =0){if(b = 0){if(c = = 0)printf(“参数都为零,方程无意义!\n”);elseprintf(“a和b为0,c不为0,方程不成立\n”);}elseprintf(“x = %0.2f\n”, -b/(2*a));}elseif(d >= 0){printf(“x1=%0.2f\n”, (-b+sqrt(d))/2*a);printf(“x2=%0.2f\n”, (-b-sqrt(d))/2*a);}else{printf(“x1=%0.2f+%0.2fi\n”, -b/(2*a), sqrt(-d)/(2*a));printf(“x2=%0.2f-%0.2fi\n”, -b/(2*a), sqrt(-d)/(2*a));}return 0;}2. 程序填空。
计算分段函数。
输入x ,计算并输出y 的值。
公式如下:⎪⎩⎪⎨⎧≥<+++=)0()0(12)1(2x x x xx x y提示:可以使用数学函数:sqrt ()求平方根,pow ()求幂。
请勿改动主函数main 的任何内容,仅在main 函数的对应序号位置上填入所编写的若干表达式或语句,并上机调试运行。
深圳大学实验报告课程名称:C++程序设计实验项目名称:分支结构和循环结构程序设计学院:信息工程学院专业:通信工程指导教师:张力报告人:学号:2011130145 班级:2班实验时间:2013年10月23日实验报告提交时间:2013年11月6日教务处制实验目的与要求:1.流程控制语句用于实现基本程序结构,是程序设计的基础。
本实验要求掌握条件语句和开关语句的使用。
2.掌握3种循环结构:while、do-while、for的区别与联系,以及它们之间相互转换的方法,并能正确使用它们。
3.掌握与循环语句相关的break语句和continue语句的使用方法。
1.练习实践教程P9范例4,修改程序并调试,熟悉C++的输入、输出。
2.实践教程P13编程3,请按要求编程。
输入一门课程的成绩,若高于90分,输出”A Grade”,若高于80而低于90,输出”B Grade”,高于70而低于80,输出”C Grade”,高于60而低于70,输出”D Grade”,否则,输出”Not Passed”。
用if-else嵌套和switch语句两种方法实现。
3.实践教程P16编程5, 设计一个程序,输入某天是几月几日,要求算出这一天是本年的第几天。
方法、步骤:1.打开VC++,选择file|new 菜单,单击project标签,打开其选项卡,选择win32 console application 工程类型,在project name 文本框中输入工程名2_1,在location 文本框中输入工程路径,单击OK按钮,在弹出的对话框中选择an empty project,单击finish按钮。
2.选择file|new 菜单,单击files选项卡,选择C++ source file,在file文本框中输入文件名2_1.cpp,选中add to project 复选框,单击OK按钮。
3. 打开源文件编辑窗口,按要求画出的流程图进行编写代码。
分支结构实验报告我想跟你讲讲我那超级有趣又有点烧脑的“分支结构实验”经历,就像一场奇妙的冒险,而这个冒险的主角就是我和我的小伙伴们。
那是一个阳光明媚的午后,我和我的好哥们小明还有学霸小美约好一起去探索那个神秘的“分支结构实验”。
我们来到了学校那间充满科技感的实验室,一进门,各种奇奇怪怪的仪器就像外星生物一样静静地站在那里,似乎在等着我们去揭开它们神秘的面纱。
我有点紧张又有点兴奋,手不自觉地搓着衣角,眼睛好奇地四处张望。
小明呢,他向来是个急性子,一进门就像只小猴子一样,蹦跶到实验台前,大声喊道:“哇塞,这就是我们今天要征服的家伙啊!”小美则是不慌不忙地走过去,推了推她那副眼镜,像个小大人似的开始查看实验说明。
我们要做的这个分支结构实验,简单来说就像是在一个迷宫里做选择。
每一个岔路口就代表着一个分支,你得根据不同的情况做出正确的选择,不然就会走进死胡同。
我心里想着,这可有点像我们平时玩游戏的时候,遇到不同的关卡选择不同的策略一样,只不过这次不是虚拟的游戏世界,而是实实在在的科学实验。
我们开始动手了。
首先是连接那些五颜六色的线路,我就像个新手厨师在摆弄复杂的食材一样,手忙脚乱。
小明在一旁看着直着急,忍不住伸手过来帮忙,嘴里还嘟囔着:“你看你,笨手笨脚的,就像个大笨熊。
”我不服气地回怼他:“哼,你行你来啊,我这是在仔细研究呢。
”小美在旁边偷笑,说:“你们俩别吵了,就像两只斗气的小公鸡,还是赶紧干活吧。
”当我们把线路都连接好之后,就到了最关键的设置参数环节。
这就像是给这个迷宫设定规则一样。
我们三个人围在一起,眼睛紧紧盯着屏幕,脑袋凑得近近的,就像三个紧密相连的蒜瓣。
每一个参数的设定都像是在小心翼翼地走钢丝,一个不小心就可能让整个实验失败。
“这个参数应该设成多少呢?”我挠着头,感觉自己的脑袋里像一团乱麻。
小明一拍大腿,说:“我觉得这个应该根据之前的经验来,就像我们之前做数学题,遇到类似的题型就按照那个思路来嘛。
分支程序设计实验1. 实验目的本实验旨在通过编写分支程序,加深对分支结构的理解,并掌握使用分支语句进行程序设计的能力。
2. 实验背景分支结构是计算机程序中的一种重要控制结构,它根据条件的真假来选择执行不同的代码块。
分支结构通常使用if语句、switch语句等来实现。
掌握分支结构的使用对于编写复杂的程序非常重要。
3. 实验内容本次实验要求编写一个分支程序,根据用户输入的成绩判断其对应的等级,并输出相应的提示信息。
4. 实验步骤步骤一:定义变量和输入首先,定义一个变量score来存储用户输入的成绩。
然后,通过输入函数从用户处获取成绩,并将其赋值给score变量。
步骤二:编写分支程序根据成绩的不同范围,使用if语句来判断其对应的等级,并输出相应的提示信息。
以下是一个示例代码:if score >= 90:print("你的成绩为A级,非常优秀!")elif score >= 80:print("你的成绩为B级,很不错!")elif score >= 70:print("你的成绩为C级,还可以!")elif score >= 60:print("你的成绩为D级,勉勉强强!")else:print("你的成绩为E级,需要努力!")步骤三:输出结果根据用户输入的成绩,程序将会根据判断条件输出相应的等级和提示信息。
5. 实验结果假设用户输入的成绩为85,根据上述分支程序,程序将会输出以下结果:"你的成绩为B级,很不错!"6. 实验总结通过本次实验,我们学习了如何使用分支结构来编写程序。
分支结构是一种非常重要的控制结构,能够根据不同的条件选择执行不同的代码块。
合理使用分支结构可以使程序更加灵活和智能。
在实际编程中,我们可以根据具体需求设计不同的分支程序,以实现更复杂的功能。
天津大学<<汇编语言程序设计>>课程设计学院:职业技术教育学院学号:3008212012姓名:黄立宁班级:1指导教师:谢永超2010-4-26内容简介本程序为利用q、w、e、r、t、y、u、1-7作演奏音符制任意音乐的程序。
该程序能记录所演奏的音乐,能回放所演奏的音乐。
运行过程中,通过屏幕上显示的音符,输入一个不同的数发出不同的音调,即制作出不同的音乐。
每输入一数,屏幕上音符及提示闪烁一次,当输入数为9时,终止音乐的制作,将之前的音乐存入堆栈中,随后送入端口地址,即演奏出刚刚制作的音乐。
成绩:教师签字:目录开发环境 (1)功能描述 (1)系统功能结构框图 (2)程序代码 (3)运行结果 (11)课程设计体会 (12)参考文献 (13)题目:键盘控制发声程序----电子琴一、开发环境1.硬件环境微型计算机一台2.软件环境WindowsXP操作系统使用工具MASM 5.0,要进行汇编语言的编辑和运行,需要以下工作环境:⑴编辑程序,如EDIT.EXE、WORD⑵汇编程序,如MASM.EXE⑶连接程序,如LINK.EXE⑷调试程序,如DEBUG.EXE二、功能描述利用q、w、e、r、t、y、u、1-7作演奏音符制任意音乐的程序。
该程序能记录所演奏的音乐,能回放所演奏的音乐。
运行过程中,通过屏幕上显示的音符,输入一个不同的数发出不同的音调,即制作出不同的音乐。
每输入一数,屏幕上音符及提示闪烁一次,当输入数为9时,终止音乐的制作,将之前的音乐存入堆栈中,随后送入端口地址,即演奏出刚刚制作的音乐。
三、系统功能结构图(续上图):四、程序代码;利用q、w、e、r、t、y、u、1-7演奏音符的程序,能记录所演奏的音乐,能回放所演奏的音乐;********************************************************** DATA SEGMENTmsg DB 0DH,0AH,' 'DB 0DH,0AH,' [ 1 2 3 4 5 6 7 ]'DB 0DH,0AH,' [ q w e r t y u ]'DB 0DH,0AH,' _________________'DB 0DH,0AH,' 'DB 0DH,0AH,' 'DB 0DH,0AH,' *************************************' DB 0DH,0AH,' NOTICE ' DB 0DH,0AH,' Press 1-7 to make music and play it.'DB 0DH,0AH,' Press 9 to interrupt.'DB 0DH,0AH,' ********************************','$';音调(后面用到-1判断音乐播是否放完)sound_0 DW -1sound_11 DW 441,-1sound_12 DW 495,-1sound_13 DW 556,-1sound_14 DW 589,-1sound_15 DW 661,-1sound_16 DW 742,-1sound_17 DW 833,-1sound_1 DW 882,-1sound_2 DW 990,-1sound_3 DW 1112,-1sound_4 DW 1178,-1sound_5 DW 1322,-1sound_6 DW 1484,-1sound_7 DW 1655,-1time DW 25DATA ENDS;**********************************************************STACK SEGMENTDb 200 DUP ('STACK') ;将音符放入堆栈中STACK ENDS;********************************************************** CODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODE ;段说明START:MOV AX,DATAMOV DS,AXMOV aH,00 ;初始化显示方式MOV AL,00INT 10H;------------------定义一个显示宏SHOW MACRO bLEA DX,bMOV AH,9 ;将以"$"结尾的字符串显示在屏幕上,并将入口参数字符串的首地址的段基址和偏移地址分别放入DS和DX中INT 21HENDM;------------------定义一个声音宏onesound macro soundis,jumpis,letterisCMP AL,letterisJNZ jumpisLEA SI,soundisLEA BP,DS:timeCALL MUSICJMP inputENDM;--------------------show msg ;显示音符和提示;--------------------INPUT: MOV AH,01HINT 21H ;从键盘输入一个字符并显示CMP AL,'9'jnz gomov ah,4ch ;若输入9则返回DOS,终止制作音乐 int 21hgo: onesound sound_11,a0,'q'a0: onesound sound_12,b0,'w'b0: onesound sound_13,c0,'e'c0: onesound sound_14,d0,'r'd0: onesound sound_15,e0,'t'e0: onesound sound_16,f0,'y'f0: onesound sound_17,g0,'u'g0: onesound sound_1,h0,'1'h0: onesound sound_2,i0,'2'i0: onesound sound_3,j0,'3'j0: onesound sound_4,k0,'4'k0: onesound sound_5,l0,'5'l0: onesound sound_6,m0,'6'm0: onesound sound_7,n0,'7'n0: onesound sound_0,o0,alo0: jmp input;---------------------发声(将堆栈中的音符数据送到端口地址) GENSOUND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DI;时间间隔定时器(计数器2的初始化过程)MOV AL,0B6HOUT 43H,AL ;给公用的控制寄存器(地址为43H)赋值 MOV DX,12HMOV AX,348ch ;频率除数DIV DIOUT 42H,ALMOV AL,AHOUT 42H,ALIN AL,61H ;扬声器驱动(61H为输出寄存器分配I/O端口号)MOV AH,ALOR AL,3OUT 61H,AL ;打开扬声器WAIT1: MOV CX,3314 ;等待下一音符的到来call waitfDELAY1: DEC BX ;声音的延迟JNZ WAIT1MOV AL,AH ;关闭扬声器OUT 61H,ALPOP DIPOP DXPOP CXPOP BXPOP AXRETGENSOUND ENDP;*******************************waitf proc nearpush axwaitf1:in al,61hand al,10hcmp al,ahje waitf1mov ah,alloop waitf1 ;CX=0时退出循环,继续键入音符制作音乐pop axretwaitf endp;******************************MUSIC PROC NEARPUSH DSSUB AX,AXPUSH AXFREG: MOV DI,[SI]CMP DI,-1 ;音乐是否放完JE END_MUSMOV BX,DS:[BP] ;将音符放入堆栈CALL GENSOUND ;调发声子程序 ADD SI,2ADD BP,2JMP FREGEND_MUS:RETMUSIC ENDPCODE ENDS;*******************************END START五、运行结果图1 生成OBJ文件图2 生成EXE文件图3 运行结果六、课程设计体会这次课程设计使我对汇编语言有了更进一步的了解和熟悉,实际操作编写程序,并使之能在计算机上正确运行真的有点困难。
实验三:分支结构程序设计一、实验目的:1. 熟练掌握关系表达式和逻辑表达式的使用;2. 熟练掌握用嵌套的if语句和switch语句实现多分支结构程序设计;3. 熟练掌握switch语句中break语句的作用;4. 掌握简单的调试程序方法,包括:单步调试和运行到光标。
二、实验要求:1.编写程序,计算分支函数。
要求:输入为任意实数,输出结果保留小数点后2位。
输入输出示例:Enter x:227.00提示:实现x n可以标准库函数pow(x,n),此数学函数已在头文件math.h中说明。
2.编写程序。
根据一个年份,判断是否是闰年。
要求:输入为一个整数,表示一个年份;输出:如果是闰年,输出"Y es",否则输出"No"。
输出单独占一行。
输入输出示例:Enter year:2012Yes3. 编写程序。
给你三个正整数,判断用这三个整数做边长是否能构成一个三角形。
要求:输入为三个正整数,中间有一个空格隔开;输出:如果能构成三角形,输出"Yes",否则输出"No"。
提示:在一个三角形中,任意两边之和大于第三边。
输入输出示例:3 4 5Yes4.输入五级制成绩(A~E),输出相应的百分制(0~100)区间。
要求用switch语句。
五级制对应的百分制成绩区间为:A(90~100)、B(80~89)、C(70~79)、D((60~69))、E(0~59)。
输入输出示例:Input Grade:BB对应的百分制成绩区间是80~895.编写程序,输入月薪salary,输出应交的个人所得税tax(保留2位小数)。
按照2011年开始实行的新的个人所得税法,计算公式为:tax=rate*(salary - 3500)- deduction当salary ≤3500时,rate = 0、deduction = 0;当3500 <salary ≤5000时,rate = 3%、deduction = 0;当5000 <salary ≤8000时,rate = 10%、deduction = 105;当8000 <salary ≤12500时,rate = 20%、deduction = 555;当12500 <salary ≤38500时,rate = 25%、deduction = 1005;当38500 <salary ≤58500时,rate = 30%、deduction = 2755;当58500 <salary ≤83500时,rate = 35%、deduction = 5505;当83500 <salary时,rate = 45%、deduction = 13505。
深圳大学实验报告课程名称:面向对象程序设计实验名称:分支结构及循环结构程序设计班级:姓名:实验日期:年月日一、实验内容1、有一种古典加密方法就是按照字母表顺序,把每个字母循环右移k位,从而转换为加密的另一个字母。
例如偏移k=2位,即A对应C,B对应D,……X对应Z,Y对应A,Z 对应B。
编写一段程序实现该加密方法。
要求:1) 输入1-25之间的一个整数作为k;2) 输入一段英文字符串;3) 输出加密后的字符串;4) 能够正确解密出原始英文字符串,并输出。
三、实验代码与结果截图#include <iostream>using namespace std;int main(){int k,i=0;char str[20]={0};char a[20]={0},b[20]={0};cout<<"请输入k的取值(k在1到25取值)"<<endl;cin>>k;cin.get();cout<<"请输入字符串"<<endl;cin.getline(str, 20);while (str[i]!='\0') {if (str[i]>='A'&&str[i]<='Z') {if (str[i]+k<='Z') {a[i]=str[i]+k;}else a[i]=str[i]+k-'Z'+'A';}else if (str[i]>='a'&&str[i]<='z') {if (str[i]+k<='z') {a[i]=str[i]+k;}else a[i]=str[i]+k-'z'+'a'; }else a[i]=str[i];i++;}a[i]='\0';cout<<"加密后为:"<<a<<endl;i=0;while (a[i]!='\0') {if (a[i]>='A'&&a[i]<='Z') {if (a[i]-k>='A') {b[i]=a[i]-k;}else b[i]=a[i]-k+'Z'-'A';}else if (a[i]>='a'&&a[i]<='z') {if (a[i]-k>='a') {b[i]=a[i]-k;}else b[i]=a[i]-k+'z'-'a';}else b[i]=a[i];i++;}cout<<"解密后为:"<<b<<endl;}注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
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的逻辑关系,并上机进行验证。
宁德师范学院计算机系
实验报告
2011—2012学年 第 2学期)
课程名称 高级语言程序设计
实验名称
专 业
年 级 2011级
学号 姓名
指导教师
实验日期 2012.
实验三 分支结构程序设计
实验目的与要求:
(1) 熟练掌握关系表达式和逻辑表达式的使用。
(2) 熟练掌握用嵌套的if语句和switch语句实现多分支结构程序设计。
(3) 熟练掌握switch语句中break语句的作用。
(4) 掌握使用断点调试程序的方法。
实验设备(环境):
PC机、VC++
实验内容:
输入一个整数x,判断x能否被3、5、7整除,并输出以下信息之一。
① 能同时被3、5、7整除。
② 能被其中两数整除。
③ 能被其中一个数整除。
④ 不能被3、5、7任一个数整除。
源代码
方法一使用嵌套的if语句:
#include
int main(){
int n;
printf("请输入一个数:\n");
scanf("%d",&n);
if(n%3==0&&n%5==0&&n%7==0)
printf("此数能同时被3、5、7整除\n");
else if((n%3==0&&n%5==0)||(n%3==0&&n%7==0)||(n%5==0&&n%7==0))
printf("此数能被其中两数整除\n");
else if((n%3==0)||(n%5==0)||(n%7==0))
printf("此数能被其中一个数整除\n");
else printf("此数不能被3、5、7任一个数整除!\n");
return 0;
}
方法二使用switch语句:
#include
void main()
{
int n;
printf("请输入一个数:\n");
scanf("%d",&n);
switch((n%3==0)+(n%5==0)*2+(n%7==0)*4)
{
case 0:
printf("此数不能被3、5、7任一个数整除!\n");break;
case 1:
printf("此数能被其中一个数整除\n");break;
case 2:
printf("此数能被其中一个数整除\n");break;
case 4:
printf("此数能被其中一个数整除\n");break;
case 3:
printf("此数能被其中两数整除\n");break;
case 5:
printf("此数能被其中两数整除\n");break;
case 6:
printf("此数能被其中两数整除\n");break;
case 7:
printf("此数能能同时被3、5、7整除\n");
}
}
运行结果
小结:
通过本次实验我进一步熟悉了C语言操作环境,学习了两种条件语句,弄清了语
句格式和使用方法。学会了分别使用使用if嵌套语句和switch语句实现功能,其中在
使用if嵌套时要注意分清层次,明白else所对应的应当是离得最近的if语句,防止发
生逻辑错误。条件判断语句可以结合逻辑运算符更好得实现。
指导教师评语:
成绩评定
教师签字
年 月 日
备注:
注:1、报告内的项目或设置,可根据实际情况加以补充和调整
2、教师批改学生实验报告应在学生提交实验报告10日内