实验四 循环结构程序设计
教材P364
一、实验目的
1. 掌握利用for 语句实现循环结构的方法。
2. 掌握利用while 语句实现循环结构的方法。
3. 熟悉利用向量运算来代替循环操作的方法。
二、实验内容
1. 根据2222π11116123n
=++++"2,求的近似值。当n 分别取100、1000、10000时,结果是多少?
π要求:分别用循环结构和向量运算(使用sum 函数)来实现。
答:程序设计:
(1) 循环结构
clear all; close all; clc;
for n=[100,1000,10000]
sum=0;
for x=1:n
sum=sum+1/(x.^2);
end
value=sqrt(6*sum)
end
(2) 向量运算
clear all; close all; clc;
for n=[100,1000,10000]
x=1:n;
value=sqrt(6*sum(1./x./x))
end
运行结果:
value =
3.1321
value =
3.1406
value =
3.1415
2. 根据11113521
y n =++++?",求: (1) 时的最大n 值。
3y <(2) 与(1)的n 值对应的y 值。
答:程序设计:
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
n =
56
验证:
clear all; close all; clc;
n=56;
i=1:n;
f=1./(2*i-1);
y=sum(f)
运行结果:
y =
2.9944
3. 考虑以下迭代公式:
1n n
a x
b x +=+ 其中、b 为正的常数。
a (1) 编写程序求迭代的结果,迭代的终止条件为5110n n x x ?+?≤,迭代初值,迭代次数不超过500次。
0 1.0x =(2) 如果迭代过程收敛于r ,那么r
的准确值是2
b ?±,当的值取、(8、时,分别对迭代结果和准确值进行比较。
(,)a b (1,1),3)(10,0.1)答:
(1) 程序设计:
clear all; close all; clc;
a=2; b=3;
x0=1.0; x1=0;
n=1;
y=abs(x1-x0);
while n<=500 & y>10^(-5)
x1=a/(b+x0);
y=abs(x1-x0);
x0=x1;
n=n+1;
end
x1
运行结果:
x1 =
0.5616
(2) 程序设计:
(i) 当(a,b)的取值为(1,1)时clear all; close all; clc;
a=1; b=1;
x0=1.0; x1=0;
n=1;
y=abs(x1-x0);
while n<=500 & y>10^(-5) x1=a/(b+x0);
y=abs(x1-x0);
x0=x1;
n=n+1;
end
x1
r1=(-b+sqrt(b^2+4*a))/2
r2=(-b-sqrt(b^2+4*a))/2
运行结果:
x1 =
0.6180
r1 =
0.6180
r2 =
-1.6180
(ii) 当(a,b)的取值为(8,3)时clear all; close all; clc;
a=8; b=3;
x0=1; x1=0;
n=1;
y=abs(x1-x0);
while n<=500 & y>10^(-5) x1=a/(b+x0);
y=abs(x1-x0);
x0=x1;
n=n+1;
end
x1
r1=(-b+sqrt(b^2+4*a))/2
r2=(-b-sqrt(b^2+4*a))/2
运行结果:
x1 =
1.7016
r1 =
1.7016
r2 =
-4.7016
(iii) 当(a,b)的取值为(10,0.1)时
clear all; close all; clc;
a=10; b=0.1;
x0=1; x1=0;
n=1;
y=abs(x1-x0);
while n<=500 & y>10^(-5)
x1=a/(b+x0);
y=abs(x1-x0);
x0=x1;
n=n+1;
end
x1
r1=(-b+sqrt(b^2+4*a))/2
r2=(-b-sqrt(b^2+4*a))/2
运行结果:
x1 =
3.1127
r1 =
3.1127
r2 =
-3.2127
4. 已知,求1231231, 10, 21, 3
2, n n n n f n f n f n f f f f n ???==??==??==??=?+>?3
1100~f f 中:
(1) 最大值、最小值、各数之和。
(2) 正数、零、负数的个数。
答:程序设计:
clear all; close all; clc;
f1=1; f2=0; f3=1;
f=[f1,f2,f3];
for n=4:100
f4=f3-2*f2+f1;
f=[f f4];
f1=f2;
f2=f3;
f3=f4;
end
maxvalue=max(f);
minvalue=min(f);
sumvalue=sum(f);
disp(['最大值是:', num2str(maxvalue)])
disp(['最小值是:', num2str(minvalue)])
disp(['各数和是:', num2str(sumvalue)])
positivenum=length(find(f>0));
negtivenum=length(find(f<0));
zeronum=length(find(f==0));
disp(['正数的个数:', num2str(positivenum)])
disp(['负数的个数:', num2str(negtivenum)])
disp(['零的个数:', num2str(zeronum)])
运行结果:
最大值是:4.377633e+011
最小值是:-8.994121e+011
各数和是:-7.427456e+011
正数的个数:49
负数的个数:49
零的个数:2
5. 若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。例如,,由于5是素数,所以2和3是亲密数对,5是亲密素数。求[2,50]区间内:
2315×?=(1) 亲密数对的对数。
(2) 与上述亲密数对对应的所有亲密素数之和。
答:程序设计:
clear all; close all; clc;
prime=[];
for n=2:49
x=n*(n+1)-1;
signx=0;
for k=2:sqrt(x)
if (mod(x,k)==0)
signx=1;
end
end
if signx==0
prime=[prime; n n+1];
end
end
num=size(prime);
psum=sum(prime(:,1).*prime(:,2)-1);
disp(['亲密数对的对数:', num2str(num(1))]) disp(['亲密素数之和:', num2str(psum)])
%或者
clear all; close all; clc;
psum=0; num=0;
for i=2:49
b=i*(i+1)-1;
m=fix(sqrt(b));
for j=2:m
if rem(b,j)==0
break
end
end
if j==m
num=num+1;
psum=psum+b;
end
end
disp(['亲密数对的对数:', num2str(num)]) disp(['亲密素数之和:', num2str(psum)])
运行结果:
亲密数对的对数:28
亲密素数之和:21066
《C程序设计》课程实验报告 学院:班级:姓名:学号: 实验设备:计算机1台实验日期:2011年3月1日 实验项目名称循环结构程序设计 实验目的 掌握使用三种循环语句实现循环结构的方法。 实验要求:能用while~ do~while for 三种循环语句实现循环结构,编写简单的程序,掌握这三种循环语句。 实验内容(包括步骤):1.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半另一个,以后每天早晨都吃剩下的一半另一个,到第十天早晨再想吃时,就剩一个桃子。问第一天共摘了多少桃子。 要求:分别用三种语句编写程序。 2.编写程序验证下列结论:任何一个自然数n的立方都等于n个连续奇数之和。例如:13=1;23=3+5;33=7+9+11;43=13+15+17+19。 要求:程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止。 3.编写程序,求1-3+5-7+…-99+101的值。 4.编写程序,求e的值。e ≈ 1+1/1!+1/2!+1/3!+1/4!+…+1/n! (1)用for循环,计算前50项。 (2)用while循环,要求直至最后一项的值小于10-6。 5.编写程序,输出从公元1600年至2000年所有闰年的年号。每输出5个年号换一行。判断公元年是否为闰年的条件是:
(1)公元年数如能被4整除,而不能被100整除,则是闰年。 (2)公元年数如能被400整除也是闰年。 6.编写程序,打印以下图形: * *** ***** ******* ***** *** * 7.输入一行字符,统计输入的字符中字母‘a’出现的次数(包括大小写)。 8.我国1991年有11.6亿人口,要求根据人口平均年增长率,计算从1991年算起经过多少年后我国的人口增加到15亿。 9.有一个四位数F=BBAA,前二位数相同,后二位数相同,此数又是某个自然数T的平方,求此数。 10.分解一个正整数的所有质因数 调试与结果测试:部分程序出现错误经过调整后调试正常,达到题目要求的结果,运行正常。
仲恺农业工程学院实验报告纸 信息学院(院、系) 专业 班 C 语言程序设计 课 实验目的: (1)熟练掌握用三种循环语句实现循环的方法。 (2)掌握在程序设计中用循环方法实现的一些常用算法。 (3)进一步学习调试程序。 实验内容与总结: 编程练习 1、打印出所有“水仙花数”——教材P129-6.6 程序如下: #include
#include
4.3 循环结构程序设计1 【(1)题中页码均为《C 语言程序设计教程》中的页码 (2)题后为原程序文件名 (3)仅提交名为【*.c 】的源程序文件,可一起提交,也可逐题提交 】 1、 按照右边给出的流程图用while 语句求1~100之间的偶数之和。(007张三t411.c, 007张三t412.c ) 【提示:参见p89—例4.18 ,并按照下面的左流程图书写007张三t411.c ,右流程图书写007张三t412.c 程序运行结果: s=2550 】 2、 按照右边给出的流程图用while 语句求出所有的水仙花数(如135: 153=13+53+33)。(007张三t42.c )【限制用一重循环实现】 【提示: 程序运行结果: 全部水仙花数如下:??153??370??371??407 】 3、 根据公式,求)(1n n 1 4313212 11 ....+????++++ 的前n 项之和。 (007张三t431.c ,007张三t432.c ) 【提示:参见p90—例4.19了解类似算法的实现 参见p93--例4.18了解do-while 语句的应用 007张三t431.c---用while 语句实现, 007张三t432.c 用do —while 语句实现 程序运行时: 程序运行结果: 请输入n :10? 前10项之和=0.91 请输入n :20? 前20项之和=0.95 】
4、求1!+2!+……+n!(007张三441.c和007张三442.c)【要求n≤10】 【提示:参见p90—例4.20,注意当n=10时,结果超过int 的最大值,建议用长整型(long int--%ld)007张三441.c---用while语句实现, 007张三442.c 用do—while语句实现 程序运行时:程序运行结果: 请输入n:1?1!~1!之和=1 请输入n:3?1!~3!之和=9 请输入n:10?1!~10!之和=4037913 请输入n:20?20超出本程序的求解范围! 请输入n:0?0超出本程序的求解范围! 】 5、输出个位数字是6,且能被3整除的所有3位数(007张三45.c)【要求:输出时,每个数字占4位,右对齐】 程序运行结果: 附加题: 1、编制一个能破解4位数字组成的数字密码的程序(即密码不能以0开头),假设数字密码为:1234(007张三4附加1.c)。【程序运行结果: 密码是:1234 】 2、鸡兔同笼问题,已知鸡和兔的总头数为a,总脚数为b,求鸡和兔的有多少只?(007张三4附加21.c,007张三4附加 22.c)【要求:(1)用循环结构实现,存于007张三4附加21.c (2)顺序结构实现,存于007张三4附加22.c 【程序运行时:程序运行结果: 请输入鸡和兔的总头数和总脚数:4 8?当4个头,8只脚时:鸡4只, 兔0只 请输入鸡和兔的总头数和总脚数:4 12?当4个头,12只脚时:鸡2只, 兔2只 】
实验四分支和循环程序设计实验 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法; 4.了解汇编语言循环程序设计的基本流程; 5.熟悉汇编语言循环基本指令的使用方法; 6.掌握利用汇编语言的循环指令完成循环程序设计方法。 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。 1.无条件转移指令 JMP 无条件转移指令 JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。 2.条件转移指令 JXX 条件转移指令可分为三大类: 1).简单条件转移指令指令。根据单个标志位的状态判断转移条件。标志位指令转移条件意义 CF JC CF=1 有进位/借位 JNC CF=0 无进位/借位 ZF JE/JZ ZF=1 相等/等于 0 JNE/JNZ ZF=0 不相等/不等于 0 SF JS SF=1 是负数 JNS SF=0 是正数 OF JO OF=1 有溢出 JNO OF=0 无溢出 PF
JP/JPE PF=1 有偶数个 1 JNP/JPO PF=0 有奇数个 1 2).无符号数条件转移指令。 假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是 A-B,其转移指令如下: 指令转移条件意义 JA/JNBE CF=0 AND ZF=0 A>B JAE/JNB CF=0 OR ZF=1 A>=B JB/JNAE CF=1 AND ZF=0 AB JGE/JNL SF=OF OR ZF=1 A>=B JL/JNGE SF OF AND ZF=0 AC语言程序设计实验报告(实验大纲+过程)
《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分:4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握 C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。
2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目 实验一C程序的运行环境和运行一个C程序的方法 一、实验目的 1.了解Visual C++6.0编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的? 2.编写一个C程序,输出以下信息: **************************** very good! **************************** 3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。 实验二数据类型、运算符和表达式 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 二、实验内容 1.输入并运行以下程序: main( ) { char c1,c2; c1=97;c2=98; pr intf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。。 2.输入并运行以下程序:
matlab 基本语句 1.循环语句for for i=s1:s3:s2 循环语句组 end 解释:首先给i赋值s1;然后,判断i是否介于s1与s2之间;如果是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。 例:求1到100的和,可以编程如下: sum=0 for i=1:1:100 sum=sum+i end 这个程序也可以用while语句编程。 注:for循环可以通过break语句结束整个for循环. 2.循环语句while 例:sum=0;i=1; while(i<=100) sum=sum+i;i=i+1; end 3.if语句 if(条件) 语句 end if(条件) 语句 else 语句 end if(条件) 语句 elseif 语句 end 4.关系表达式:
=,>,<,>=,<=,==(精确等于) 5.逻辑表达式:|(或),&(且) 6.[n,m]=size(A)(A为矩阵) 这样可以得到矩阵A的行和列数 n=length(A),可以得到向量A的分量个数;如果是矩阵,则得到矩阵A的行与列数这两个数字中的最大值。 7.!后面接Dos命令可以调用运行一个dos程序。 8.常见函数: poly():为求矩阵的特征多项式的函数,得到的为特征多项式的各个系数。如 a=[1,0,0;0,2,0;0,0,3],则poly(a)=1 -6 11 -6。相当于poly(a)=1入^3+(-6)入^2+11入+(-6)。 compan():可以求矩阵的伴随矩阵. sin()等三角函数。 MATLAB在数学建模中的应用(3) 一、程序设计概述 MATLAB所提供的程序设计语言是一种被称为第四代编程语言的高级程序设计语言,其程序简洁,可读性很强,容易调试。同时,MATLAB的编程效率比C/C++语言要高得多。 MATLAB编程环境有很多。常用的有: 1.命令窗口 2.word窗口 3.M-文件编辑器,这是最好的编程环境。 M-文件的扩展名为“.m”。M-文件的格式分为两种: ①λ M-脚本文件,也可称为“命令文件”。 ② M-函数文件。这是matlab程序设计的主流。λ 保存后的文件可以随时调用。 二、MATLAB程序结构 按照现代程序设计的观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构是:顺序结构、选择结构和循环结构。其中顺序结构是最基本的结构,它依照语句的自然顺序逐条地执行程序的各条语句。如果要根据输入数据的实际情况进行逻辑判断,对不同的结果进行不同的处理,可以使用选择结构。如果需要反复执行某些程序段落,可以使用循环结构。 1 顺序结构 顺序结构是由两个程序模块串接构成。一个程序模块是完成一项独立功能的逻辑单元,它可以是一段程序、一个函数,或者是一条语句。 看图可知,在顺序结构中,这两个程序模块是顺序执行的,即先执行<程序
嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错, 及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”, 根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果 是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 (1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 编写程序如下: #include
分支与循环程序设计实验-报告
————————————————————————————————作者: ————————————————————————————————日期:
实验名称 分支与循环程序设计实验 指导教师 罗志祥 专业班级 光电1406 姓名 段昳晖 学号 U2014***** 联系电话 137******** 一、任务要求 1. 设有8bits 符号数X 存于外部RA M单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。 264/2 106410 X X Y X X X X ?≥? =<?≤? 当 当 当 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s 延时子程序(延时误差小于10us ,晶振频率12MHz)。 二、设计思路 1. 设有8bit s符号数X存于外部R AM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。 2 64/2 106410 X X Y X X X X ?≥? =<?≤? 当 当 当 将外部单元1000H 中的X ,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X 与64的大小关系,再判断X与10的大小关系,主要利用比较转移指令C JNE,以及执行C JNE 指令后的进位位CY,进一步比较大小,分别跳转至对应语句。将结果存于外部单元的1001H以及1002H 。
循环结构:for语句 格式: for 循环变量=表达式1:表达式2:表达式3 循环体 end 【注】:表达式1:循环变量初值, 表达式2:步长,为1时,可省略; 表达式3:循环变量终值。 或: for循环变量=矩阵表达式 循环体 end 【注】:执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。 2 while语句: 格式: while(条件) 循环体 end 【注】:条件成立时,执行循环体 3
break语句&& continue语句: break:破坏,破坏循环,终止循环的进行,跳出循环,程序将执行循环语句的下一语句。 continue:继续,循环继续,程序将跳过循环体中剩下的语句,继续下一次循环。 4 循环的嵌套—多重循环结构 5 选择结构:if-else语句 格式: if 表达式 程序模块 end 或 if 表达式 程序模块1 else 程序模块2 end 6 switch语句: 格式:
switch 表达式 case 数值1 程序模块1 case 数值2 程序模块2 case 数值3 程序模块3 ...... otherwise 程序模块n end 执行过程:首先计算表达式的值, 然后将其结果与每一个case后面的数值依次进行比较, 如果相等,则执行该case的程序模块; 如果都不相等,则执行otherwise模块中的语句。 switch语句可以替代多分支的if语句,而且switch语句简洁明了,可读性更好。 7 matlab中一些基本知识: END 注意事项 for循环可以通过break语句结束整个for循环
甘肃政法学院 本科生实验报告 ( 五) 姓名:赵明翔 学院:公安技术学院 专业:安全防范工程 班级: 2015级安全防范工程班 实验课程名称:程序设计 实验日期:2016年月日 开课时间:2015学年第二学期
(2)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字李方和等于该数本身。例如,153是水仙花数,因为153=12+53+33程序如下: #include
多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下了1个桃子了。求第一天共摘了多少桃子。 程序如下: #include
实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因 c b a 、、的不同取值而定) ,这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2?1 3?10?5?16?8?4?2?1 6?3?10?5?16?8?4?2?1 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. 的值,调用该函数后,
.实验五循环结构程序设计实验内容 (1)编写程序实现求两矩阵A*B,A.*B. A*B >> A=input('输入矩阵A:'); B=input('输入矩阵B:'); C=zeros(size(A,1),size(B,2)); for ii=1:size(A,1) for jj=1:size(B,2) for k=1:size(A,2) C(ii,jj)=C(ii,jj)+A(ii,k)*B(k,jj); end end end C 输入矩阵A:[1 2;3 4] 输入矩阵B:[5 6;7 8] C = 19 22 43 50 A.*B >> A=input('请输入矩阵A:'); B=input('请输入矩阵B:'); if size(A)==size(B) [m,n]=size(A); for i=1:m for j=1:n C(i,j)=A(i,j)*B(i,j); end end disp('输出A.*B:') C
else disp('无效') end 请输入矩阵A:[1 2 3] 请输入矩阵B:[4 5 6] 输出A.*B: C = 4 10 18 (2)编写程序实现求矩阵的转置。 >> A=input('请输入矩阵A:'); [m,n]=size(A); B=zeros(n,m); for i=1:m; for j=1:n; B(i,j)=A(j,i); end end disp(B) 请输入矩阵A:[1 2 3;4 5 6;7 8 9] 1 4 7 2 5 8 3 6 9 小结实验心得体会 通过本次实验,我慢慢理解了循环控制结构的执行过程,掌握了一些循环结构程序设计方法,但还不是很熟练。我了解了一些MATLAB的编程方法和循环结构程序设计方法,但都不是特别的熟练,都有待加强。
循环程序设计实验 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 实验预习要求 复习比较指令、条件转移指令和循环指令。 复习循环程序的结构、循环控制方法等知识。 读懂“实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 根据“实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 从“实验习题”中任选一道题目,编写源程序,以便上机调试。 实验内容 计算1+2+……n=,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。编程指导 键盘输入的十进制数如 368在计算机中是以 33H,36H,38H形式存 放的,如何将它们转换 为一个二进制数0B,以 便对累加循环的循环次 数进行控制是本程序首 先要解决的问题。将键 盘输入的十进制数转换为二进制数的程序清单如下: DATA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP() DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV A X, DATA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0 MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位)
实验四循环结构程序设计 一、实验目的 1.掌握利用for语句实现循环结构的方法。 2.掌握利用while语句实现循环结构的方法。 3.熟悉利用向量运算来代替循环操作的方法。 二、实验内容 1. 根据pi*pi/6=1/1^2+1/2^2+1/3^2+……+1/n^2,求pi的近似值。当n分别 取100,1000,10000时,结果是多少? 2. 根据y=1+1/3+1/5+……+1/(2n-1),求 (1)y<3时的最大n值 (2)与(1)的n值对应的y值 4. 已知{f1=1,n=1;f2=0,n=2;f3=1,n=3;fn=fn-1-2fn-2+fn-3,n>3 求f1-f100中 (1)最大值,最小值,各数之和。 (2)正数,零、负数的个数。 三、实验步骤(程序和结果) 1. 方法1:y=0;n=100; >> for i=1:n y=y+1/i/i; end >> y y = 1.6350 >> pi=sqrt(6*y) pi = 3.1321 y=0;n=1000; for i=1:n y=y+1/i/i; end >> y
y = 1.6439 pi=sqrt(6*y) pi = 3.1406 y=0;n=10000; >> for i=1:n y=y+1/i/i; end >> y y = 1.6448 pi=sqrt(6*y) pi = 3.1415 方法2:n=100;i=1:n; >> f=1./i.^2; >> y=sum(f) y = 1.6350 >> pi=sqrt(6*y) pi = 3.1321 n=1000;i=1:n; >> f=1./i.^2; >> y=sum(f) y =
2.4 循环程序设计实验 2.4.1 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 2.4.2 实验预习要求 1、复习比较指令、条件转移指令和循环指令。 2、复习循环程序的结构、循环控制方法等知识。 3、读懂“2.4.3 实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 4、根据“2.4.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 5、从“2.4.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2.4.3 实验内容 计算1+2+……n=?,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1 627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示 的范围)。 1、编程指导 (1)键盘输入的十进 制数如368在计 算机中是以 33H,36H,38H 形式存放的,如 何将它们转换为 一个二进制数 101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。将键盘输入的十进制数转换为二进制数的程序清单如下: DA TA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0
实验四循环结构程序设计(解答) 1.改错题 (1)下列程序的功能为:求1~100之和(和值为5050)并输出。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c存盘。 #include
改正后的程序: #include
Matlab 基本语句 1.循环语句for for i=s1:s3:s2 循环语句组 end 解释:首先给i赋值s1;然后,判断i是否介于s1与s2之间;如果是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。 例:求1到100的和,可以编程如下: sum=0 for i=1:1:100 sum=sum+i end 这个程序也可以用while语句编程。 注:for循环可以通过break语句结束整个for循环. 2.循环语句while 例:sum=0;i=1; while(i<=100) sum=sum+i;i=i+1; end 3.if语句 if(条件) 语句 end if(条件) 语句 else 语句 end if(条件) 语句 elseif 语句 end 4.关系表达式:
=,>,<,>=,<=,==(精确等于) 5.逻辑表达式:|(或),&(且) 6.[n,m]=size(A)(A为矩阵) 这样可以得到矩阵A的行和列数 n=length(A),可以得到向量A的分量个数;如果是矩阵,则得到矩阵A的行与列数这两个数字中的最大值。 7.!后面接Dos命令可以调用运行一个dos程序。 8.常见函数: poly():为求矩阵的特征多项式的函数,得到的为特征多项式的各个系数。如 a=[1,0,0;0,2,0;0,0,3],则poly(a)=1 -6 11 -6。相当于poly(a)=1入^3+(-6)入^2+11入+(-6)。 compan():可以求矩阵的伴随矩阵. sin()等三角函数。 MATLAB在数学建模中的应用(3) 一、程序设计概述 MATLAB所提供的程序设计语言是一种被称为第四代编程语言的高级程序设计语言,其程序简洁,可读性很强,容易调试。同时,MATLAB的编程效率比C/C++语言要高得多。 MATLAB编程环境有很多。常用的有: 1.命令窗口 2.word窗口 3.M-文件编辑器,这是最好的编程环境。 M-文件的扩展名为“.m”。M-文件的格式分为两种: ①λ M-脚本文件,也可称为“命令文件”。 ② M-函数文件。这是matlab程序设计的主流。λ 保存后的文件可以随时调用。 二、MATLAB程序结构 按照现代程序设计的观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构是:顺序结构、选择结构和循环结构。其中顺序结构是最基本的结构,它依照语句的自然顺序逐条地执行程序的各条语句。如果要根据输入数据的实际情况进行逻辑判断,对不同的结果进行不同的处理,可以使用选择结构。如果需要反复执行某些程序段落,可以使用循环结构。 1 顺序结构 顺序结构是由两个程序模块串接构成。一个程序模块是完成一项独立功能的逻辑单元,它可以是一段程序、一个函数,或者是一条语句。 看图可知,在顺序结构中,这两个程序模块是顺序执行的,即先执行<程序
微机原理与汇编语言 实验报告 姓名x x x学号xxxxxx 专业班级计科x班 课程名称微机原理与汇编语言实验日期2014.10.22 实验名称循环程序设计实验成绩 一、实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 二、实验内容 1、实验原理 (1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题 (2)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数 2、实验步骤 (1)流程图 (2)实验源码 .model small .stack ;定义堆栈段 .data ;定义数据段 inf1 db "Please input a number(1-627):$" inf2 db 0ah, 0dh, "1+2+......+$" ibuf db 7, 0, 6 dup(0) obuf db 6 dup(0) .code start: mov ax, @data mov ds, ax mov dx, offset inf1 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax 中 mov ah, 09h int 21h mov dx, offset ibuf mov ah, 0Ah int 21h mov cl, ibuf+1 mov ch, 0 mov si, offset ibuf+2 mov ax, 0 loop1: mov dx, 10 mul dx and byte ptr [si], 0Fh add al, [si] 从键盘输入一个十进制数,并将其转换为二进制数,存放在AX中 开始 结束 素、、 (CX)-1=0 累加循环次数送CX(MOV CX,AX)AX清0(AX中存放累加和) BX送1(BX存放每次循环累加的数,每循环一次,BX值加1) ADD AX,BX INC BX 累加和(在AX中)转换为十进制数并 显示 Y N
学号:0740303104 姓名:雷凤 循环程序设计实验报告 一、实验目的: 1、了解和掌握比较循环程序的组成部分,重复控制指令的功能、作用和方法。 2、学会循环程序设计的方法。 3、学习汇编语言输出输入语句的设计。 二、实验要求: 1、具体了解和掌握循环程序的组成部分,重复控制指令的使用和在使用时应注意的问题 2、学习循环序设计的一般方法。 三、实验内容 1、实验任务 设有N个学生的某科成绩(百分制),已按学号的次序存放在以STUD 为首址的字单元数组中,现要求按成绩的高低记入名次,并把名次填入成绩所在的字单元的高字节中。 字单元的格式为 名次成绩 2、实验的原理 这个实验要用循环的嵌套,内外循环都循环6次,刚开始时将所有的
名次都置1,外循环从第一个成绩开始依次与每一个学生(包括自己)的成绩比较大小,要是小于,相应的名次就加1,再将第二个成绩与所有的分数依次比较大小,一直循环6次,就能得出名次排序了,将相应的名次分别保存在dl低字节中,也便于输出名次。 3、程序设计流程图
四、实验步骤 1、编辑源程序,建立一个以后缀为.ASM的文件. DATAS SEGMENT ;此处输入数据段代码 STUD DW 78,65,89,90,58,99 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 LEA BX,STUD MOV CX,6 ;设置计数器 LOP1: PUSH CX MOV dl,1 ;dl用来存放名次 MOV AL,[BX] ;BX的内容送给AL MOV CX,6 LEA SI,STUD ;取偏移地址 LOP2: CMP AL,[SI] ;比较大小 JL LOP3 ;小于就转 JMP A ;LOOP LOP LOP3: INC dl ;小于,名次加1 A: INC SI ;修改地址 INC SI LOOP LOP2 POP CX mov [BX+1], dl;把结果保存到高地址 INC BX ;修改地址 INC BX