天天看點

複利計算3.0

程式構造思路:

第一點:在求複利計算中達到終值所需年份是利用窮舉法計算1-100年間符合的時間,最終求出存款所需時間。

第二點:在求複利計算中利用複利公式的逆推,求出年利率的公式。

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void YEAR()
{
    int year,flat=0; 
    double P,F;
    double i;
    printf("請輸入本利和:"); 
    scanf("%lf",&F); 
    printf("請輸入複利次數(年):"); 
    scanf("%d",&year); 
    printf("請輸入本金:"); 
    scanf("%lf",&P); 
    i=pow(F/P, 1.0/year)-1;
    printf("年利率為:%lf",i);
}
void time()
{
    int n,flat=0; 
    double P,i,F; 
    printf("請輸入本利和:"); 
    scanf("%lf",&F); 
    printf("請輸入年回報率:"); 
    scanf("%lf",&i); 
    printf("請輸入本金:"); 
    scanf("%lf",&P); 
    for(n=1;n<100;n++)    //窮舉法求100年滿足的計息期數
    {
        if((P*(pow((1+i),n)))>=F)
        {
            printf("計息期數:%d\n\n",n);
            flat=1;
            break;
        }
    }
    if(flat==0)
        printf("在100年内沒有符合計息期數!\n\n");
    
}
void menu()
{                                 
    puts("\n\n");
    puts("\t\t|******************************************************|");
    puts("\t\t|                    利息計算系統                      |");
    puts("\t\t|******************************************************|");
    puts("\t\t|                    1: 複利計算                       |");
    puts("\t\t|                    2: 單利計算                       |");
    puts("\t\t|                    3: 逆推計算                       |");
    puts("\t\t|                    4: 期數計算                       |");
    puts("\t\t|                    5: 利率計算                       |");
    puts("\t\t|                    0: 退出程式                       |");
    puts("\t\t|******************************************************|");
    printf("請選擇<1~5>:");
}
void Fuli()
{
    int year;//year表示複利年限
    double p;//p表示本金
    double i;//i表示年利率
    double F;//表示複利後的終值
    int k;
    printf("請輸入複利次數(年):");
    scanf("%d",&year);
    printf("\n請輸入本金:");
    scanf("%lf",&p);
    printf("\n請輸入年利率:");
    scanf("%lf",&i);
    for(k=1;k<=year;k++){
        F=p*(1+i);
        p=F;
    }
    printf("\n複利後的終值為:");
    printf("%.2lf",F);
    
}
void Danli()
{
    int year;//year表示複利年限
    double p;//p表示本金
    double i;//i表示年利率
    double Fv;//表示複利後的終值
    printf("請輸入複利次數(年):");
    scanf("%d",&year);
    printf("\n請輸入本金:");
    scanf("%lf",&p);
    printf("\n請輸入年利率:");
    scanf("%lf",&i);
    printf("\n單利後的終值為:");
    Fv=p*(1+i*year);
    printf("%.2lf",Fv);
}
void Nitui()
{
    int Year;    
    double P,i;
    double S;
    double E,D=1;
    int l;
    printf("輸入期待金額為:");
    scanf("%lf",&S);
    printf("\n請輸入存儲年限:");
    scanf("%d",&Year);        
    printf("\n請輸入年利率:");
    scanf("%lf",&i);
    
    for(l=1;l<=Year;l++)
    {
        E=D*(1+i);
        D=E;
    }
    P=S/D;
    printf("\n應輸入的本金為:");
    printf("%.2lf",P);
}

main(){
    int n;
    while(1)
    {
        menu();
        scanf("%d",&n);
        if(n==0) break;
        switch(n)
        {  
        case 1:
            Fuli(); break;
        case 2:
            Danli();break;
        case 3:
            Nitui();break;
        case 4:
            time();break;
        case 5:
            YEAR(); break;
        case 0:
            n=0;exit(0);
            
        }
    }    
    
}      
複利計算3.0
複利計算3.0
上一篇: Scrum 項目1.0
下一篇: 1223遞歸