最新实验四分支循环结构程序设计

合集下载

汇编语言-实验四-循环分支程序设计

汇编语言-实验四-循环分支程序设计

实验四循环分支程序设计一&实验目的1、熟悉汇编语言源程序的编辑、汇编、连接及调试过程。

2、掌握循环及分支程序的设计方法;3、学会针对不同的问题,选用不同的循环分支结构设计方法;二&实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。

三&实验要求1、使用正确的指令格式和程序结构编写实验内容要求的所有程序;2、对编写或改写的程序进行汇编连接时,注意对错误信息的处理;3、熟悉源程序汇编、连接的使用方法。

四&实验内容1、使用程序1掌握汇编语言程序上机过程,2、阅读程序2,理解程序功能并上机运行,使用debug检验结果。

3、编写一个程序,判别键盘上输入的字符;若是1-9字符或A-Z ,则显示之;若为a-z字符,均显示“A-Z”;若是<ESC>(其ASCII码为1BH),则结束程序。

4、改写任务三中的程序:输入小写字母a时,显示内容为aA*输入小写字母a时,显示内容为a***输入小写字母a时,显示内容为aa***五&实验步骤1、用EDIT编辑软件,编写.ASM源程序。

2、对其进行汇编及连接,产生.EXE文件。

3、在DOS下运行.EXE文件进行。

4、实验程序清单1)程序1:stack segmentdw 512 dup(?)stack endsdata segmentstring db 'Hello, Everybody !','$'data endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset stringmov ah,9int 21hmov ax,4c00hint 21hcode endsend start2)程序2data segmentx db 20hy dw ?data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov al,xmov bl,10xor ah,ahshl ax,1mov bx,axmov cl,2shl ax,cladd ax,bxmov y,axmov ax,4c00hint 21hcode endsend start3)程序3:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start4)改写程序1:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bmov ah,2int 21hmov al,'*'nd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start5)改写程序2:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndmov al,'*'mov cx,2ok: mov dl,almov ah,2int 21hloop oknd: mov dl,almov ah,2int 21hjmp againint 21hcode endsend start6)改写程序3:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndmov dl,almov ah,2int 21hmov al,'*'mov cx,2ok: mov dl,almov ah,2int 21hloop oknd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start六&思考题:编写一个程序,显示AL寄存器中的两位十六进制数。

实验4 程序设计(4学时)

实验4 程序设计(4学时)

实验4 程序设计(4学时)目的与要求1.掌握VFP程序设计特点,程序文件的建立、修改和运行方法;2.掌握环境设置语句的含义和基本输入输出命令的使用;3.掌握VFP的顺序、选择和循环结构的设计方法;4.掌握程序设计过程中参数传值和传引用的传递规则;5.掌握子程序、过程和自定义函数的建立,以及调用与返回规则;6.掌握内存变量的作用域属性及对参数传递的影响。

实验内容一、实验准备1.参照“附录一”,熟悉VFP 6.0 程序文件的建立、修改和运行方法;2.将ftp上实验指导书文件夹中“实验项目5、6用表”文件夹下的学生表(student.dbf)、成绩表(score.dbf)、课程表(course.dbf)以及备注文件“student.fpt”四个文件,拷贝到C:\Program Files\Microsoft VisualStudio\Vfp98目录下,然后完成实验。

示例与程序中用到的三个表结构如下,各位同学可以参照这些结构还原这三个数据表之间的相互关联。

二、顺序结构程序设计1.VFP的顺序程序设计方法。

2.完成如下程序设计:(1)物体长度可以用公制或者英制单位表示,已知公制长度单位为毫米(mm),英制单位长度为英寸(inch),其转换公式为1 inch = 25.4 mm,编写程序将输入的英制长度转换为公制后输出。

(2)从键盘输入圆锥体的半径(r)和高度(h),计算其体积并输出,体积计算公式为v = π * r * r * h / 3。

(3)求方程ax2 + bx + c = 0的根,a, b, c的值从键盘输入(假设输入的a, b,c值满足b2– 4ac ≥ 0,不考虑虚根的情况)。

(4)由键盘输入学生名,将“student表”中该学生的奖学金增加100元,并显示该学生修改后的奖学金。

