《C语言程序设计》实验报告
实验序号:4 实验项目:循环结构
2.36块砖36人搬,男搬4女搬3,小孩2人搬1砖。要求一次全搬完,问男、女、小孩各若干(人)?
算法提示:设x,y,z表示男、女、小孩的人数,则有不定方程:
I x+y+z=36
1 4x+3y+z/2=36
对x,y,z所有可能的组合测试出满足条件的解。
x、y、z的取值范围:
x: 1~9,步长1
y : 1~ 12,步长1
z: 2~36,步长2
对x,y,z所有可能的组合:9X 12X(36/2 )重复测试条件:
4*x+3*y+z/2==36 &&x+y+z==36
是否成立,若成立则打印出x、y、z的值。
上机运行结果有几组解?男、女、小孩各多少人?
3.设整数满足条件:被3除余2,被5除余4,被7除余3,请编程求出满足该条件的最小的10个自然数(要求必须使用while语句)
运行结构截图:
4?编写程序,输入一个长整型正数,判断该数是几位数(要求必须使用do-while语句)
运行结构截图:
5.某生产豪华游轮的造船厂,第一年生产3艘,从第二年开始,每年产量是前一年的
产量减去半艘再翻一番,请问第10年产量多少艘?10年总产量多少艘?(要求必须使用
for语句)
运行结构截图:
6.把一张10元的人民币兑换成2元和1元的纸币,请问有多少种兑换方法?输出所有的兑换方法。
运行结构截图:
7 ?参考例题3-23,写一程序输出以下图案:(要求必须使用循环)
运行结构截图:
Press anv ke# to cont inue
&【选做题】在3位自然数中,统计有 2个位数相等,但3个数字不全相等的偶数的 个数,并输出所有满足条
件的数。
运行结构截图:
元元元元元
27L
2 2 2 2
甲2
八
〔再
元元一
兀元元 1111
/K /F -C K /K
成成成成成an
j £
元元一兀元一
兀一兀es
key
四、分析与讨论
对上机实践结果进行分析,上机的心得体会。
成绩
附源程序清单:
1.
方法1:用while 语句:
#in clude
double sum=0,term,a=2,b=1,c; while(i<=20) {
term=a/b; sum=sum+term; c=a+b; b=a; a=c; i++; }
prin tf("sum=%.2f\n ”,sum); return 0; }
110 112 114 lit 118 122 144 16&
188
2帕 202 212 220 224 226 22fl 232 242 2 262
272 2S2 288 292 3 S3 322 338 332 334 336 338 344 3甜 388 400 404 4 424 43碑
446 442 446 448 454 464 4陌 474 484 48 8 494 500 522 544 550 552 S 5£呂 566 588
60S &16 622
62&
&36 644 646 ESB E&Q
662
664 E68 67& 686 6
70B
74-1 76 6
772 771 ?7b 778 7B8 UUM HUH
HLB H2k! H2S H3H
848 8
868 878 B8B 882 884 B86 89S
922
944
988 97B 992 994 996 ?98
五、教师评语
签名: 日期:
100 H52 422 B6& pTo^elly ; 118
P T '&SS ani/ ltey la centinue
循环结构汇编语言程序设计实验报告
实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实
验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:
四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根
目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)
实验2 循环结构 程序填空 1. 题目描述:马克思曾经出过这样一道趣味数学题:有30个人在一家小饭馆里用餐,其中有男人、女人和小孩。每个男人花了3先今,每个女人花了2先令,每个小孩花了1先令,一共花去50先令。问男人、女人以及小孩各有几个人。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。代码: #include
实验四循环结构设计实现 一、实验目的 1. 掌握while,do-while循环语句的使用与区别; 2. 掌握循环条件、循环体、循环终止等循环要素, 3. 理解循环的执行过程。 二、实验内容 1、上机验证课堂实例:求1+2+3+…+100的和。要求分别用while和do-while和for语句实现。 2、打印出所有的“水仙花数”。 算法提示: 1)水仙花数是一个3位数,被判断的范围是[100,999]。 2)如何分离出百、十、个位数。可参考教材P115例5.16。 3、验证课堂例题:打印“九九乘法表”。 4、公元钱五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 数学模型:设i代表母鸡数,j代表公鸡数,k代表小鸡数。用凑数法解决问题。 i+j+k=100 (1) 5*i+3*j+k\3=100 (2) 算法提示: S1. i从1到20依次一一取值; S2.对每一个固定的i值,j都要从1到33依次一一取一遍值; S3.对每一个固定的i值及每一个固定的j值,按公式k=100-i-j取得k值; S4.做下列验证工作:S3中所取的一组i,j,k是否满足条件(2) 5*i+3*j+1/3*k=100? 若满足,则输出这组解i,j,k,然后转2;否则直接转2。 当i已取到20,j也取到33时整个任务就结束。 三、仪器、设备、材料 微机 四、实验准备 1.理论知识预习及要求 ①表达式的书写规范; ②while语句和do-while语句的格式、功能、执行过程; ③while语句和do-while语句间的区别; ④循环结构程序设计的简单算法。 2.实验指导书预习及要求 对程序执行流程不清楚时,请先画出程序的流程图. 上机前先思考编出程序,并分析结果,上机时调试,并写出实验结果。 3.其他准备
实验6 循环结构程序设计 一.实验目的 1.掌握在设计条件型循环结构时,如何正确地设定循环条件。 2.掌握如何正确地控制计数型循环结构的循环次数。 3.练习并掌握选择结构与循环结构的嵌套、多重循环的应用。 4.掌握在程序设计中用循环的方法实现一些常用算法,加强调试程序的能力。二.实验要求 1.复习while、do-while、for语句和continue、break语句。 2.能够用流程图表示实验题目的算法。 3.能够独立调试运行实验题目。 4.本实验要求4学时完成。 三.实验内容和步骤 题目1:分别用while循环和for循环计算:1+2+3+…+100=? 要求:写出程序并上机查看运行结果。 题目2:输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字母的个数。要求:程序填空并写出2组运行结果。 01#include
实验七循环结构序程序设计(二) 循环结构是三种基本程序结构之一,是用于解决复杂问题的一类程序结构。在实验六中已经学习了循环结构的基本概念,以及DO循环语句和DO WHILE循环语句的基本功能和使用规则,但这仅是循环结构的基本内容,还需要学习和掌握循环结构的综合应用,以及更复杂的循环结构,用于解决更复杂的问题。 循环结构允许嵌套,嵌套的循环结构称为多重循环,即一个循环结构的循环体中包含另一个循环结构,根据实际需要可使用多层嵌套。FORTRAN90新增了强制性终止循环语句CYCLE 和EXIT,使用这两条语句可在循环体执行过程中提前终止本次循环或者整个循环。这两条语句的使用虽然不符合结构化程序设计思想,但使用得当,可使用程序简洁、短小、高效。 本次实验是学习和掌握循环结构的综合应用的一次实系统验活动。通过本次实验,能够设计和编写比较复杂的循环结构程序。 一.实验目的 1.进一步掌握三种基本循环结构的使用。 2.掌握强制性终止循环语句EXIT和CYCLE的基本功能和使用规则,以及相互区别。 3.掌握嵌套循环结构概念和应用。 4.掌握顺序结构、选择结构和循环结构相互嵌套和综合应用。 5.掌握设计和编写较复杂程序的基本技能。 二.实验内容1 1.问题描述 公元五世纪末,我国古代数学家张丘建在《算经》中提出了“百钱买百鸡问题”:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问公鸡、母鸡、小鸡各几何?”意思是:公鸡每只5元,母鸡每只3元,小鸡一元三只。100元买100只鸡。公鸡、母鸡、小鸡各买多少只?编写程序实现之。 2.算法设计 求解本题,有两个限定条件:其一是所有的鸡共计100只;其二是所有买鸡的钱共计100元。根据这两个条件可列出下面两个方程式:(设公鸡、母鸡和小鸡数分别为x、y、z) x+y+z=100 5x+3y+z/3=100 这是一个三元一次方程组,但是其限定条件也就是方程式只有两个,这就意味着它是一个多解题。求解该问题,有多种解法,可利用计算机快速计算的特点采用试探法求解该问题。
实验2 循环结构程序设计 一、实验目的 1.学习循环语句for、while和do-while语句的使用方法。 2.学习用循环语句实现各种算法,例如穷举法、迭代法等。 3.进一步熟悉C语言集成环境的使用方法 二、实验内容 1.用while循环实现数据统计问题。:从键盘输入一批任意数量的整数,统 计其中不大于100的非负数数值的个数。 2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问 题。调试数据仍参照上面给出的几种情况设计使用。 3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。 4.阶乘累加问题。编写程序,求1+2!+3!+…+n!的值。 三、实验指导 1.用while循环实现数据统计问题。 ?编程分析 由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不确定的。在进行程序设计时,确定循环控制的方法是本实验的一个关键问题。循环控制条件可以有多种确定方法: (1).使用一个负数作为数据输入结束标志。 (2).输入一个数据后通过进行询问的方式决定是否继续输入下一个数 据。 ?参考程序 参考程序一 /* 使用负数作为数据输入结束标志的程序 */ #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); } 参考程序二 /* 通过进行询问的方式决定是否继续输入下一个数据的程序 */ #include
实验四循环结构程序设计(一) 一、实验学时 2学时 二、实验目的 (一)掌握用while,do-while,for语句实现循环的方法; (二)掌握在设计条件型循环结构的程序时,如何正确地设定循环条件,以及如何控制循环的次数。 (三)掌握与循环有关的算法。 三、预习要求 预习教材第六章有关while,do-while,for语句的语法格式,并能通过这三种语句编写、调试单层循环结构的程序。 四、实验内容 (一)分析并运行下面程序段,循环体的执行次数是__________。 int a=10,b=0; do { b+=2;a-=2+b;} while(a>=0); (二)当执行以下程序段时,循环体执行的次数是__________。 x = -1; do { x=x*x;} while( !x); (三)编程求 1!+2!+3!+……+20! 的值。 注意:根据题目,考虑所定义的各个变量应该为何种类型。程序结构如下:/* c4-1.c */ /* 求1!+2!+3!+……+20! */ #include "stdio.h" void main( ) { 定义变量i作为循环控制变量; 定义变量p和sum分别存放各个整数的阶乘和阶乘之和; 变量p和sum赋初值; for( i=1; i<=20; i++ ) { 变量p连乘 ; 变量sum累加; } 输出sum的值 ; } (四)编写一个程序,求出两个数m和n的最大公约数和最小公倍数。 编程提示:求最大公约数的方法有三种: 1.从两个数中较小数的开始向下判断,如果找到一个整数能同时被m和n整除,则终止循环。设n为m和n中较小的数,则如下程序段可实现: for(k=n; k>=1; k--) if(m%k==0 && n%k ==0) break; k即为最大公约数。 /* c4-2.c */ /* 求最大公约数算法1 */ #include "stdio.h"
嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错, 及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”, 根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果 是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 (1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 编写程序如下: #include
实验四循环结构程序设计(解答) 1.改错题 (1)下列程序的功能为:求1~100之和(和值为5050)并输出。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c存盘。 #include
改正后的程序: #include
实验报告 班级:电信13-1班学号:130******** 姓名:谢朗星成绩: 实验四循环结构 一、实验目的 1.掌握循环结构C程序的编写和调试方法。 2.掌握循环结构C程序中使用while语句和do while语句。 二、实验内容和步骤 1.调试下面三个程序,分析执行的结果。 1. #include
} 在该程序中,先判断i是否<=100,如果是,在循环体先执行了sum=sum+i,接着再执行i++,然后输出当次运行的结果,然后再返回判断i是否<=100,接着再重复上步骤,直到i>100,结束该程序。 3.#include
实验四分支循环结构 程序设计
实验四、分支循环结构程序设计 一、实验目的 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);
实验三循环结构 一.实验目的 1.熟悉用while语句,do-while语句和for语句实现循环的方法。 2.掌握循环嵌套的用法。 3.掌握在程序设计中用循环的方法实现各种算法(如迭代,递推,穷举等)。4.掌握break和continue语句的用法。 二.实验要点 在C语言中主要用以下方法实现循环: 1.while语句格式:while (表达式)语句 2.do- while语句格式:do 语句 while (表达式); 3.for语句 for语句的一般格式: for (表达式1;表达式2;表达式3)语句 for (初值表达式;条件表达式;增值表达式) 语句 三.实验要求 1.上机前编写好以下程序。 2.上机输入和调试自己所编的程序并存在自己的U盘上。 3.检查实验结果是否正确。 4.上机结束后,整理实验报告,以“学号—姓名-第3次实验”命名的文件上传到作业服务器。 四.实验内容 上机调试运行以下程序。 1.下面的程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环.请填空. #include”stdio.h” void main(){ int n=0; char c; c=getchar(); while (【】) { if ( 【】) n++; c=getchar(); } printf(“n=%d”,n);}
键盘输入:abcdef12345k
实验五 循环结构(续) 【实验目的】 1.掌握range()函数的使用 2. 掌握For 语句的使用。 3.掌握循环嵌套的使用。 4.掌握一些常用的算法(求素数、穷举法、求和与乘积、递推法)。 【实验内容】 000000000 1、 填空 (1) 在命令行中显示1 到10的数字 range(1,11) 。 (2) 在命令行中显示 1到10的所有偶数 range(2,11,2) 。 (3) 显示所有的大写字符。 for i in range(65,91) : print chr(i) (4) 显示1--100能被3整除的数,并且每5个数打印一行。 i=0 ‘记录能被3整除的个数 for j in range(1,101): if j%3==0: print j, i+=1 if i%5==0: print 2、输出斐波那契级数1、1、2、 3、5、8、13……,此级数项的规律是:前两项的值各为1,从第3项起,每一项是前2项的和。(要求一行输出6项)。 (1) 当某项的数值大于或等于30000时结束。 (2) 求前100项之和。 (1)1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 (2 3、编写程序,输入一个数,判断该数是否为完数。例如6是一个完数,因为6=1+2+3。 x=input ("Enter an integer:") i=1 while True : x=x-i i+=1 if x==i: print "A perfect number." break if x
《程序设计基础I》实验报告实验项目四:结构化程序设计_循环结构
一、实验目的及要求 (1)熟悉掌握用while语句,do-while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)掌握多重循环的选择时机和使用方法; (4)掌握使用break和continue语句的方法。 二、实验设备(环境)及要求 使用Visual C++ 6.0;windows系列操作系统的环境。 三、实验内容与步骤(要求以“学号_姓名_题号”为名建立项目; 例项目名为:2013050201_***_01) 1.分别用while、do-while、for语句编程,求数列前20项之和:2/1,3/2,5/3,8/5,13/8······算法提示: 1)定义实变量sum、term、a、b、c,整变量i 2)初始化:sum=0,分子a=2,分母b=1 3)初始化:i(计数器)=1 4)计算第i项term =a/b 5)累加sum=sum+term 6)计算c=a+b,更新b= a,更新a=c 7)计数器加1,i++ 8)重复4、5、6、7,直到i>20 9)输出2位精度的结果
把每一次迭代结果输出,程序应做怎样的修改? 3输入正数n ,要求输出Fibonacci 数列的前n 项。1,1,2,3,5,8…… #include
实验五循环结构程序设计 【目的与要求】 熟练掌握while、do—while和for三种循环语句的应用。 【上机内容】 【示例】只要求运行前4个例题,并在/* */中说明该语句的作用或使用的方法等;典型例题仅供参考,不作要求。 【例1】求5! main() { int n,t; n=1; t=1; while(t<=5) { n=n*t; t=t+1;/**/ } printf(“%d”,n); } 【例2】求和s=1!+2!+3! main() { int n,s=0,t=1; for(n=1;n<=3;n++) { t=t*n;/*计算阶乘*/ s=s+t;/* */ } printf(“%d”,s); } 【例3】求和s= 3+33+333 main() { int s=0,t=3,i; for(i=1;i<=3;i++) { s=s+t; t=10*t+3;/*生成3,33,333等数据*/ } printf(“%d”,s); } 【例4】打印500以内的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数本身。main()
int i,j,k,n; for(n=100;n<=500;n++) { i=n/100;/* */ j=n/10-i*10; /* */ k=n%10; /* */ if(n= =i*i*i+j*j*j+k*k*k) /* */ printf(“ %d”,n); } } 【典型示例】 【例1】计算两个数的最大公约数;分析:首先,随机输入两个数m,n(默认m>n);其次,算法:使k为m除以n的余数,如果m能被n整除,则k值为0,n为这两个数的最大公约数,否则,使k代替n,n代替m,重复以上过程,直到k值为0。 #include"stdio.h" main() { int m,n,k,result; printf("Enter two numbers:"); scanf("%d,%d",&m,&n); if(m>0&&n>0) /*限定两个正整数*/ { do { k= m % n; if(k= =0) result=n; else { m = n; n=k; } }while(k>0); /*循环取余求出最大公因子*/ printf("The greatest common divistor is:%d\n",result); } else printf("Nonpositive values not allowed\n"); } 【例2】打印下列图案 * *** ***** ******* main()
C语言程序设计实验教学(5) 【实验目的】通过程序设计实现,掌握while结构、do-while结构和for结构各种类型的循环结构,完成各种循环程序的设计和实现。 【实验要求】同一个题目尝试使用多种循环控制结构来实现,并分析其设计和实现的差别和难易程度。 【实验课时】6.0 【实验内容】 1、完成课堂实例的实现。 (1)计算s=1+2+…+100。(累加型) (2)请输入数n,计算n!。(连乘型) (3)输出所有的水仙花数。(范围型) (4)判断n是否为素数。(反向思维型) (5)输出100-200之间能同时被3和5整除的数。(用continue语句) (6)输入任意n个数,输出其中最大数和最小数,并输出它们在序列中的位置。 (7)输出以下图形(1): (8)输出以下图形(2): (9)输出以下图形(3): 图形(1)图形(2)图形(3) (10)编写输出如下字母塔的程序: A A B A A B C B A A B C D C B A
……………… …………………… ………………………… A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Y X W V U T S R Q P O N M L K J I H G F E D C B A 2、计算多项式7+72+73+······+7n 的值,n 由键盘输入。 3、求 ∑=201! n n (即求1!+2!+3!+……+20!) 4、输入2个正整数m,n ,求其最大公约数和最小公倍数。 5、请编程序打印出以下数列:1、1、2、3、5、8、13、…的前40项。每行输出4个数。(斐波那契数列) 6、求100~200间的全部素数。每行输出6个数。 7、“鸡兔同笼”是一个中国古算题,最早出现在《孙子算经》中。笼中有若干只鸡和兔子,它们共有88个头,244只脚,问鸡和兔各有多少只? 8、求下列分数序列的前20项之和。 12,23,35,58,813,1321,…… 9、输入x 值,按照公式计算cos(x)的值,直到最后一项小于10-6为止。 ,! 6x !4x 2!x 1)x (cos 6 42 +-+-= 10、找出1000之内的所有完数,一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。输出时按下面的格式输出其因子: 6 its factors are 1,2,3 补充作业:(以下题目任选2题) 1、我国古代有一道有名的数学难题,称为“百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买了百鸡,问鸡翁、鸡母、鸡雏各买了多少只? 2、猴子吃桃问题。猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,就
循环结构汇编语言程序设 计实验报告 实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和内存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验内容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示: 四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:+。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序汇编(翻译)后生成二进制目标程序,文件名为 (3)目标程序需要经连接生成可执行程序,文件名为 2)汇编环境
最基本的汇编环境只需要两个文件:和。将这两个文件拷入到已经建好的文件夹(例如huibian)中,并将文件夹huibian放在硬盘根目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入 数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数 据为13,0,59,900,587,1,657,234,34,48) 六、实验心得 通过本次循环结构汇编语言程序设计的实验,我初步了解了汇编语言的基本语法,利用汇编语言的循环结构实现了对于数组A中元素的排序以及求得元素中的最大值最小值。另外,在实验过程中,我也了解到了,我们要时刻细心严谨,认真做好每一步,避免出现低级错误。 七、汇编语言代码 1、利用冒泡排序实现求最大值最小值的代码 data segment mes1 db 'the max:$' mes2 db 'the min:$' a dw 13,0,59,900,587,1,657,234,34,48 data ends code segment main proc far assume cs:code,ds:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax ;以下是起泡排序核心代码 mov cx,10 dec cx loop1: mov di,cx mov bx,0
实验四循环结构 【实验目的】 1.掌握For语句和while循环语句的使用。 2.掌握循环的规则及其执行过程。 3.掌握如何控制循环条件,防止死循环或不循环。 【实验内容】 1.编写程序,找出7的倍数中十位数为2的所有3位数。 x=100 while x<1000: y=x/100 a=(x-100*y)/10 z=x-100*y-10*a if (10*y+a-2*z)%7==0 and a==2: print x x+=1 else: x+=1 或: x=100 while x<1000: if x%7==0 and x//10%10==2: print x x+=1 或: for x in range(100,1000): if x%7==0 and x//10%10==2: print x 2.编写程序用Print语句输出2000年至2500年间的所有闰年,要求每行输出8个。 y=2001 count=0 flag=True while flag: if y%4==0 and y%100!=0 or y%400==0: if count%8==0: print print y, y+=1 count+=1 else: y+=1 if y==2500: flag=False 3.编写程序解决爱因斯坦台阶问题:有人走一台阶,若以每步走两级则最后剩下一级;若每步走三级则剩两级;若每步走四级则剩三级;若每步走五级则剩四级;若每步走六级则剩五级;若每步走七级则刚好不剩。问台阶至少共有多少级? L=[] for x in range(0,1000): if x%2==1 and x%3==2 and x%4==3 and x%5==4 and x%6==5 and x%7==0: L.append(x) print min(L) 至少共有119级
读书破万卷下笔如有神 上机实验五循环结构程序设计 姓名:学号: 一.目的要求 1.掌握用for、while、do-while语句实现循环的基本技巧; 2.掌握循环次数不确定的解题技巧; 3.掌握break语句、continue语句在循环语句中的作用以及不同之处; 4.掌握多重循环的编程技巧。 二.实验内容 【实验题1】. 程序填空:分别用for、while、do-while语句编程,输出菲波那契数列的前20项,要求每行输出10项。 源程序1:用for语句实现 编译、连接并运行该程序,则显示 思考:line 5和line 8行中printf()函数的格式控制符均为”m”, 假如均改为”%d”, 输出结果有何不同?
输出的数据无间隔 源程序2:用while语句实现 #include
读书破万卷下笔如有神 编译、连接并运行程序,输入0.5, 则显示:;输入 1 ,则显示:;输入1.7,则显示:。 略 line 21中的表达式“f*=i”,等同于表达式“f=f*i ”;同理,line 11中的表达式“s= s+item”也可替换为“s+=item ”. 【实验题3】程序填空:验证哥德巴赫猜想——任何一个大于6的偶数均可表示为两个素数之和。例如:6=3+3, 8=3+5,10=5+5,…,18=7+11。要求将6-100之间的偶数均表示为素数之和,一行输出5组。【分析】 1. 本程序采用双层循环:外层循环负责对6~100之间的偶数逐个输出加法式子;内层循环负责为一个特定的偶数k, 找出相应的素数a和b. 2. 对于偶数k(k>=6),符合条件的两个素数a和b必然位于区间[3, k-1].(为什么不从2开始?) 3. 由于k=a+b,通过内层循环试探性地找出第一个加数a后,第二个加数b可用推算而得,再调用函数prime()来判断a、b是否是素数,如果两者均为素数,则停止寻找素数,并输出k=a+b. 源程序如下: