zoukankan      html  css  js  c++  java
  • 复利计算4.0

    程序完成时间为3月20日13:35分。

    发表时间为3月20日13:37分。

    此版本是在前面三个版本的基础上进行完善,实现了等额本息还款计算,解决了如果用户输入一部分不恰当的数据会提示输入不合法,请重新输入,增强了系统的运行性,不会因此而导致系统会奔溃

    不断修改的可观性,使用户更加直观的运用此运算器。

      1 #include<stdio.h>
      2    #include<math.h>
      3  #define x1   while(0 == 
      4    #define x2   ){    while('
    ' != getchar())    {    }    printf("输入不合法!
    请重新输入: ---");        }
      5   
      6    double danli(double i,int N,double P)
      7  {
      8        double nlx,F;
      9        nlx = P*i;
     10        F = nlx*N + P;
     11        return F;
     12   
     13   }
     14   
     15   double fuli(double i,int W,int N,double P)
     16   {
     17       double F;
     18       i=pow(1+i/W,W)-1;
     19       F=P*pow((i+1),N);
     20       return F;
     21   }
     22   
     23   double gusuan(double i,int W,int N,double F)
     24   {
     25       double P;
     26       i = pow(1+i/W,W)-1;
     27       P = F/pow((i+1),N);
     28       return P;
     29   }
     30   double shijian(double P,double i,double F)
     31   {
     32      double N,x;
     33       x=F/P;
     34       N=(log(x))/(log(i+1));
     35       return N;
     36   
     37   }
     38   double nianxian(double P,double N,double F)
     39  {
     40       double i;
     41        //i = W*(pow(pow(F/P,1.0/N),1.0/W)-1.0);
     42        i = pow(F/P,1.0/N)-1.0;
     43        return i;
     44   }
     45   double sum()
     46   {
     47        double y,yue,F=0.0,i,mi;
     48        double nl,yl;
     49        int N,W;
     50        int ch,j;
     51        printf("****** 1-年投资  2-月投资 ******
    ");
     52        scanf("%d",&ch);
     53       if(ch == 1)
     54       {
     55            printf("请输入年投资额:
    ");
     56           x1  scanf("%lf",&y)  x2;
     57        }
     58        else
     59        {
     60            printf("请输入月投资额:
    ");
     61            x1  scanf("%lf",&yue)  x2;
     62        }
     63        
     64        printf("请输入年利率
    ");
     65        x1  scanf("%lf",&i)  x2;
     66        printf("请输入年限
    ");
     67        x1  scanf("%d",&N)  x2;
     68        
     69        if(ch == 1)
     70        {
     71            F = y;
     72            for(j=0 ; j<N ; j++)
     73            {
     74                nl = F*i;
     75                F=y+nl+F;
     76           }
     77           return F-y;
     78        }
     79        else
     80        {
     81           F = yue;
     82            mi = i/12.0;
     83            for(j=0 ; j<N*12 ; j++)
     84            {
     85                yl = F*mi;
     86               F=yue+yl+F;
     87            }
     88            return F-yue;
     89       }
     90       
     91       
     92    }
     93   double refund()
     94  {
     95      double P,i,month_amount;
     96      int N,month;
     97     printf("************您进入本息还款计算************
    ");
     98      printf("请输入贷款金额:
    ");
     99      x1    scanf("%lf",&P)    x2
    100      printf("请输入年利率:
    ");
    101      x1    scanf("%lf",&i)    x2
    102      printf("请输入归还年限:
    ");
    103      x1    scanf("%d",&N)    x2
    104  
    105          //每月还款额=[贷款本金×月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]
    106  
    107      i = i/12;
    108      month = N*12;
    109      month_amount = P*i*pow((1.0+i),month)/(pow(1.0+i,month)-1);
    110      return month_amount;
    111  
    112  }
    113   void main()
    114   {
    115       double P,F1,F,i; //P是本金,F是收益,i年利率
    116       int N,W,ch2; //是期限
    117       while(1)
    118       {
    119       printf("		***************欢迎使用复利计算器*************
    
    ");
    120       printf("		|     -----1--------为复利---------------    |
    
    ");
    121       printf("		|     -----2--------为单利---------------    |
    
    ");
    122      printf("		|     -----3-------为估算----------------    |
    
    ");
    123     printf("		|     -----4-------为年限----------------    |
    
    ");
    124      printf("		|     -----5-------为年利率--------------    |
    
    ");
    125      printf("		|     -----6-------为月年收益--------------    |
    
    ");
    126      printf("		|     -----7-------等额本息还款--------------    |
    
    ");
    127      printf("		|     -----0-------为退出----------------    |
    
    ");
    128      printf("		**************请选择想要的功能************
    ");
    129      x1  scanf("%d",&ch2)  x2;//控制选择
    130      switch(ch2){
    131      case 1:
    132          printf("请输入本金:
    ");
    133          x1  scanf("%lf",&P)  x2;
    134          printf("请输入年利率
    ");
    135          x1  scanf("%lf",&i)  x2;
    136          printf("请输入年限:
    ");
    137          x1  scanf("%d",&N)  x2;
    138          printf("请输入复利次数:
    ");
    139          x1  scanf("%d",&W)  x2;
    140          F1 = fuli(i,W,N,P); break;
    141      case 2:
    142          printf("请输入本金:
    ");
    143          x1  scanf("%lf",&P)  x2;
    144          printf("请输入年利率
    ");
    145          x1  scanf("%lf",&i)  x2;
    146          printf("请输入年限:
    ");
    147          x1  scanf("%d",&N)  x2;
    148          F1 = danli(i,N,P); break;
    149      case 3:
    150          printf("请输入本利
    ");
    151          x1  scanf("%lf",&F)  x2;
    152          printf("请输入年利率
    ");
    153          x1  scanf("%lf",&i)  x2;
    154          printf("请输入年限:
    ");
    155          x1  scanf("%d",&N)  x2;
    156          printf("请输入复利次数:
    ");
    157          x1  scanf("%d",&W)  x2;
    158          F1 = gusuan(i,W,N,F);
    159          break;
    160          
    161      case 4:
    162          printf("请输入本金
    ");
    163          x1  scanf("%lf",&P)  x2;
    164          printf("请输入年利率
    ");
    165         x1  scanf("%lf",&i)  x2;
    166           printf("请输入本利
    ");
    167          x1  scanf("%lf",&F)  x2;
    168          F1=shijian(P,i,F);
    169          break;
    170      case 5:
    171  
    172          printf("请输入本金:
    ");
    173           x1  scanf("%lf",&P)  x2;
    174           printf("请输入本利:
    ");
    175           x1  scanf("%lf",&F)  x2;
    176           printf("请输入年限
    ");
    177           x1  scanf("%d",&N)  x2;
    178          F1=nianxian(P,N,F);
    179          
    180 //    i=pow((F/P),(1.0/N))-1;
    181          break;
    182      case 6:
    183          F1=sum();
    184          break;
    185      case 7:
    186      F1=refund();
    187          break;
    188      case 0:break;
    189          default:
    190              printf("输入不合法!!
    ");
    191             continue ;
    192     }
    193      if(ch2==0)
    194          break;
    195      printf("结果为:%.2lf
    ",F1);
    196      }
    197  } 

  • 相关阅读:
    Android 常见工具类封装
    Android Logcat 封装类
    Android 四大组件之 " Activity "
    "浅谈Android"第一篇:Android系统简介
    罗列的书单
    关于多层架构一些思考
    LeetCode 330. Patching Array
    LeetCode 315. Count of Smaller Numbers After Self(线段树,树状数组)
    LeetCode 316. Remove Duplicate Letters(贪心)
    LeetCode 327. Count of Range Sum(线段树)
  • 原文地址:https://www.cnblogs.com/caicaihong/p/5297624.html
Copyright © 2011-2022 走看看