- 编程计算存款利息。有1000元,想存5年,可按以下5种办法存:
(1) 一次存5年期。
(2) 先存2年期,到期后将本息再存3年期。
(3) 先存3年期,到期后将本息再存2年期。
(4) 存1年期,到期后将本息再存1年期,连续存5次。
(5) 存活期存款,活期利息每一季度结算一次。
假设银行存款利息如下:
1年期定期存款利息为1.5%;
2年期定期存款利息为2.1%;
3年期定期存款利息为2.75%;
5年期定期存款利息为3%;
活期存款利息为0.35% (活期存款每一季度结算一次利息)。
计算方法如下:
如果r为年利率,n为存款年数,则计算本息和的公式为
1年期本息和:P = 1000 * (1+r);
n年期本息和:P = 1000 * (1+n*r);
存n次1年期的本息和:P = 1000 * (1+r)n;
活期存款本息和:P = 1000 * (1+r/4)4n。
注:1000 * (1+r/4)是一个季度的本息和。
提示:math.h函数库中有pow函数,例如pow(3.6, 2)就表示3.62。
//author:祁山何小喵
//time:2020.03.28
//task:计算各种存款方式所得的利息
#include <stdio.h>
#include <math.h>
#define Principal 1000 //本金1000元
int main()
{
float p1, p2, p3, p4, p5;
p1 = Principal * (1 + 5 * 0.03) - Principal; //5年期,利率为3%
p2 = Principal * (1 + 2 * 0.021) * (1 + 3 * 0.0275) - Principal; //先存2年(利率2.1%),到期本息再存3年(利率2.75%)
p3 = Principal * (1 + 3 * 0.0275) * (1 + 2 * 0.021) - Principal; //先存3年(利率2.75%),到期本息再存2年(利率2.1%)
p4 = Principal * pow((1 + 0.015), 5) - Principal; //存1年期(利率1.5%),到期后将本息再存1年期,连续存5次
p5 = Principal * pow((1 + 0.0035 / 4), 4 * 5) - Principal; //存活期存款(利率0.35%)
printf("存5年期所得的利息是%.2f元\n", p1);
printf("先存2年,到期本息再存3年所得的利息是%.2f元\n", p2);
printf("先存3年,到期本息再存2年所得的利息是%.2f元\n", p3);
printf("存1年期,到期后将本息再存1年期,连续存5次所得的利息是%.2f元\n", p4);
printf("存活期存款所得的利息是%.2f元\n", p5);
return 0;
}
- 购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,编程计算多少月能还清。设d为300000元,p为6000元,r为1%。对求得的结果取小数点后一位,对第2位按四舍五入处理。
计算还清月数m的公式如下:
lg p − lg ( p − d ∗ r ) lg ( 1 + r ) \frac{\lg{p}-\lg{(p-d*r)}}{\lg{(1+r)}} lg(1+r)lgp−lg(p−d∗r)
或改写为
lg p p − d ∗ r lg ( 1 + r ) \frac{\lg{\frac{p}{p-d*r}}}{\lg{(1+r)}} lg(1+r)lgp−d∗rp
提示:math.h函数库中有log10函数求以10为底的对数,
例如log10(7)就表示log7。
//author:祁山何小喵
//time:2020.03.28
//task:计算还清贷款所需月数
#include <stdio.h>
#include <math.h>
int main()
{
int d = 300000, p = 6000; //贷款金额为300000元,每月还款6000元
float m, r = 0.001; //月利率为1%,需要m月才能还清
m = log10(p / (p - d * r)) / log10(1 + r);
printf("还清月数为%.1f", m);
return 0;
}
- 输入一个不多于5位的正整数,要求:
(1) 求出它是几位数;
(2) 分别输出每一位数字;
(3) 按逆序输出各位数字,例如原数为321,应输出123。
//author:祁山何小喵
//time:2020.04.12
//task:输入一个整数,求其位数;输出其每个数字;将其逆序输出
#include<stdio.h>
int number(int p