复利C语言,C计算复利增长

/* 标准文档模板 */

#include "Stdio.h"

#include "Conio.h"

/*

月份数: x

每月存入本金: m

月利率: r

第x月的本息和: f(x)

算法: 运用递归思想

f(x)=|  m*(1+r) (x=1)

|  {m*(1+r)+m}*(1+r) (x=2)

|  { f(x-1)+m }*(1+r) (x>2)

*/

float m; /*月份*/

float r; /*月利率*/

float y; /*年限*/

float f(int x)

{

if(x==1) return m*(1+r);

else if(x==2) return  (m*(1+r)+m)*(1+r);

else return (f(x-1)+m)*(1+r);

}

void printMsg(float x)

{

printf("------------------------------\n");

printf("\n");

printf("\n");

printf("\t每月存入%.0f元",m);

printf("\n");

printf("\n");

printf("\t年回报率为%.2f%",r*12*100);

printf("\n");

printf("\n");

printf("\t存%.0f年",y);

printf("\n");

printf("\n");

printf("\t复利增长");

printf("\n");

printf("\n");

printf("\t可获得本息共%.2f元",f(x));

printf("\n");

printf("\n");

printf("------------------------------\n");

}

int main(void)

{

/* 此处添加你自己的代码 */

char str='n';

system("graftabl 936");    /*调用Ms-Dos中文支持 */

clrscr();                                   /* 清屏*/

while(1)

{

printf("\n\n\t每月存入金额为(元):");

scanf("%f",&m);

printf("\n\n\t年回报率为(%):");

scanf("%f",&r);

printf("\n\n\t年限为(年):");

scanf("%f",&y);

r=r/100/12;

printMsg(y*12);

printf("结束?(y/n):");

fflush(stdin);

/*

在你输入y回车后,键盘的缓冲区中会存在一个y和一个'\n'(回车符)。所以第第一次你的a会读入字符y,然而第二次输入y时,缓冲区中还有一个回车符在,所以第二次读入的是第一次残留在

缓冲区的回车符,而不是新输入的y。所以不满足条件,退出循环。

修改方法:

在scanf语句前加一句:fflush(stdin);这句的作用是清空缓冲区(就是所谓的流)中内容,这样你再次输入y的时候就不会读到上次剩余的回车符了。

*/

scanf("%c",&str);

if(str=='y' || str=='Y') break;

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值