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;  } 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值