你好欢迎回来｡
在本讲座演示中 我想为我们的天气计划提供一个解决方案
在我们之前的挑战中｡
让我们启动代码 图块会建立项目｡
我将命名 这个项目天气｡
再次提醒大家
应用程序将允许我们获得年度总数和月度 平均降雨量
所以在顶部, 你想要 以提供注释, 告诉您程序是什么｡
同样, 这个程序将是
求出几年的年总数､ 年平均数和月平均数 5年的降雨量数据｡
所以在最上面, 我会 来定义一些常量, 我们还没有讨论过
预处理器指令的详细信息, 但您熟悉
这个, 其实并不真实的
所以我会把它包括进去 我想写高质量的代码｡
所以我要定义 一个叫做months的变量可以等于12和一个常数｡
您也可以使用常数 修饰符, 我还要定义一个,
叫做年数等于5｡
那就是我们要星星的｡
我们首先想要的是
在main函数中要做的是创建 是一个二维数组, 我们要初始化数据｡
所以我们要初始化
降雨量, 2010年, 2011年和2015年降雨量数据等等
所以我们知道如何创建一个 二维数组,
我们只指定了数据类型名称和 我认为它们应该是浮点数, 因为浮点数有小数点 和降雨量可以是小数｡
所以我们只需要说float,
我们将它命名为rain然后我们将指定 我想有5行12列｡
所以我们只需要说几年 也就是常量和月份, 然后我们要初始化它
我们已经声明了它的大小 现在我们要初始化它｡
您可以通过以下方式初始化它： 然后你可以在每一行都有内括号｡
我们也可以把这个 数组常量,
但我们不会这么做
现在我已经这样做了 数据,
我不想输入它是什么｡
这是10乘以50或12 乘以5, 就是60个元素｡
我不想输入60个元素
因为这会占用你很多时间 坐在那里睡着｡
所以我要复制 粘贴我初始化并初始化一些数据｡
这只是一些虚拟数据; 它可能不正确｡
但你会看到我们有括号 所以我们有5行｡
我们将每行分隔为 逗号, 里面的花括号代表每一行｡
然后在卷曲的里面 大括号,
我们用逗号分隔每个月值｡
所以我们用 逗号分隔行内的值｡
这里有一堆 年降雨量｡
比如说第一行 将表示2011年, 第一列将是1月｡
所以在2011年1月, 有4个｡ 3英寸的降雨量｡
如果我们看6的话｡ 7, 这将是2012年的13｡
在三月份我们 有6个｡ 7英寸的降雨量｡
所以你可以看到这代表了 年和月的降雨量｡
既然我们已经初始化了所有 我们可以初始化或创建其他局部变量｡
所以我们要创造
一年零一个月, 因为这可以帮助我们 整整四个月｡
所以我只是说年月我
在同一行中创建它们, 我还将创建 一对浮动小计和总计｡
小计为年度合计; total将是总降雨量, 这样我就可以得到年平均值｡
我们也会找出 如何得到月平均值｡
所以我首先要做的
我需要一个for循环来输出我们的 特定年份的降雨量｡
所以首先我要 在一行上打印出来｡
我将打印出年份, 我将添加一个选项卡...
添加一个选项卡使其格式更好｡
让我们添加2个选项卡, 看看如何 这看起来就像我展示的一样｡
然后我会把降雨量 我会用英寸来表示并添加一个换行符｡
同样, 你会想要测试 看看它是什么样子｡
然后我将进入我的循环｡
那么我想怎么做 要计算每年的小计并显示它们,
我想去 所有的行, 所有的年, 然后对于每一年,
我 我想查看所有月份, 因为我需要把月份加起来｡
我们的外循环将开始 第一年, 也就是2011年, 但实际上它在
数组, 因为数组索引为0
我还要初始化 另一个局部变量｡
请记住, for循环非常灵活｡
您可以创建其他 for语句中的变量｡
我不需要创建变量 在第19行或第20行的for语句之外使用｡
所以在这里我将创建 一个叫做total的变量或者初始化我的total变量｡
然后我会一直走到 我的年数小于我的年数, 这是常数,
我会增加 我计数器循环控制变量year
所以年和月是循环的 在线19上控制变量｡
这将是 代表我的外环｡
这是个二维数组 也需要一个内部循环｡
而我的内部循环 每个月都要经历｡
这里我会说月 等于0, 则每个月小计也等于0,
对其进行初始化
我会一直查到 我这几个月都过完了｡
我将递增 我的循环控制变量, 这是我的内部循环
所以在我的内部循环中我可以 确定小计, 我不需要显示任何内容｡
所以我现在要做的
内部循环是把每年小计相加, 我小计是我每年的总数｡
而我现在 以存取数组｡
我的数组名是rain｡
所以我只能说雨子 所以这一切都是为了2011年 循环,
然后对每个月执行｡
而我正在添加｡
所以我说小计等于小计 加上雨再加上数组值｡
所以内循环经过 则该年的所有月份都会创建一个小计｡
现在我想显示
循环外的小计, 因为我只想 小计5次为5年｡
所以我可以在这里 print语句,
该语句有助于设置数据的格式, 还 有助于正确显示它｡
现在这将是 年和小计｡
所以我们可能要加上 我会说是几个选项卡, 但我们会看到 它看起来像,
所以斜杠t斜杠t｡
还有一件事
我们要做的是把它加到总数中 所有年份的总数｡
所以我们可以说 合计加小计｡
然后你会注意到 实际上是每次进入内部循环时都被重新初始化
这样我们就不用推迟了｡
在这里我们只想 确保压痕良好｡
注意我的缩进
实际上我不需要27和29上的括号 因为它是一个语句, 但我将把它们留在这里
现在我已经做了 打印出年降雨量或每年的降雨量, 我现在就可以
显示年平均值, 因为我有足够的数据, 我有总数
降雨量以每月降雨量计｡
所以在这里我将展示 年平均数, 即总数除以年数｡
因此, 在此处添加另一个print语句｡
这又是一个测试的好地方｡
所以让我们继续构建 确保没有任何错误,
因为这是大量的代码｡
我们有一个 未声明变量year
当您看到编译器错误时, 它有时会歪曲实际的错误｡
所以在这个例子中, 它告诉我
第19行出现错误, 但真正导致错误的原因是 返回上一个没有分号结尾的语句｡
让我们运行一下看看 可以看到每年的降雨量, 看它的格式｡
现在是2010年 以英寸为单位的降雨量｡
因此, 我们可能添加了太多选项卡 在我们显示小计之后, 则年平均值为39｡
4.
所以我们可能想解决这个问题 就可以把这里去掉｡
请记住, 您可以添加
在输出中使用转义序列斜杠t｡
至少看起来很不错｡
现在我们得再要一个 循环来显示月平均值｡
所以在我显示每月 我想在一行中打印所有内容｡
所以我要打印出 使用printf的一些信息｡
我要打印出我的 月平均值, 并添加2行提要,
使其格式更好｡
然后我要打印 我其他信息
我们要分开 将月份增加几个空格, 然后添加一个新行｡
所以我们也要这么做 当我们执行for循环时｡
现在我们需要另一个for循环 现在来看看月平均数｡
所以在这个for循环中, 外部 循环将从月份开始
不是按行排列,
而是 我现在要做的就是浏览每一列 我需要得到月平均数｡
所以我要开始了
我会仔细看每一栏, 也就是一月二月 三月代表列｡
对于每一列,
我将 然后我就可以使用小计 并且总数也是变量｡
这里我会说月 等于0, month小于month,
month加上加上｡
然后我的内部循环是 会经历很多年｡
所以我现在 等于0｡
记住我还想 重新初始化小计｡
所以这里我会说小计 等于0, 因为我想从0开始,
一旦我得到了我的新年, 通过 所有年份, 然后递增年份,
即leap控制变量｡
在这里我想 加上我的小计, 刚好等于我的
年和月的数组｡
所以重要的是 我们要理解的是, 我们改变了 标识｡
我们第一次迭代 通过查看每一行和每一列｡
在这张图中我们实际上
每一列, 并查看特定的行, 因为我们 计算每月平均数｡
我们得到小计, 然后我们 我只想打印出那个月的小计除以年数｡
这样它就能与 我们在第37行输出｡
所以我们要做 像这样,
我们用4来做 1格式, 小计除以年数｡
我们加了几个空格 最好的排列方式,
我们可能需要再加一个空格｡
然后在我们打印完 所有内容, 我们只需添加一个换行符以提高可读性,
就完成了｡
这样我们就给予 因为我们得到了所有的小计 我们把它按年划分｡
现在让我们来建造这个 然后运行它｡
现在我们将看到 每月总计或每月平均值的输出｡
这里我们看到 平均值和格式并没有真实的的好｡
所以这要看情况 角色的输出｡
我们实际上可能希望减少 空格, 只在那里添加一个空格, 让我们看看这样做是否更好｡
现在我们运行它, 看看它看起来
因为您希望每个月都能与 平均数, 这就好一点了｡
我们还是会有一点不爽 月份为3个字符,
整数为2｡
我们主要是搞砸了 因为只有一个空间｡
现在我可以通过 就像这样｡
所以这应该使 格式都很好｡
但你可以看到我们 打印出年降雨量和月平均降雨量｡
我希望这让你熟悉了 二维数组, 如何循环访问它们,
如何分配 数组以及如何存取数据｡
-谢谢—谢谢