H1 计算固始资金累加复利

H1 计算固始资金累加复利

程序:计算本金和复利之和。
编写程序打印出一个表格,这个表格显示了在几年时间内100美金投资在不通利率上的价值。用户将输入利率和要投资的年数。假设整合利息一年一次,表格将显示出一年间在此输入利率下河后边四个更高利率下投资的价值。
输入格式要求:“%d” 提示信息:“Enter interest rate:” “Enter number of year:”

输出格式要求:“\nyears” “%6d%%” "%3d " “%7.2f”
下面是程序运行时的情况:
Enter intereset rate: 6
Enter number of years: 5

  years	         6%	7%	8%	9%	10%
1		106.00	107.00	108.00	109.00	110.00
2		112.36	114.49	116.64	118.81	121.00
3		119.10	122.50	125.97	129.50	133.10
4		126.25	131.08	136.05	141.16	146.41
5		133.82	140.26	146.93	153.86	161.05

这是我自己琢磨出来的代码,有很多缺陷和不优美的地方

#include <stdio.h>
//根据前一年份做累加的函数
void accumulate(double balance[5], double rate)
{
	for (int i = 0; i < 5; i++)
	{
		balance[i] += balance[i]* rate * 0.01;
		printf("\t%.2lf",  balance[i]);
		rate++;
	}
	printf("\n");
}


int main()
{
	double initial_funding = 100;//初始资金
	double rate;//年利率
	int years;//要投资的年份

	printf("请输入年利率:\n");
	scanf("%lf", &rate);

	printf("请输入要投资的年份:\n");
	scanf("%d", &years);

	double balance[5];//余额数组

	printf("years\t6%%\t7%%\t8%%\t9%%\t10%%\n"); // 表头
	printf("1");
	double the_rate = rate;
	for (int j = 0; j < 5; j++)
	{
		balance[j] = initial_funding + initial_funding * the_rate*0.01;
		printf("\t%.2lf",balance[j]);
		the_rate++;
	}
	printf("\n");
	//打印第二个年份及以后的值
	for (int i = 2; i <= years; i++)
	{
		printf("%d", i);
		accumulate(balance, rate);
	}
	return 0;
}

这是参考网上的答案:

#include<stdio>
#define NUM_rate (sizeof(value) / sizeof(value[0]))//将数组value的元素个数进行宏定义,防止幻数的出现
#define INITiAL_value 100.00 //数组中的初始值进行宏定义
int main(void)
{
	int i, rate, NUM_year, year;
	float value[5];
	
	printf("Enter interest rate:");
	scanf("%d", &rate);
	printf("Enter number of year:");
	scanf("%d", &NUM_year);
	printf("\nyear");//打印出第一排的year
	for (i = 0; i < NUM_rate; i++)//利用循环打印出第一排剩下的内容
	{
		printf("%6d%%", rate + i);//i的进行迭代
		value[i] = INITiAL_value;//初始value数值中的值为100.00
	}
	putchar('\n');//换行,注意单引号
	for (year = 1; year <= NUM_year; year++)//循环打印year下的年数
	{
		printf("%3d   ", year);
		for (i = 0; i < NUM_rate; i++)//每一年中,循环打印不同利润率下的金额
		{
			value[i] += (rate + i) / 100.00 * value[i];//迭代更新value数组中的新值
			printf("%7.2f", value[i]);
		}
		putchar('\n');
	}
}

有几个要注意的点:

  1. 形参执行完毕后,控制权会回到主函数中,形参不再存在。此时,主函数中的实参的值不会受到形参的任何影响。形参只在函数内部起作用,函数执行完毕后,形参的作用域结束,对实参没有任何影响。在函数调用过程中,实参的值会被传递给形参,形成了形参的副本。函数内部对形参的操作只会影响形参本身,不会影响实参。所以,主函数中的实参的值不会被函数中的形参所改变。

  2. 注意那个#define的合适使用,以及对于宏定义函数中对数组中初始值定义的定义方法

  3. 对于整个代码的逻辑思维和整体设计思路要清晰简洁

  4. 学习优秀代码编写风格特点

本文参考【C语言循环】计算本金和复利_计算存款的本金和复利之和c语言-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

如是我闻艺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值