存款利息的计算。有1000元,想存5年,可按以下5种办法存:(1)一次存5年期 (2)先存2年期,到期后将本息再存3年期 (3)先存3年期,到期后将本息再存2年期 (4)存1年期,到期后将本息再

存款利息的计算。有1000元,想存5年,可按以下5种办法存:

(1)一次存5年期

(2)先存2年期,到期后将本息再存3年期

(3)先存3年期,到期后将本息再存2年期

(4)存1年期,到期后将本息再存1年期,连续存5次

(5)存活期存款,活期利息每一季度结算一次

2017年银行存款利息如下:

1年期定期存款利息为1.5%;

2年期定期存款利息为2.1%;

3年期定期存款利息为2.75%;

5年期定期存款利息为3%;

活期存款利息为0.35%(活期存款每一季度结算一次利息)

在这里插入图片描述

#include<stdio.h>
#include<math.h>
int main() 
{
	float money = 1000, r1 = 0.015, r2 = 0.021, r3 = 0.0275, r5 = 0.03, r_h = 0.0035;
	//1
	float p1 = money * (1 + 5 * r5);// 一次存5年期 
	//2
	float p2_1 = money * (1 + 2 * r2);// 先存2年期,到期后将本息再存3年期
	float p2 = p2_1 * (1 + 3 * r3);
	//3
	float p3_1 = money * (1 + 3 * r3);// 先存3年期,到期后将本息再存2年期
	float p3 = p3_1 * (1 + 2 * r2);
	//4
	float p4 = money * pow(1 + r1, 5);// 存1年期,到期后将本息存再存1年期,连续存5次
	//5
	float p5 = money * pow(1 + r_h / 4, 20);// 存活期存款。活期利息每一季度结算一次
	printf("%f\n%f\n%f\n%f\n%f\n", p1,p2,p3,p4,p5);
	return 0;
}

结果如下图:
在这里插入图片描述

补充说明

为了计算不同存款方式下的最终本息总额,我们需要根据每种存款方式的规则进行逐步计算。

首先,我们定义几个变量和函数来帮助我们进行计算:

P0: 初始存款金额,这里为1000元。
r_1, r_2, r_3, r_5, r_active: 分别为1年期、2年期、3年期、5年期和活期存款的年利率。
n_1, n_2, n_3, n_5, n_active: 分别为1年期、2年期、3年期、5年期和活期存款的年数或季度数(对于活期存款)。
由于活期存款利息每一季度结算一次,我们需要将年利率转换为季度利率,并将年数转换为季度数。

接下来,我们按照每种存款方式进行计算:

(1)一次存5年期
本息总额 = P0 × (1 + r_5)^5

(2)先存2年期,到期后将本息再存3年期
本息总额 = P0 × (1 + r_2)2 × (1 + r_3)3

(3)先存3年期,到期后将本息再存2年期
本息总额 = P0 × (1 + r_3)3 × (1 + r_2)2

(4)存1年期,到期后将本息再存1年期,连续存5次
本息总额 = P0 × (1 + r_1)^5

(5)存活期存款,活期利息每一季度结算一次
季度利率 = r_active / 4
季度数 = 5 × 4 = 20(因为一年有4个季度)
本息总额 = P0 × (1 + 季度利率)^20

现在我们可以开始计算每种存款方式下的本息总额。
原代码中,有几个地方的计算公式需要调整以符合复利计算的原理。复利计算中,本金和利息会在每个存款周期结束时相加,并作为下一个周期的本金。下面是修正后的代码:

#include<stdio.h>  
#include<math.h>  
int main()   
{  
    float money = 1000, r1 = 0.015, r2 = 0.021, r3 = 0.0275, r5 = 0.03, r_h = 0.0035;  
    // 1  
    float p1 = money * pow(1 + r5, 5); // 一次存5年期,复利计算  
      
    // 2  
    float p2_1 = money * pow(1 + r2, 2); // 先存2年期  
    float p2 = p2_1 * pow(1 + r3, 3); // 到期后将本息再存3年期  
      
    // 3  
    float p3_1 = money * pow(1 + r3, 3); // 先存3年期  
    float p3 = p3_1 * pow(1 + r2, 2); // 到期后将本息再存2年期  
      
    // 4  
    float p4 = money * pow(1 + r1, 5); // 存1年期,到期后将本息存再存1年期,连续存5次  
      
    // 5  
    float r_h_quarter = r_h / 4; // 季度利率  
    float p5 = money * pow(1 + r_h_quarter, 5 * 4); // 存活期存款,每季度结算一次,共20个季度  
      
    printf("%f\n%f\n%f\n%f\n%f\n", p1, p2, p3, p4, p5);  
    return 0;  
}

现在,每个存款方式的计算都使用了pow函数来应用复利公式。对于活期存款,由于每季度结算一次利息,所以总季度数为5 * 4 = 20。