(5)分析下面程序的输出结果。

USE studentINDEX ON 姓名TAG nameidxACCEPT "请输入要查找的学生姓名" TO 姓名SEEK M -> 姓名DISPLAY三、选择结构程序设计1.VFP的选择程序设计方法。

实验四分支和循环程序设计实验(精)

实验四分支和循环程序设计实验(精)

实验四分支和循环程序设计实验一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。

二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。

汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。

1.无条件转移指令 JMP无条件转移指令 JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。

2.条件转移指令 JXX条件转移指令可分为三大类:1).简单条件转移指令指令。

根据单个标志位的状态判断转移条件。

标志位指令转移条件意义CFJC CF=1 有进位/借位JNC CF=0 无进位/借位ZFJE/JZ ZF=1 相等/等于 0JNE/JNZ ZF=0 不相等/不等于 0SFJS SF=1 是负数JNS SF=0 是正数OFJO OF=1 有溢出JNO OF=0 无溢出PFJP/JPE PF=1 有偶数个 1JNP/JPO PF=0 有奇数个 12).无符号数条件转移指令。

假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是 A-B,其转移指令如下:指令转移条件意义JA/JNBE CF=0 AND ZF=0 A>BJAE/JNB CF=0 OR ZF=1 A>=BJB/JNAE CF=1 AND ZF=0 A<BJBE/JNA CF=1 OR ZF=1 A<=B3).带符号数条件转移指令。

指令转移条件意义JG/JNLE SF=OF AND ZF=0 A>BJGE/JNL SF=OF OR ZF=1 A>=BJL/JNGE SF OF AND ZF=0 A<BJLE/JNG SF OF OR ZF=1 A<=B四、实验内容与步骤1、判断方程 AX2+BX+C=0是否有实根。

实验四 循环结构程序设计

实验四 循环结构程序设计

实验四循环结构程序设计一、实验目的1.掌握3种循环结构:while ,do—while ,for 的区别与联系,以及它们之间相互转换的方法,并能正确使用它们。

2.掌握与循环语句相关的break 语句和continue 语句的使用方法二. 实验内容1.输入正整数n,计算n的阶乘。

【分析】由于n!=1*2*3*……*n,因此,要计算n的阶乘可以从1开始,由1的阶乘乘以2得到2的阶乘,再乘以3得到3的阶乘.......以此类推。

【程序】【要求】(1)分别输入数据 -2, 1 ,5, 10, 20 调试运行程序,并记录程序结果。

(2)删除程序中//A 处的赋值语句 return 1; 重新以上述数据调试运行程序,结果是否正确,如果不正确,该如何修改?答:结果正确。

(3) 删除程序中//B处的语句 result=1;重新以上述数据调试运行程序,结果是否正确,如果不正确,该如何修改?答;不正确。

应该为int result 。

(4) 将程序中语句 double result=0; 改为 int result=0; 重新以上述数据调试运行程序,结果如何?为什么?答:结果变为整数,而非科学技术。

因为double是双精度型,而int是整数型。

2.范例:编程计算求π的近似值。

【程序】【要求】(1)输入程序编译后使用Debug跟踪,单步执行程序,记录以下变量值的变化。

回答以下问题:a)从跟踪结果分析,term和sum的值有什么错误?b)循环结束后,i的值是多少?用什么简单的办法可以看到?答:在倒数第二行加上:cout<<"i="<<i<<endl;以后就可以看到,i的值是46341. c)对程序作何修改可以使其得到正确的结果?3.将输入的小写字母转换成大写字母。

【分析】由ASCII码表可以看出,大写英文字母的ASCII码值在65至90之间,小写英文字母的ASCII 码值在97至122 之间,每一个英文字母的大写和小写的ASCII码相差32。

四《C语言程序设计》实验四选择结构程序设计实验目的1、掌握分支

四《C语言程序设计》实验四选择结构程序设计实验目的1、掌握分支

四《C语言程序设计》实验四选择结构程序设计一、实验目的1、掌握分支语句的格式和功能。

2、掌握选择结构的程序设计。

3、掌握分支结构的嵌套。

