为清晰起见而编辑。我为混乱道歉:3
好的,所以我正在上一个在线 CS 课程,我们应该用 C 语言编写一个程序,它会告诉你如果你在月初有一个便士并将其翻倍,你会有多少钱每天。
每一天,你都会得到昨天的两倍加上前几天的一切。
示例:您从 0.01 开始,然后在第 3 天计算运行总计。所以第一天是 0.01,第二天是 0.02,第三天是 0.04。在第 3 天,您将获得 0.01+0.02+0.04 (.09)。
该程序打算在任何给定月份(28 - 31 天)的持续时间内计算此过程。
我很难实现这一点。我已经把它加倍了,但我不确定如何将之前计算的天数加在一起。
这是我的代码:
#include <stdio.h>
#include <math.h>
int main(void) {
/*days represents total days in months*/
/*pens represents the number of pennies on the first day*/
long long days;
long long pens;
do {
printf("Enter the number of days in the month: ");
scanf("%llu", &days);
} while(days < 28 || days > 31);
printf("Enter the initial number of pennies: ");
scanf("%llu", &pens);
for (int i=0; i<= days-1; i++) {
pens += pow(2,i);
printf("You'll have $%llu\n", pens);
}
}
edit2:好的,所以我想我已经修复了它,这要感谢你所有的真棒建议。我将最后一部分更改为:
for (int i=0; i<= days-1; i++)
{
pens = pens + (pens * 2);
}
total = pens / 100;
printf("You'll have $%.2f\n", total);
}
虽然输出仍然存在一个小问题(我在想,这是由于我使用的数据类型造成的?)它打印出来:
您将获得 0.00 美元 您将获得 0.00 美元 您将获得 0.00 美元 您将获得 0.00 美元 您将获得 2.00 美元 您将获得 7.00 美元 您将获得 21.00 美元、您将获得 65.00 美元 您将获得 196.00 美元、您将获得 590.00 美元您将获得 $1771.00 您将获得 $5314.00 您将获得 $15943.00 您将获得 $47829.00 您将获得 $143489.00 您将获得 $430467.00 您将获得 $1291401.00 您将获得 $3874204.00
等等
相当不错,但我打赌它不是那么准确,因为前几次迭代是 0.00。