请注意,这里假设所有的利率都是年化利率,并且是在每个存款周期结束时结算的。如果实际情况有所不同(例如,某些银行可能在存款周期开始时结算利息),则需要相应地调整计算公式。

C和C++区别

C语言和C++是两种不同的编程语言,尽管C++在设计和实现上受到了C语言的强烈影响,但两者之间存在一些显著的区别。以下是C语言和C++之间的一些主要不同点:

面向对象编程(OOP):
C++是一种面向对象的编程语言,它支持类、对象、继承、多态等OOP概念。
C语言是一种面向过程的编程语言,不支持OOP特性。
内存管理:
C++引入了析构函数、RAII(资源获取即初始化)等概念,使得内存管理更加安全。
C语言中的内存管理需要程序员手动进行,包括使用malloc、calloc、realloc和free等函数。
函数重载:
C++支持函数重载,即可以使用相同的函数名但参数列表不同的函数。
C语言不支持函数重载。
引用和指针:
C++引入了引用的概念,引用是变量的别名,可以看作是对变量的一个常量指针。
C语言只有指针的概念,没有引用。
异常处理:
C++提供了try/catch/throw异常处理机制,使得错误处理更加灵活和方便。
C语言没有内置的异常处理机制,通常使用错误码或全局变量进行错误处理。
模板和泛型:
C++支持模板和泛型编程,使得可以编写可重用的代码。
C语言不支持模板和泛型。
标准库:
C++的标准库比C语言的更加丰富和强大,包括STL(Standard Template Library)等。
C语言的标准库相对简单,但提供了基本的输入输出、字符串处理、内存管理等功能。
运算符重载:
C++允许程序员重载大部分运算符,以便对自定义类型进行类似内置类型的操作。
C语言不支持运算符重载。
命名空间(Namespace):
C++引入了命名空间的概念,用于解决命名冲突问题。
C语言没有命名空间的概念。
初始化列表:
C++中的类构造函数可以使用初始化列表来初始化成员变量。
C语言没有类,因此没有初始化列表的概念。
编译时检查:
C++在编译时会进行更严格的类型检查,有助于减少运行时错误。
C语言的类型检查相对宽松,有时可能导致运行时错误。
请注意,虽然C++在功能和安全性方面相对于C语言有所改进,但由于C++的复杂性,它也可能导致一些新的问题,如编译时间增加、代码难以维护等。因此,在选择使用哪种语言时,需要根据具体的应用场景和需求进行权衡。

C++实现

在C++中实现上述C语言代码几乎是一样的,因为C++兼容C语言的语法。但是,为了符合C++的编程风格,我们可以稍微修改一下代码,例如使用#include 代替#include <stdio.h>,并使用C++风格的I/O流。下面是C++版本的代码:

#include <iostream>  
#include <cmath> // 使用cmath而不是math.h,因为cmath是C++标准库中的  
  
int main() {  
    float money = 1000, r1 = 0.015f, r2 = 0.021f, r3 = 0.0275f, r5 = 0.03f, r_h = 0.0035f;  
  
    // 1  
    float p1 = money * std::pow(1 + r5, 5); // 一次存5年期,复利计算  
  
    // 2  
    float p2_1 = money * std::pow(1 + r2, 2); // 先存2年期  
    float p2 = p2_1 * std::pow(1 + r3, 3); // 到期后将本息再存3年期  
  
    // 3  
    float p3_1 = money * std::pow(1 + r3, 3); // 先存3年期  
    float p3 = p3_1 * std::pow(1 + r2, 2); // 到期后将本息再存2年期  
  
    // 4  
    float p4 = money * std::pow(1 + r1, 5); // 存1年期,到期后将本息存再存1年期,连续存5次  
  
    // 5  
    float r_h_quarter = r_h / 4; // 季度利率  
    float p5 = money * std::pow(1 + r_h_quarter, 5 * 4); // 存活期存款,每季度结算一次,共20个季度  
  
    // 使用C++风格的I/O流输出  
    std::cout << std::fixed << std::setprecision(2); // 设置输出的小数点后保留位数  
    std::cout << p1 << std::endl;  
    std::cout << p2 << std::endl;  
    std::cout << p3 << std::endl;  
    std::cout << p4 << std::endl;  
    std::cout << p5 << std::endl;  
  
    return 0;  
}

注意几点:

使用了#include 和#include ,这是C++标准库中的头文件。
使用了std::pow而不是pow,因为pow函数在cmath库中,并且需要std::前缀来指明它属于std命名空间。
添加了std::cout << std::fixed << std::setprecision(2);来设置输出的小数点后保留位数,这样输出会更加整齐。
使用了C++风格的I/O流(std::cout)来替代C风格的printf。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网友张无忌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值