小明從2010開始開啓了小明的存錢計劃(C語言實現)

描述

小明的零花錢一直都是自己管理。每個月的月初媽媽給小明300元錢,小明會預算這個月的花銷,並且總能做到實際花銷和預算的相同。 

爲了讓小明學習如何儲蓄,媽媽提出,小明可以隨時把整百的錢存在她那裏,到了年末她會加上20%還給小明因此小明制定了一個儲蓄計劃:每個月的月初,在得到媽媽給的零花錢後,如果他預計到這個月的月末手中還會有多於100元或恰好100元,

就會把整百的錢存在媽媽那裏,剩餘的錢留在自己手中。 
例如11月初小明手中還有83元,媽媽給了小明300元。小明預計11月的花銷是180元,那麼他就會在媽媽那裏存200元,自己留下183元。到了11月月末,小明手中會剩下3元錢。

小明發現這個儲蓄計劃的主要風險是,存在媽媽那裏的錢在年末之前不能取出。有可能在某個月的月初,小明手中的錢加上這個月媽媽給的錢,不夠這個月的原定預算。如果出現這種情況,小明將不得不在這個月省吃儉用,壓縮預算。 

現在請你根據2010年1月到12月每個月小明的預算,判斷會不會出現這種情況。如果不會,計算到2010年年末,媽媽將小明平常存的錢加上20%還給小明之後,小明手中會有多少錢。

輸入

第一行輸入一個整數N,表示測試數據的組數(N <= 10)

每組測試數據輸入12行數據,每行包含一個小於350的非負整數,分別表示1月到12月小明的預算。
 

輸出

每組輸出包括一行,這一行只包含一個整數如果儲蓄計劃實施過程中出現某個月錢不夠用的情況,輸出-X,X表示出現這種情況的第一個月;否則輸出到2010年年末小明手中會有多少錢(如果是小數,請四捨五入到整數位)。
 

樣例輸入

1
290
230
280
200
300
170
340
50 
90 
80 
200
60

樣例輸出

-7

算法實現 

#include <stdio.h>

int main()
{
    int n,i,j;
    scanf("%d",&n);
    int month[n][12];
    
    for (i=0; i<n; i++) {
        int money=0,mom=0;
        for (j=0; j<12; j++) {
            scanf("%d",month[i]+j);
        }
        for (j=0; j<12; j++) {
            money+=300;
            money-=month[i][j];
            
            if (money<0) {
                month[i][0]=-(j+1);
                break;
            }
            if (money/100) {
                mom+=(money/100)*100;
                money%=100;
            }
        }
        if (month[i][0]>=0) {
            month[i][0]=mom*1.2+0.5+money;
        }
    }
    for (i=0; i<n; i++) {
        printf("%d\n",month[i][0]);
    }
    
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章