Matlab如何统计1-1000中的偶数?

基于MATLAB的万年历计算

测绘工程专业2004级9班

摘要:运用MATLAB编程实现1936—2032年农历与公历间的相互转换,并求当日是星期几。

关键词:万年历 公历转化为农历 农历转化为公历 求当天是星期几

1. 概述:知道公历年月日求农历日期,知道农历年月日求公历日期,并求当日是星期几。

2. 相关知识及原理:

公历:公历是现在国际通用的历法,又称格列历,通称阳历。公历将一年分为十二个月,其中一、三、五、七、八、十、十二月有31天,俗称“大月”;四、六、九、十一月有30天;平年二月有28天,闰年二月有29天,这样公历闰年一年有366天,平年有365天。

公历闰年:若一年年数不能被4整除,或能被100整除但不能被400整除,则称这一年为平年,否则为闰年。

农历:农历是基于对地球公转和月相变化的观测的。我国现采用的农历结合了阳历与阴历(伊斯兰历)的记年方法:一年有十二个月,其中6个大月(30天),6个小月(29天),一个农历年有354天。

农历闰月:为了平衡公里年与农历年的天数差别,农历采用在适当时候设立闰月的方法,一般三年左右设一闰月,闰月可以是大月,也可以是小月。具体设置原则由节气而定,方法较为复杂。

公历与农历间的转换:公历是纯数学的记年法,而农历是基于观测结果之上的。两者见的转换比较复杂,无法用简单的数学公式表示。因此,这里采用的方法是首先查得1936年至2032年相关的资料,包括:该年农历大年初一到公历元旦的天数、该年农历各月的天数、该年农历有无闰月以及在何处闰月。这样在公历化为农历时,只需算得改日距该年农历大年初一的天数,对应该年农历各月的天数,即可得到农历的月份,及该日在该农历月是第几天;在农历化为公历时,同样,需算得该日距该年元旦的天数,通过类似转化,即可求得公历日期。

求星期数:已知公历求星期数时,计算出改日距一特定日期的天数,则该日星期数=特定日期星期数+距离天数除以7的余数;已知农历时,只需将农历转换为公历,再由公历日期求星期数即可。

如果让一个人反复做一件相同或相似的事情,他会感到厌烦与疲倦,还容易出错。计算机天然具备替代人类做重复工作的优势。Matlab 与其他程序语言一样,主要采用两种方式实现循环操作。

写一个求 1 至给定的整数 n 的和的例子来说明 for 循环的用法。

在这段代码中,先从用户那里获得 n 的值,然后从 1 至 n 逐个取值加到 sum 上。最终得到的 sum 值就是我们要求的值。

for 后面紧跟着一个表达式i = 1:n. 前面说过 : 的用法,显然

= 右边的值是一个 1 到 n 的矩阵。

for 语句后面紧跟着一个缩进了的语句,这个语句部分,我们常把它称为循环体。这里面循环体只有一个语句,事实上,循环体可以有多个语句。

整个的 for 循环语句以end结束。

以n = 10为例,这个循环过程就是从矩阵[1,2,3,4,5,6,7,8,9,10]中依次取值赋给变量i, 然后按顺序执行循环体中的语句,在这个例子中,就是执行sum = sum + i. 执行到矩阵中的最后一个值,for 循环就结束。

一点编程经验经验都没有的同学可能理解这些程序稍有点困难,可以拿张纸,将程序每一步的执行结果都写出来。

这里 i 值不必须要用在循环体中,也可以作为计数,用来重复循环体中语句特定次数。比如下面的例子:

for 循环还可以使用 break 结束循环,也可以使用continue 结束当前循环,进入下一次循环。取 n = 10,把刚才那个程序改一下:

在这个程序里,用 if 语句判断 i 的值是不是 3 ,如果是 3 则跳过循环体中后面的语句,进入下一次循环,也就是取 i 为4,并继续执行循环体中的语句。

如果 i 的值是 7 ,则退出循环。

请注意,这里跳出当前循环体中的语句,进入下一次循环,用的是 continue. 而退出整个的循环过程,用的是break. 这也是continue与break的区别。

while 循环是说当满足一个条件就一直执行某些动作。我们把上面的例子用 while 循环改写一下。

在这段代码里面,i 的初始值是 1,只要 i 的值小于等于 n 的值,就一直执行 sum = sum + i的动作。为了保证 i 值的同步变化,需要在做完sum = sum + i动作后,让 i 的值也同步增加1。

其他的与 for 循环类似,不再赘述。

欢迎阅读 实验二 MATLAB程序设计 一、 实验目的 掌握利用 if 语句实现选择结构的方法。 掌握利用 switch 语句实现多分支选择结构的方法。 掌握利用 for 语句实现循环结构的方法。 掌握利用 while 语句实现循环结构的方法。 掌握 MATLAB函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有 MATLAB7.0以上的软件环境)。 文件的编写: 启动 的根的函数(这个方程不一定为一元二次方程,因 a、b、c 的 不同取值而定) ,这里应根据 a、b、c 的不同取值分别处理, 有输入参数提示, 当 a 0,b 0,c ~ 0 时应提示“为恒不等式 ! ”。并输入几组典型值加以检验。 (提示:提示输入使用 input 函数) 输入一个百分制成绩,要求输出成绩等级 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 相乘再加上 1000、 10000 时,结果 2 2 2 3 2 n 2 6 1 是多少? 思考题: 有一分数序列: 编写一段程序,求前 16 项的和。 四、实验报告要求(包含预习报告要求和最终报告要求) 实验名称 实验目的 3. 实验设备及条件 预习报告 要求 4. 实验内容及要求 最终报告 5. 实验程序设计 要求 指程序代码。 实验结果及结果分析 实验结果要求必须客观 , 有数据的可以记录数据,没有数据的简单描述实验现象。结果分析是 对实验结果的理论评判。 实验中出现的问题及解决方法 思考题的回答 四、 实验报告的提交方式 Word 文档,命名方式 :实验号 _你的学号 _姓名 !!! 例如本次实验:实验一 __张三 .doc (信息 101 提交报告邮箱 ): E_mail: (网络工程 101 提交作业邮箱 ):E_mail: M(注意网络班的 M 是大写的 ) 下一次课前提交 ,过期不收 ! 五、 参考文献 参考教材和 Matlab 帮助文件。 实验名称 MATLAB程序设计 欢迎阅读 欢迎阅读 实验目的 掌握利用 if 语句实现选择结构的方法。 掌握利用 switch 语句实现多分支选择结构的方法。 掌握利用 for 语句实现循环结构的方法。 掌握利用 while 语句实现循环结构的方法。 掌握 MATLAB函数的编写及调试方法。 实验设备及条件 计算机一台(带有 MATLAB7.0以上的软件环境)。 实验内

我要回帖

更多关于 统计奇数的个数 的文章

 

随机推荐