【问题描述】李幸运中了税后n百万体育彩票,他坚信细水长流,于是存入年利率4%的银行 ,计划每年年底取出30万。请编写程序,输入浮点数n(1=<n<=5), 输出多少年后,李幸运不再能取30万? 【输入形式】一个浮点数 【输出形式】一个整数 【样例输入】1 【样例输出】3
时间: 2024-10-21 21:15:49 浏览: 31
李幸运的情况可以用复利计算公式来解决,因为他每年提取固定金额并且存款利息按年计算。我们可以通过不断迭代直到李幸运账户余额不足以支付当年的30万来确定剩余资金何时耗尽。
首先,我们需要定义一个函数,计算每年的本金加利息总额,然后检查是否还能取出30万。如果不能,则返回当前年份。
以下是一个简单的C程序来实现这个功能:
```c
#include <stdio.h>
// 初始余额
float initialBalance = 0.0;
// 年利率
float annualInterestRate = 0.04;
// 计算一年后的总余额
float calculateYearlyBalance(float balance) {
return balance * (1 + annualInterestRate);
}
int main() {
float n, yearsToWithdraw = 0, currentBalance;
// 输入初始彩票奖金
printf("请输入彩票税后奖金(n百万):");
scanf("%f", &n);
initialBalance = n * 1e6; // 转换为万元
while (yearsToWithdraw < 1 || initialBalance >= 300000) { // 保证至少取过一年
yearsToWithdraw++;
currentBalance = calculateYearlyBalance(initialBalance);
// 检查是否还能取30万
if (currentBalance < 300000) break; // 如果不够则跳出循环
}
printf("李幸运将在第%d年后不再能取出30万。\n", yearsToWithdraw);
return 0;
}
```
在这个程序中,`initialBalance`变量存储初始奖金,`calculateYearlyBalance`函数用于计算下一年的余额。主循环中,每增加一年,就检查余额是否小于等于30万。当满足条件时,跳出循环并输出结果。
阅读全文