设银行1年期定期存款年利率为2.25%,存款本金为capital元,试编程计算并输出n年后的本利之和。
(注: 目前银行活期存款的利息是按单利计息的。如果是定期存款,连本带息转入下一个存期,那么会继续计入定期的,相当于是复利。)
输入:输入一个正整数和一个实数,分别代表存款年数和存款本金。
输出:输出一个实数为n年后的本利之和,小数点后保留6位数字。
样例输入为: 2 100.0
样例输出为 :104.550625
思路是:既然是复利,直接算出1.0225的年份次方乘以本金
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main() {
float a, b,c;
scanf("%f %f", &a, &b);
c = pow(1.0225,a);
printf("%.6f", b * c);
}
算出结果少0.000004
尝试改变思路:用for循环,每过一年乘一次1.0225
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main() {
float a, b;
scanf("%f %f", &a, &b);
for (int i = 0; i < a; i++) {
b = b * 1.0225;
}
printf("%f", b);
}
结果多了0.00004
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main() {
float a, b;
scanf("%f %f", &a, &b);
for (int i = 0; i < a; i++) {
b = b * 1.0225;
printf("%f\n", b);
}
printf("%f", b);
}
结果如图所示,第一遍的时候B = 102.25没问题,第二遍乘以1.0225就不对了