>> [音乐播放]
>> ZAMYLA陈：你愿意接受 $ 10万的权利或接收
便士的一个月，每天都在那里 每个后续的一天，您会收到
便士的两倍 收到的前一天？
在便士，我们要 证明为什么你应该
绝对采取便士。
你的工作是写pennies.c -
一个程序，首先会询问用户如何 多少天有一个月
然后问多少便士用户 将收到的第一天。
然后计算该方案应 量，用户将不得不
结束时累积的 一个月，并显示它。
>> 我们可以打破这个程序 成一对夫妇的任务。
我们需要提示 多个用户输入 -
天月，和便士 第一天。
我们需要跟踪多少钱 用户有更新每
每天的量增加一倍 他们收到的便士。
最后，我们打印 最后的总美元。
>> 让我们来解决用户输入。
我要去开拓apples.c， 短节目交易
输入和输出。
这里的顶部，我已经包括了一些 ，我需要的库 -
CS50的图书馆和一个标准 I / O库。
我打印提示符下使用 printf函数从
标准I / O库。
但实际的用户提示 这发生在下一行
调用getInt函数在CS50库。
>> 调用getInt获得来自用户的输入，并 保证了输入是一个整数。
所以，我存储用户的输入转换为整型 ，减去1，然后
如果我打印出新的价值。
编译后使用apples.c 命令“苹果，”我有一个
可执行文件苹果。
跑步，我就输入1。
该计划告诉我， 我还剩0苹果。
因此，工作不如预期。
>> 因此，让我们再次运行此 和输入负1。
现在，有一个负适量的苹果 并没有真正意义，但
程序接受它，因为负 1，好了，它是一个整数。
而现在的程序或怪物 里面的程序吃负
苹果，现在我有 负2个苹果。
嗯，所以这是一个教训 -
即使调用getInt功能和 相关的功能，像GetFlow或
则由GetString引发得到正确的数据类型， 确保输入使
程序的意义。
>> 在便士，也不会做的只是一个提示 一个整数，你需要使
确保该用户输入的整数 有意义的上下文。
一个月只能有28个， 29，30，或31天。
我们要不断要求 一个有效的整数。
如果他们输入一个整数超出了我们 公认的边界，我们将促使他们
一遍又一遍，直到你 给我们一个有效的整数。
>> 回想一下“重复，直到” 从头阻止？
你可以做一个类似的结构 在C中使用“while”循环
或“while”循环。
while循环结构有一个条件 所必须满足的
体循环执行。
>> 这看起来有点相似， 因为条件就像是
与角度的划痕块 和进入的括号
“while”循环。
因此，该条件将检查是否 整数内
适当的边界。
您可以提示整数调用getInt 然后执行你的“，而”
循环，重复的提示和打印 的指示，而输入
是无效的。
>> 另一种方法，以确保正确的用户输入 是用“做，而”循环，
这是非常相似While循环。
“而”循环执行代码 身体内部的，然后检查是否
条件是否符合或不。
这是有用的，用于获取用户输入， 因为你知道，你需要
提示他们至少一次。
如果不符合条件，程序 将执行线后
“做，而”循环。
如果该条件得到满足，虽然 循环将重复
>> 遵循“do-whil​​e”循环验证用户 输入会是这个样子。
我声明了一个变量n，调用getInt， 然后重复，直到n是有效的。
而这个过程中，我解释说，使用 整数数据类型，这
您将使用的天的月份。
但我们知道，便士 很快就会堆积起来，所以为了
存储较大的数字，使用的数据类型 的LongLong，但要记住相同
验证适用的原则。
>> 真棒，所以一旦我们有两个有效 来自用户的输入 -
当月天便士 第一天 -
我们可以搬上搬下 该计划的一部分。
第一天，用户开始时 然而，许多指定便士
和金额的硬币，他们 收到第二天一倍。
因此，它是有道理的跟踪 这两个数额 -
用户有多少钱，以及如何 许多便士他们会得到。
>> 现在，做的事情为28到31天 是重复的，所以让我们用“为”
循环来遍历天 本月，更新总一分钱
每次达到。
“for”循环语法包含 以下内容 -
的初始化，条件 和更新。
你的“for”循环将初始化 一个变量，当它
首先进入循环。
如果条件满足，身体 该循环将执行。
之后，将执行更新。
如果病情仍满足， 循环将执行和更新，
重复，只要你的条件 计算结果为true。
>> 这里有一个“for”循环，共分 由2个共10次的整数p。
注意我是如何宣布整数p 我的“for”循环外，从而使
整数可以访问 外“for”循环。
一个月后，已经过去了，现在是时候 告诉用户多少钱
他们已经得到了。
按照规范，你需要告诉用户 多少美元，没有多少
便士，他们有。
但到目前为止，你一直跟踪 总便士使用LongLongs的，
这全是数字。
>> 有100便士到1美元，因此，除非 便士的数目是一个
100的倍数，你需要 代表十进制地方。
允许一倍复写 你做到这一点。
那么，我们如何转换代表 便士美元？
>> 让我们来看看pi.c.
这个程序需要一个LONGLONG big_pi的和 它除以10万，并打印
结果到小数点后五位。
如果我们想显示四位小数 的地方，然后我们可以替换此
号码。
因此，让我们保存，编译PI， 然后看到的结果，这是我们
预计为3.1415 -
圆周率前五位。
>> 虽然它不是。
为什么？
嗯，因为big_pi的LongLong 这是一个整体的数字，不会
保持小数跟踪。
我要修改 是在分裂。
我需要投双 分裂，因为双打跟不上
跟踪的小数位数。
我要添加一个新行 这里更好的格式。
>> 在这里，我们有它 -
3.1416。
你可能会注意到它打印3.1416 3.1415而不是如预期。
这是因为它在轮 分裂过程，而不是仅仅
截断值。
现在，你应该能够打印 最后的总正确，完
该计划。
>> 恭喜。
我的名字Zamyla。
这是便士。
>> [音乐播放]