模拟法——张三的零花钱(C#)

题目:张三的零花钱

        不知道你有没有零花钱?你是如何管理⾃⼰的零花钱的?张三总爱乱花钱。每个⽉的⽉初妈妈给张三300元钱 ,张三会预算这个⽉的花销,并且能做到实际的花销和预算相同。为了让张三学会对⾦钱的管理,妈妈提出,张三可以随时把整百的前存在她那⾥,到了12⽉31⽇,他会加上20 % 还给张三,也就是说,张三给妈妈的每⼀个100元,到年底都会变成120元!因此张三制定了⼀个存储计划: 每个⽉的⽉初,在得到妈妈给的零花钱后,如果他预计到这个⽉的⽉末⼿中还会有多于100元或恰好100元, 他就会把整百的钱存在妈妈那⾥,剩余的钱存在⾃⼰⼿⾥。⽐如11⽉初张三⼿中还有83元,妈妈留了张三300元。张三预计11⽉的花销是180元,那么他就会在妈妈那⾥存200元,⾃⼰留下183元。到了11⽉⽉末,张三⼿中会剩下3元钱。
        张三发现这个存储计划的主要⻛险是,存在妈妈那⾥的钱在年末之前不能取出。有可能在某个⽉的⽉初,张三⼿中的钱加上这个⽉妈妈给的钱,不够这个⽉的预算。如果出现这种情况,张三将不得不在这个⽉省吃简⽤,压缩预算。

        现在请你根据2019年1⽉到12⽉每个⽉张三的预算,判断会不会出现这种情况。如果储蓄计划实施过程中会出现某个⽉钱不够⽤的情况,输出-x,x表⽰出现这种情况的第⼀个⽉;如果不会,计算到2019年12⽉31⽇,妈妈将张三平时存的钱加上20%还给张三后,张三⼿⾥会有多少钱。
        样例输⼊ 240 280 200 300 120 350 80 50 270 260  200 300样例输出 - 7
        样例输⼊ 290 230 280 200 300 170 130 50 90 80 200 300  样例输出 1520

// 创建字符串数组赋值并转为整数数组
string str = Console.ReadLine();
string[] strArray = str.Split(' ');
int[] budget = new int[strArray.Length];
for(int j = 0; j < budget.Length; j++)
{
    int num = Convert.ToInt32(strArray[j]);
    budget[j] = num;
}
// 定义变量
int selfMoney = 0;// 定义张三的钱
int momMoney = 0;// 定义在妈妈手中张三的钱
int temp = 0;// 定义容器便于后面使用
int i;

for ( i = 1; i < 13; i++)// 1~12月
{
    temp = 300 + selfMoney - budget[i - 1];// 除去预算 // budget[i - 1]是预算数组从0开始的
    momMoney += (temp / 100) * 100;// 上交妈妈的钱(每个月)
    selfMoney = temp % 100;// 剩余(每个月剩余的钱)
    if (temp < 0) // 某个月剩余的钱小于0时
    {
        break; // 停止,且不再执行这个循环
    }
}
if (temp < 0)
{
    Console.WriteLine("-" + i); // break后会执行这行代码
}else // 12个月中,每个月都会剩余钱将会执行这行代码
{
    selfMoney = selfMoney + (int)(momMoney * 1.2);// 计算1年下来存下来最终得到的钱
    Console.WriteLine(selfMoney);
}

你可能感兴趣的:(C#,c#)