最新实验四分支循环结构程序设计
汇编语言-实验四-循环分支程序设计
实验四循环分支程序设计一&实验目的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学时)目的与要求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、掌握分支语句的格式和功能。
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)输出计算结果;在数据输出之前应有提示信息。
实验四 循环结构程序设计
#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编程语言中的循环结构来设计和实现程序。
实验内容: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
实验四:循环结构程序设计班级:学生姓名:学号:一、实验目的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时,输入停止。
matlab实验4_循环结构程序设计_参考解答
高教社刘卫国《MATLAB 程序设计与应用》(第二版)实验参考解答
实验四:循环结构程序设计
clear all; close all; clc; y=0; n=1; while y<3
y=y+1/(2*n-1); n=n+1; end n=n-1; y=y-1/(2*n-1) n=n-1
运行结果:
y= 2.9944
x1=a/(b+x0); y=abs(x1-x0); x0=x1;
MATLAB 语言
3
WangChengyou © 山东大学威海分校
高教社刘卫国《MATLAB 程序设计与应用》(第二版)实验参考解答
实验四:循环结构程序设计
n=n+1; end x1 r1=(-b+sqrt(b^2+4*a))/2 r2=(-b-sqrt(b^2+4*a))/2
clear all; close all; clc; prime=[]; for n=2:49
x=n*(n+1)-1; signx=0; for k=2:sqrt(x)
MATLAB 语言
5
WangChengyou © 山东大学威海分校
高教社刘卫国《MATLAB 程序设计与应用》(第二版)实验参考解答
根据
π2 6
=1 12
+
1 22
+1 32
+"+
1 n2
,求 π 的近似值。当
n
分别取
100、1000、10000
时,
结果是多少?
要求:分别用循环结构和向量运算(使用 sum 函数)来实现。 答:程序设计:
(1) 循环结构
C语言实验报告 实验四 参考答案
实验四循环结构程序设计2(参考答案)(1)编写程序sy4-1.c,输入n,计算并输出如下多项式的值:S n=1+1/2!+1/3!+1/4!+…+1/n!。
例如输入n为15时,输出1.718282。
算法分析:第一项可以看成1/1!,用循环控制累加n个分式,分式的分母是i!,分子固定为1。
参考答案:# include <stdio.h>void main(){double s=0,p=1;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){p = p * i ; //计算分母i!s = s + 1 / p ; //累加}printf("s=%lf\n",s);}运行结果:(2)编写程序sy4-2.c,输入n,根据以下公式计算s:,例如当n=11时,结果为1.833333。
算法分析:该多项式的分母是累加。
参考答案:# include <stdio.h>void main(){double sn=0,s=0;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){s = s + i ; //计算分母1~i的累加和sn = sn + 1 / s ;}printf("sn=%lf\n",sn);}运行结果:(3)编写程序sy4-3.c,计算3~n之间所有素数的平方根之和,要求:输入n,输出结果。
例如,输入n 的值是100,则输出结果是148.874270。
注意n应在2~100之间。
算法分析:穷举3~n之间的数找素数,若是素数则累加她的平方根。
参考答案:# include <stdio.h># include <math.h>void main(){int i,j,n,flag;double s=0;scanf("%d",&n);for(i=3;i<n;i++) //穷举3~n之间找素数{flag=1; //假设当前的i是素数,标志变量设为1for(j=2;j<i;j++) //穷举要判断是否是素数的i的除数,范围2~i-1if(i%j==0) //若i能被j整除,则不是素数{ flag=0; break; } //标志变量改为0,并终止循环if( flag == 1 )s = s + sqrt( i ); //若i是素数,则累加sqrt(i)}printf("s=%f\n",s);}运行结果:(4)编写程序sy4-4.c,根据以下公式求p的值,(m与n为两个正整数且m>n)。
实验4 循环结构程序设计
实验4 循环结构程序设计(一)实验目的要求1.掌握“当”型循环控制语句do while…enddo程序设计的方法。
2.掌握“计数”型循环控制语句for…endfor|Next程序设计的方法。
3. 掌握“指针”型循环控制语句scan…endscan程序设计的方法。
(二)实验内容1.do while…enddo编程。
2.for…endfor|Next编程。
3. scan…endscan编程。
(三)实验指导实验4-1计算1~100之间自然数的和。
具体操作如下:(1)创建程序文件“L10-14-2.prg”,内容如图4-1所示:图4-1⑵运行程序实验4-2根据“员工”表,统计物业部的员工人数。
具体操作如下:(1)创建程序文件“L10-15.prg”,内容如图4-2所示:图4-2(2)运行程序,结果如下:物业部的员工人数是: 6实验4-3从键盘输入10个数,求其中的最大数。
具体操作如下:(1)创建程序文件“bcl4.prg”,内容如图4-3所示:图4-3 (2)一次程序运行的结果如下:实验4-4计算10!。
具体操作如下:(1)创建程序文件“L10-16.prg”,内容如下:图4-4 (2)运行程序,结果如下:实验4-5计算S的值(S=2!+4!+6!+8!+10!)。
具体操作如下:(1)创建程序文件“L10-17.prg”,内容如下:图4-5(2)运行程序,结果如下:实验4-6计算“员工”表中所属“物业部”的职工的人数。
具体操作如下:(1)创建程序文件“L10-17.prg”,内容如下:图4-6(2)运行程序,结果如下:实验4-7输出1-100自然数中被3整除的数据的个数及它们的和。
具体操作如下:(1)创建程序文件“bcl5-1.prg”,内容如下:图4-7(2)运行程序,结果如下:实验4-8计算1+2+3+……,当和刚刚大于10000时,所加的最后一个数和最后的和为多少。
具体操作如下:(1)创建程序文件“bcl6.prg”,内容如下:图4-8(2)运行程序,结果如下:实验4-9由键盘输入10个数,按由小到大的顺序输出这10个数。
实验:基本循环语句程序设计(写实验报告)(提交电子作业)
实验四: 基本循环语句程序设计
一、实验目的和要求
1. 掌握For语句的使用。
2.掌握while循环语句的使用。
3. 掌握Do{While|Until}…Loop与Do…Loop{While|Until}两种形式的使用。
4.掌握如何控制循环条件, 防止死循环或不循环。
5. 熟练掌握循环条件设置及循环的控制方法。
二、实验内容
题目:
(1)求出1~1000之间所有是7的倍数的整数之和(如7, 14…), 并通过单击命令按钮将这些整数, 以及它们之和输出在窗体上。
程序的运行界面如图所示。
(2)实训指导书P41中实训5.5
三、实验步骤
1. 程序的界面设计
备注: 学生将程序界面设计画出来
2. 对象属性设置.
属性设置画出来
3. 程序主要代码。
备注: 学生将程序代码写出来
4. 运行结果。
四、实验总结(可以从以下几个方面来总结: 你在编程过程中花时多少?时间是怎么分配的?多少时间在思考问题?遇到了哪些难题?你是怎么克服的?你对你的程序的评价?你的收获有哪些?)。
实验四循环结构程序设计(一)
实验四循环结构程序设计(一)实验目的1.熟练使用while、do-while语句实现循环程序设计2.理解循环条件和循环体,以及for、while和do-while语句的相同及不同之处3.掌握嵌套循环程序设计4.熟练掌握下拉菜单Debug的程序调试方法实验内容1.调试示例:输入2个正整数m,n,输出它们的最小公倍数和最大公约数。
源程序(有错误的程序)#include<stdio.h>void main(){ int m,n,j,k;printf(“input m n\n”);while(scanf(“%d%d”,&m,&n),m<0 && n<0);j=m;while(j/n!=0)j=j+m;k=(m*n)/j;printf(“最小公倍数是%d\n最大公约数是%d\n”,j,k);}运行结果(改正后程序的运行结果)Input m n: 3 7最小公倍数是21最大公约数是1“编译”菜单中的调试命令和调试工具栏中按钮的功能是一样的,可以使用“编译”菜单来调试程序。
1)输入并保存上述程序后,再进行编译和连接,没有出现错误信息。
2)调试程序开始,设置3个断点,执行“编译”->“开始调试”->去命令,运行程序,输入“-3 7”3)程序执行到第一个断点,变量窗口显示m=-3,n=7,说明有错。
因为如果输入负数,必须重新输入,直到输入2个正数为止。
注意:此时菜单栏中新出现一个“Debug”菜单,包括了调试工具栏中所有的调试工具,用户可以选择使用“Debug”菜单或调试工具栏来调试程序。
作用相同。
4)单击图标或按组合键Shift+F5停止调试,通过仔细分析,发现循环条件中m<0 && n<0应该是m<0||n<0。
注意:此时,不一定要停止调试,用户可以在Watch窗口输入m=3,再继续调试。
5)把&&改为||,重新编译和连接,然后单击图标或组合键Ctrl+Shift+F5重新开始调试,再单击图标或F5键,输入-3 7后,箭头如果不动,说明需要重新输入数据。
C++实验四 循环结构的程序设计
printf("\n");
}
4.求1!+2!+3!+…+n源自的值,n由键盘输入。解题思路:
首先,认真解读题目,该题首先是要用到两个for循环结构,分别控制n!的输出和n个阶乘相加,输入n,由n控制运算到几的阶乘为止,先用for语句实现循环,控制循环次数,i由1变到n,共循环n次,再在for循环中再嵌套一个for循环,控制第i次循环时输出的数,把第i次循环时输出的数加到sum上,再执行i++,使i的值加1,循环n次,最后输出sum。
关键代码:
for(i=1;i<=n;i++)
{
s=1;
for(j=1;j<=i;j++)
{
s=s*j;
}
sum=sum+s;
}
printf("%d\n",sum);
B.do while,while循环结构
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
解题思路:首先,认真解读题目,该题首先是要用到if语句和while循环结构,输入m和n两个正整数,先用if语句使n<m时,m和n两个正整数所赋的值互换,确保n>m,再p=n*m,再用while循环结构,在m不等于0时,用辗转相除法,算出他们的最大公约数,最后输出最大公约数为n,最小公倍数为p/n。
关键代码:
float a,x0,x1;
scanf("%f",&a);
x0=a/2;
x1=(x0+a/x0)/2;
do
{
x0=x1;
x1=(x0+a/x0)/2;
MATLAB实验四 选择结构和循环结构程序设计
实验四 选择结构和循环结构程序设计实验目的:1.掌握建立和执行M 文件的方法 2.掌握利用if 语句实现选择结构的方法 3.掌握利用switch 语句实现多分支选择结构的方法 4.掌握利用for 语句实现循环结构的方法 5.掌握利用while 语句实现循环结构的方法 6. 熟悉利用向量运算来代替循环操作的方法实验内容:1. 求分段函数的值。
3及2其它,1x 且50,653且0,6222≠⎪⎩⎪⎨⎧--≠<≤+--≠<-+=x x x x x x x x x x y用if 语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。
x=input('请输入x 的值:x=');if(x<0&x~=-3)y=x.*x+x-6elseif(x>=0&x<5&x~=2&x~=3)y=x.*x-5.*x+6elsey=x.*x-x-1end请输入x 的值:x=[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0]y =29.0000 11.0000 -1.0000 1.0000 2.7500 5.0000 19.00002. 输入一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。
其中90分~100分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。
要求:a) 分别用if 语句和switch 语句实现。
If 语句x=input('请输入分数:')if(x<=100&x>=90)disp('A')elseif(x>=80&x<=89)disp('B')elseif(x>=70&x<=79)disp('C')elseif(x>=60&x<=69)disp('D')elseif(x<60)disp('E')end请输入分数:95x =95Aswitch语句c=input('请输入分数:')switch ccase num2cell(90:100)disp('A')case num2cell(80:89)disp('B')case num2cell(70:79)disp('C')case num2cell(60:69)disp('D')case num2cell(0:59)disp('E')end请输入分数:83c =83Bb)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
实验四、分支和循环结构程序设计
实验四分支和循环结构程序设计
一、实验目的
1.掌握汇编语言顺序结构程序设计。
2.掌握汇编语言分支结构程序设计。
3.掌握汇编语言循环结构程序设计。
二、实验类型:验证
三、实验内容
1.编程将无符号字节数组ARRAY的最大和最小值找出来,分别存放到变量MAX和MIN 中,数组以0结束。
2.编程输入四位数字年份,判断是否是闰年,是则输出y,不是输出n
3.编程在屏幕上打印下列图示N行*号,N为一位十进制数,从键盘输入。
*
***
*****
……………..
4.编程:输入一个3~9的数字字符,输出由数字组成的三角形。
例如:输入4,则输出1
22
333
4444
5.编程:从键盘输入10个有符号数,然后从小到大排序后输出。
五、实验报告
1.编写程序,写出程序清单。
2.记录程序运行结果。
实验四 分支和循环程序设计实验(设计性实验)
内存0770:0000到0007存有字节型字符串,0008中的值07H就是字符串的长度; 0009到0015存有字型字符串,0017中的05H是该字符串的长度;
五、心得体会
这次实验内容所用到的方法基本是在之前实验中就有用到过的,只不过在学习了循环之
后再编得得程序相比之前的实验程序更加简练,逻辑性更强。通过这次练习,我对这些跳转 指令也运用的更加熟练和灵活。用熟这些指令我认为是编好汇编程序的基础,毕竟一个像样 的程序是少不了使用循环的。合理的运用才能编出好程序。
INC CMP JNZ MOV MOV MOV DEC DEC DEC L2:
SI STRING1[SI],'$' ;判断字符是否为'$' L1 LENGTH1,CX ;循环结束时CX为字符串个数 SI,0 CX,0 CX SI SI
INC CX INC SI INC SI CMP STRING2[SI],'$' ;判断字符是否为'$' JNZ L2 MOV LENGTH2,CX ;循环结束时CX为字符串个数 MOV AH,4CH INT 21H CODES ENDS END START 程序结果:
MOV AL,NB IMUL NB MOV BX,AX MOV AL,NA IMUL NC MOV CX,4 IMUL BX CMP BX,AX JS NONE INC TAG MOV AL,TAG NONE: MOV AH,4CH INT 21H CODES ENDS END START 运行结果:
JMP SHURU DA: MOV DL,DAXIE MOV AH,2 INT 21H JMP SHURU XIAO: MOV DL,XIAOXIE MOV AH,2 INT 21H JMP SHURU FINISH: MOV AH,4CH INT 21H CODES ENDS END START 程序结果:
【实验指导书】实验4:循环结构程序设计打印
实验四:循环结构程序设计一、实验目的:1. 熟练使用for()、while()和do-while()三种语句实现循环程序设计;2. 理解循环条件和循环体,以及体会for()、while()和do-while()语句的相同及不同之处;3.掌握break和continue语句的使用。
二、实验要求:1. 编写程序,输入一个正整数n,输出2/1+3/2+5/3+8/5+……的前n项之和,保留2位小数。
(该序列从第二项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)。
2. 水仙花数是指各位数字的立方和等于该数本身的三位数。
例如,153是水仙花数,因为153=13+33+53。
请编程计算并输出所有的水仙花数。
3. 编写程序,输入一批正整数(以零或负数为结束标志),求其中的偶数和。
要求:使用while()语句和do-while()分别实现此程序。
4.古代《张丘建算经》中有一道百鸡问题:鸡翁一,值钱五;母鸡一,值钱三;鸡雏三,值钱一。
百钱买百鸡,问鸡翁、母、雏各几何?其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。
请用穷举法编程计算,若用100元买100只鸡,则公鸡、母鸡和小鸡各能买多少只。
提示:参照教材例题【4-12】。
5.一球从100米高度自由落下,每次落地后反弹回原高度的一半,然后再落下再反弹。
求它在第10次落地时,共经过多少米?第10次反弹多高?试编写相应程序。
6.编写程序,打印出以下图案:7.[拓展题]编写程序,输入两个正整数m和n,求其最大公约数和最小公倍数。
三、实验内容:(在实验课之前,根据实验要求,将程序流程图、源代码和测试用例整理于此;实验课上机调试过程中,发现错误,则直接在上面用其它颜色标记并修改出来。
)四、实验结果&总结:(列出实验过程中的收获和遇到的困难)实验报告撰写要求1. 学生应尽量多利用课下上机时间,做好实验之前的准备工作,打好基础,对后面的内容作简单上机,为下学期内容(《程序设计实践》)做好衔接;2. 本课程实验部分分为两种:“编程示例”和“编程题”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的程序,实现对任意多个整数求阶乘的累加和。