二、实验内容与要求1、编程,计算下列分段函数值:x2+3x-4,x<0且x≠-4f(x)= x2-6x+5,0=x<10且x≠1及x≠5x2-4x-1,其他要求如下:(1)用if语句实现分支。

自变量x与函数值均采用双精度类型。

(2)自变量x值从键盘输入,且输入前要有提示信息。

(3)数据的输出格式采用以下形式:x=输入值,f(x)=计算值(4)分别以-3.0,-1.0,0.5,1.5,2.5,3.5,4.5,5.5为自变量,运行该程序。

记录结果。

(5)源程序以sy4_1.c存盘。

2、编程,将一个百分制成绩转换成等级制成绩。

具体要求如下:(1)百分制与等级制的对应关系如下:(3)用键盘输入百分制成绩,输入前要有提示信息。

(4)要能判断输入数据的合理性,对于不合理的数据应输出错误信息。

(5)输出结果中应包含百分制成绩和成绩等级。

(6)分别输入成绩-10,99,60,85,70,101,45,运行该程序。

记录结果。

(7)源程序以sy4_2.c存盘。

三、思考题1、实现选择结构程序设计的方法有哪几种?各有什么特点?适用条件是什么?2、如何设置选择结构中的判断条件?它在程序设计中的意义何在?实验五循环结构程序设计(1)一、实验目的1、掌握循环的概念。

2、掌握三种常用的循环语句的格式和功能。

3、初步掌握循环结构的编程方法。

二、实验内容与要求1、编程,分别利用三种循环语句,求1+2+3+…50之和。

要求如下:(1)输出计算结果;数据的输出格式采用以下形式:1+2+3+…50=计算值(2)源程序分别以sy5_1.c、sy5_2.c、sy5_3.c存盘。

2、编程,穷举算法解百马百担问题(有100匹马驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?)要求如下:(1)输出计算结果;在数据输出之前应有提示信息。

实验四 循环结构程序设计

实验四  循环结构程序设计
/* 求最大公约数算法1 */
#include "stdio.h"
void main( )
{
}
2.从整数1开始向上找,直至m和n中较小的数,每找到一个能同时被m和n整除的整数,将其存入一个变量中,当循环结束时,变量中存放的即为最大公约数。设n为m和n中较小的数,则如下程序段可实现:
for(k=1; k<=n; k++) if(m%k==0 && n%k==0) x=k;
}
2.字符常量’0’与数值常量0是不同的。
(六)下面程序的功能是:计算1到100之间的奇数之和及偶数之和,并输出。请在程序中的横线上填入适当的内容,将程序补充完整并运行。
/* c4-6.c */
/* 计算1到100之间的奇数之和及偶数之和 */
#include "stdio.h"
void main( )
六、思考题
(一)求两个正整数x和y的最大公约数,请填空。
/* 求最大公约数程序 */
#include "stdio.h"
void main( )
{ int x,y,t,i;
printf("请输入两个数:");
scanf("%d,%d",&x,&y); /*注意scanf语句中间用“,”隔开*/
if(x > y){t = x; x = y; y = t;}
程序的基本结构如下:
/* c4-9.c */
/* 按条件求数列和 */
#include "stdio.h"
void main( )
{定义变量;
变量赋初值;

Python程序设计实验报告四循环结构程序设计

Python程序设计实验报告四循环结构程序设计

Python程序设计实验报告四循环结构程序设计实验报告四:循环结构程序设计实验目的:通过本实验,学生将学会使用Python编程语言中的循环结构来设计和实现程序。

实验内容:1. 了解循环结构的概念和基本语法;2. 熟悉Python中的三种循环结构:for循环、while循环和嵌套循环;3. 设计并实现使用循环结构的程序;4. 调试和运行程序,验证程序的正确性。

实验步骤:1. 确定实验题目和要求;2. 分析问题,确定所需的循环类型和循环变量;3. 根据循环类型和循环变量,编写循环结构的代码;4. 调试代码,确保程序的正确性;5. 运行程序,观察程序输出结果是否符合实验要求;6. 如果结果不正确,根据错误信息进行修改,重新运行程序;7. 记录实验结果和对程序的修改;8. 完成实验报告,并附上程序代码。

实验示例:下面是一个使用循环结构的Python程序设计示例,旨在计算并输出1到100之间所有偶数的和。

```python# 循环结构程序设计示例# 计算1到100之间所有偶数的和sum_even = 0 # 用于存储偶数的和for i in range(1, 101):if i % 2 == 0:sum_even += iprint("1到100之间所有偶数的和为:" + str(sum_even))```在上述示例中,我们使用了for循环结构来遍历1到100之间的所有数字。

通过判断每个数字是否为偶数,我们累加所有偶数的和,并最终输出结果。

结论:通过本次实验,我们学会了使用Python的循环结构来设计和实现程序。

循环结构是程序设计中非常重要的一种结构,可以帮助我们处理大量的重复操作,提高程序的效率。

在实际编程中,我们需要根据问题的需求,选择合适的循环类型和循环变量,并合理地设计和调试程序。

通过不断练习和实践,我们将进一步提升自己的编程能力。

实验报告4

实验报告4

实验四:循环结构程序设计班级:学生姓名:学号:一、实验目的1、理解循环的概念2、理解并掌握循环结构相关语句的含义、格式及使用3、学会循环的应用及控制,包括:①掌握使用循环输入多个数据的方法②掌握在多个数据中有选择地输出数据的方法③掌握在多个数据中对某种数据进行计数的方法④掌握求多个数据中最大值、最小值的方法⑤掌握使用break、continue语句终止循环4、掌握循环的嵌套二、知识要点1、循环变量、循环条件、循环体的概念2、三种循环语句的一般格式、执行过程3、理解选择结构与循环结构中“条件表达式”之不同含义4、二重循环的执行过程三、实验预习(要求做实验前完成)1、循环变量的主要用途是:2、用循环求多个数的和之前,先要把和的初始值赋为:3、用循环求多个数的乘积之前,先要把乘积的初始值赋为:4、字符变量能否作为循环变量?5、循环过程中,如果循环条件成立,但需要结束循环,可采用什么办法?6、什么叫循环的嵌套?四、实验内容(要求提供:①算法描述或流程图②源程序)1. 编程,利用循环计算以下表达式的值:(5+52)*(4+42)*(3+32)*(2+22)*(1+12)*(1/2+1/3+1/4+1/5)(for循环)include <stdio.h>#include <stdlib.h>int main(){int a;double sum=1,sum1=0;for(a=1;a<=5;a++)sum=sum*(a+a*a);printf("结果为%lf\n",sum);for(a=2;a<=5;a++)sum1=sum1+(1.0/a);printf("%lf\n",sum1);printf("结果为%lf\n",sum*sum1);return 0;}2. 编程,从键盘输入若干个整数,当输入0时,输入停止。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四分支循环结构
程序设计
实验四、分支循环结构程序设计
一、实验目的
1.通过本实验,加深对循环控制结构有关概念的理解。

2.熟练掌握while、do-while和for三种循环控制语句的特点,掌握循环结构程序设计和调试方法。

3.掌握二重循环结构程序的设计方法。

二、实验内容
1.用while循环实现数据统计问题。

数据统计问题:从键盘输入一批任意数量的整数,统计其中不大于100的非负数数值的个数。

2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问题。

调试数据仍参照上面给出的几种情况设计使用。

3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。

4.阶乘累加问题。

编写程序,求1+2!+3!+…+n!的值(习题5.9)。

三、实验指导
1.用while循环实现数据统计问题。

⑴编程分析
由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不
确定的。

在进行程序设计时,确定循环控制的方法是本实验的一个关键
问题。

循环控制条件可以有多种确定方法:
①使用一个负数作为数据输入结束标志。

②输入一个数据后通过进行询问的方式决定是否继续输入下一个数据。

⑵参考程序
l 参考程序一
/* 使用负数作为数据输入结束标志的程序 */
#include "stdio.h"
void main()
{
int m,counter=0;
while(1)
{
printf("请输入一个整数:");
scanf("%d",&m);
if(m<0)break;
if(m<=100)counter++;
printf("\n");
}
printf("符合要求的整数个数为: %d\n",counter);
}
l 参考程序二
/* 通过进行询问的方式决定是否继续输入下一个数据的程序 */
#include "stdio.h"
void main()
{
int m,counter=0;
char ask;
while(1)
{
printf("请输入一个整数:");
scanf("%d",&m);
getchar();
if(m>=0&&m<=100)counter++;
printf("继续输入下一个数据?(Y/N)");
ask=getchar();
getchar();
if(ask!='y'&&ask!='Y')break;
printf("\n");
}
printf("符合要求的整数个数为: %d\n",counter);
}
⑶程序调试
这里只对“参考程序一”的调试数据进行设计。

该程序输入数据时,应考虑多种数据组合,对每一组数据察看并分析结果。

例如:
①输入的一组数据之间全部以空格分隔,只有最后一个数为负数,以回车键结束。

如:
16 35 7 –10
②输入的一组数据之间全部以空格分隔,在负数之后又有正数数据,最后一个数不为负数,以回车键结束。

如:
16 35 7 –10 96 17
③输入的一组数据之间全部以空格分隔,输入数据中有多个负数,以回车键结束。

如:
16 35 7 –10 96 17 –87 7
④输入的数据中有大于100的整数。

如:
16 35 7 –10 96 117 –87 267 66
⑤数据之间既用空格分隔,也用回车键分隔。

如:
76 35 376 22 717
96 67
96 17 –87 719 66 98 2 -16 31
⑥每输入一个数据后均按回车键。

⑦输入的第一个数据即为负数。

⑧在输入的数据中使用数值很大的整数。

如:
17 66778 98765 17 899 -109 87
⑷在上面的“参考程序一”中,使用了常数“1”作为循环控制的条件,这是常用的循环控制方式。

请修改上面的程序,不使用常数循环条件,仍然使用while语句实现数据统计问题。

2.编写并调试程序,使用do-while循环控制语句实现数据统计问题。

⑴参考程序
/* 使用负数作为数据输入结束标志的程序 */
#include "stdio.h"
void main()
{
int m,counter=0;
do
{
printf("请输入一个整数:");
scanf("%d",&m);
if(m<0)break;
if(m<=100)counter++;
printf("\n");
}while(1);
printf("符合要求的整数个数为: %d\n",counter);
}
⑵调试指导
调试数据仍参照上面给出的几种情况设计使用。

3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。

⑴参考程序
/* 用for循环控制语句实现的数据统计问题程序 */
#include "stdio.h"
void main()
{
int m,counter;
for(counter=0;1;)
{
printf("请输入一个整数:");
scanf("%d",&m);
if(m<0)break;
if(m<=100)counter++;
printf("\n");
}
printf("符合要求的整数个数为: %d\n",counter);
}
注意:
for循环控制语句的一般格式通常有三个表达式,本参考程序中使用的for循环控制语句在格式上只有两个表达式。

请读者注意学习这种用法。

⑵请修改程序,使用完整格式的for循环控制语句实现上面的数据统计问题。

4.阶乘累加问题。

⑴编程分析
①本实验内容是求解阶乘问题。

②求n!用一个循环即可实现。

③求1+2!+3!+…+n!的值即为求1+ ,需要在求n!程序之外增加一个外重循环。

⑵参考程序
/* 求1+2!+3!+…+n!程序 */
#include "stdio.h"
void main()
{
long int s=1,t;
int i,j,n;
printf("n=");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
for(t=1,j=1;j<=i;j++)
t*=j;
s+=t;
}
printf("s=%ld\n",s);
}
⑶程序调试
①输入一个不大的正整数,分析程序执行结果。

②输入一个零或者负数,分析程序执行结果。

③输入一个很大的正整数,分析程序执行结果。

④当程序结果不符合要求时,修改程序,直到对任何输入数据都能输出正确的执行结果,或者给出一个明确的提示信息。

例如,当输入数据非法时,给出一个恰当的提示信息。

四、思考题
1.完善实验内容1的“数据统计问题”程序,使得对于任何数值,都能进行正常的数据统计。

2.用一个单循环程序实现实验内容4的阶乘累加问题。

3.修改实验内容4的程序,实现对任意多个整数求阶乘的累加和。

相关文档
最新文档