津津的储蓄计划

每日一练社区 2022-06-17 14:33:35

津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 300 元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上 20% 还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于 100 元或恰好 100 元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如 11 月初津津手中还有 83 元,妈妈给了津津 300 元。津津预计 11 月的花销是 180 元,那么她就会在妈妈那里存 200 元,自己留下 183 元。到了 11 月月末,津津手中会剩下 3 元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

输入描述:

12 行数据,每行包含一个小于 350 的非负整数,分别表示 1 月到 12 月津津的预算。

输出描述:

一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出 -X , X 表示出现这种情况的第一个月;否则输出到 2004 年年末津津手中会有多少钱。

输入样例:

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

输出样例:

-7

返回练习题答题页面

...全文
2494 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

img

浊酒不解愁 2024-11-13
  • 打赏
  • 举报
回复

many = 0

初始钱

end_many = 0

年终钱

false_month = 0
many_of_month = [290,230,280,200,300,170,340,50,90,80,200,60]
for i in range(12):
many += 300
# 每个月的零用钱
# h = int(input(f"请输入{i}月的消费(<=350):"))
h = many_of_month[i]
many -= h
nums = many//100
# print(f"消费{h},还剩{many},存款{end_many}")
if nums >= 1:
# 存钱
end_many += 100nums
many -= 100
nums
print(f"存钱{100nums}")
elif many < 0:
print("归零")
many = 0
false_month += 1
# 失败的次数
else:
print("不存钱")
# 不存钱
if false_month:
# 失败了
print(f"-{false_month}")
else:
# 年金奖
print(end_many
1.2)

IT—小菜佬 2024-03-07
  • 打赏
  • 举报
回复

#include <iostream>

using namespace std;

int main() {
    int savings = 0; // 存储在妈妈那里的钱
    int currentMoney = 0; // 当前手中的钱
    for (int month = 1; month <= 12; month++) {
        int budget;
        cin >> budget; // 输入每个月的预算
        currentMoney += 300 - budget; // 加上这个月妈妈给的钱并减去花费
        if (currentMoney < 0) {
            // 如果当前月钱不够用,输出月份(负数形式)
            cout << -month;
            return 0; // 程序结束
        }
        // 计算可以存储的整百金额
        int deposit = (currentMoney / 100) * 100;
        savings += deposit; // 存入妈妈那里
        currentMoney -= deposit; // 扣除存储的钱
    }
    // 计算年末手中的钱(包括存款增值)
    cout << currentMoney + savings * 1.2;
    return 0;
}

CSDN-Ada助手 2024-03-07
  • 举报
回复
@IT—小菜佬 您好,根据您的代码,您已经很好地实现了津津的储蓄计划。程序会按照每个月的预算进行计算,并且在需要的时候存入整百的钱到妈妈那里。同时也考虑了出现钱不够用的情况,输出了对应月份的负数形式。最后计算了到年末津津手中的钱(包括存款增值)。非常棒的实现!
沐沐森的故事 2024-01-07
  • 打赏
  • 举报
回复

budget = [int(input()) for _ in range(12)]
savings = 0

for i in range(12):
    if savings + 300 < budget[i]:
        print(-(i + 1))
        break

    if (savings + 300 - budget[i]) >= 100:
        saved = (savings + 300 - budget[i]) // 100 * 100
        savings += (savings + 300 - budget[i]) - saved

if 'saved' not in locals():
    savings *= 1.2
    print(int(savings))

CSDN-Ada助手 2024-01-07
  • 举报
回复
@沐沐森的故事 这段代码是一个计算津津储蓄计划的程序。它首先读取输入的12个月的预算,然后根据预算计算津津的储蓄金额。 代码中使用了一个变量savings来记录津津的储蓄金额。首先判断如果津津的储蓄金额加上这个月的零花钱(300元)小于预算,那么输出-(i+1),表示第一个出现钱不够用的月份是第i+1个月。 接着判断如果津津的储蓄金额加上这个月的零花钱减去预算大于等于100元,那么将储蓄金额更新为储蓄金额加上这个月的零花钱减去预算后再减去整百的部分。这部分整百的钱存放在妈妈那里,剩余的钱留在津津手中。 最后,如果没有出现钱不够用的情况,储蓄金额乘以1.2,表示妈妈将津津平常存的钱加上20%还给津津之后,津津手中的总金额。 你可以尝试输入一组预算金额来运行这段代码,看看结果如何。如果有其他问题,欢迎继续提问!
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdint.h>

int main(void)
{
    uint32_t budget[12]={0};  //预算
    uint8_t i=0;
  //剩余零钱
    int  res=0;
    //储存零钱
    uint32_t save=0;
    printf("请输入各月预算:\n");
     for(i=0;i<12;i++)
      {
        scanf("%d",&budget[i]);
       }

    for(i=0;i<12;i++)
    {
        res+=300;
        printf("剩余:%d,花销:%d\n",res,budget[i]);
        res-=budget[i];
        if(res<0)
        {
            printf("save:%d\n",save);
            printf("当前超出月份:%d\n",i+1);
            return -(i+1);
        }
        else
        {
            save+=(res/100)*100;
            res%=100;
            printf("save:%d,res:%d\n",save,res);
        }
    }
    save*=1.2;
    printf("save:%d\n",save);

   return save;
}

CSDN-Ada助手 2023-12-26
  • 举报
回复
@有什么昵称不存在 您好,根据您的代码,看起来您已经实现了对津津储蓄计划的预算和存钱的处理。如果您有任何问题,欢迎随时向我咨询。
conti123 2023-09-26
  • 打赏
  • 举报
回复

题目链接
以下是本蒟蒻的代码。

#include<bits/stdc++.h>
using namespace std;
long long s,a[1001],o;
int main()
{
    for(int i=1;i<=12;i++)
        cin>>a[i];
    for(int i=1;i<=12;i++)
    {
        s+=300;
        if(a[i]>s)
        {
            cout<<"-"<<i;
            return 0;
        }
        o+=((int)((s-a[i])/100))*100;
        s=(s-a[i])%100;
    }
    cout<<o*1.2+s;
    return 0;
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@conti123 您的代码基本上正确,但是有一些小问题需要修改。首先,您在输出-号时应该是<<"-"<<i+1;而不是<<"-"<return 0;。其次,在计算o的时候,应该是o+=(s-a[i])/100*100;而不是o+=((int)((s-a[i])/100))*100;最后,在输出的时候,应该是cout<<o*1.2+s;而不是cout<<1.2+s;。您可以根据这些修改后再次运行您的代码。
FAFLAP 2023-09-26
  • 打赏
  • 举报
回复

#include <stdio.h>
#include
int main()
{
//定义剩余零钱
int rest = 300;
//定义存的钱
int bank = 0;
//定义每个月的预算
int pre[12] = { 0 };
for (int i = 0; i < 12; i++)//定义月份
{
scanf_s("%d", &pre[i]);
if (pre[i] > 350) { printf("joke?try again"); scanf_s("%d", &pre[i]); }
}
for (int i = 0; i < 12; i++)
{
//如果剩余零钱不够本月预算,输出月份并退出
//if (rest < pre[i]) { printf("over:-%d\n", i + 3); break; }

        rest = rest - pre[i];//290 230 280 200 300 170 340 50 90 80 200 60


        //剩余零钱大于等于100,将余钱取整百数存入bank,剩余的钱作为下个月的基础零钱,否则直接作为下个月的基础零钱
        if (rest >= 0)
        {
            bank += (rest / 100) * 100;
            rest = rest - (rest / 100) * 100;
            rest += 300;
        }
        else { printf("over:-%d\n", i + 1); return 0; }
}
printf(" %d ", bank);

}

CSDN-Ada助手 2023-12-26
  • 举报
回复
@FAFLAP 你好,根据你的代码逻辑,你已经成功地实现了根据每个月的预算计算剩余零钱和存入银行的功能。但我注意到你在注释中提到了一个问题,即如果剩余零钱不够本月预算就会输出月份并退出。我会建议你检查一下这部分的逻辑,确保程序可以正确处理这种情况。祝你顺利完成这个挑战!
jk_101 2023-09-23
  • 打赏
  • 举报
回复 1


```python
budgets = []
for _ in range(12):
    budgets.append(int(input()))

savings = 0
for month in range(12):
    if savings + 300 < budgets[month]:
        print(f"-{month + 1}")
        break
    else:
        savings += (savings + 300 - budgets[month]) // 100 * 100
        savings -= budgets[month]

if savings >= 0:
    savings = int(savings * 1.2)

print(savings)


```

CSDN-Ada助手 2023-12-26
  • 举报
回复
@jk_101 您的代码逻辑是正确的,首先输入了12个月的预算,然后根据津津的储蓄计划进行了计算。如果在某个月的预算超过了津津手中的钱加上这个月妈妈给的钱,就会输出该月的负数。最后计算了到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。您的代码已经实现了题目要求的功能。
ahu236 2023-09-21
  • 打赏
  • 举报
回复
int main()
{
    int money = 0, yu = 0, cun = 0, count = 0, s = 0, sum = 0;
    int mon[12] = { 0 };
    for (int i = 0; i < 12; i++)
    {
        printf("第%d个月的预算是:", i + 1);
        scanf("%d", &mon[i]);
        while (mon[i] >= 350)
        {
            printf("这个月的预算大于等于了350,请重新输入:");
            scanf("%d", &mon[i]);
        }
    }
    for (int i = 0; i < 12; i++)
    {
        s += 300;
        yu = s - mon[i];
        s -= mon[i];
        if (yu >= 0)
        {
            count = yu/100;
            cun = (count * 100);
            s -= cun;
            sum += cun;
        }
        else
        {
            printf("在第%d个月的时候预算不够", i+1);
            goto out;
        }
    }
    money = sum * 1.2+s;
    printf("在2004年结束他可以拿到%d元", money);
out: return 0;
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@ahu236 你的程序逻辑基本正确,但是在计算年末津津手中的钱时,有一处小错误。在计算money的时候,应该是money = sum * 1.2 + s,而不是money = sum * 1.2 + s。你可以修改一下这个地方,然后重新运行程序看看结果。
ahu236 2023-09-21
  • 打赏
  • 举报
回复
int main()
{
    int money = 0,yu = 0, cun = 0, count = 0, s = 0,sum = 0;
    int mon[12] = { 0 };

    for (int i = 0; i < 12; i++)
    {
        printf("第%d个月的预算是:", i + 1);
        scanf("%d", &mon[i]);

        while (mon[i] >= 350)
        {
            printf("这个月的预算大于等于了350,请重新输入:");
            scanf("%d", &mon[i]);
        }
    }

    for (int i = 0; i < 12; i++)
    {
        s += 300;
        yu = s - mon[i];
        s -=mon[i];

        if (yu >= 0)
        {
            count = yu/100;
            cun = (count * 100);
            s -= cun;
            sum += cun;
        }
        else
        {
            printf("在第%d个月的时候预算不够", i+1);
            goto out;
        }
    }

    money = sum * 1.2+s;
    printf("在2004年结束他可以拿到%d元", money);

out: 
    return 0;
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@ahu236 你的代码逻辑基本正确,但是在处理预算不够的情况时使用了goto语句,建议使用break或者其他方式来跳出循环。另外,对于输出的格式要求,如果出现预算不够的情况需要输出具体的月份,而不是直接跳到最后输出总金额。你可以根据这些建议对代码进行修改。
心所向872 2023-09-18
  • 打赏
  • 举报
回复 1
a = [0] * 13
e = [0] * 12
c = 300
d = 0
g = 0

for i in range(12):
    b = int(input())
    a[i] = b

for i in range(12):
    c = c - a[i]

    if c < 0:
        d = 1
        f = i + 1
        break
    elif c >= 0:
        c += 300

        if c - a[i + 1] >= 100:
            e[i] = ((c - a[i + 1]) // 100) * 100
            c = c - ((c - a[i + 1]) // 100) * 100

if d == 1:
    print(-f)
else:
    for i in range(11):
        g += e[i]
    print(int(e[11] + c + g + g * 0.2 - 300))
CSDN-Ada助手 2023-12-26
  • 举报
回复
@心所向872 您的代码逻辑看起来很清晰,首先判断每个月的预算是否足够,如果不够,则输出第一个预算不够的月份;如果足够,则按照储蓄计划计算到年末津津手中会有多少钱。希望这个程序能够成功运行并得到正确的结果。
newmemory_nosk 2023-09-18
  • 打赏
  • 举报
回复

#include
#include
using namespace std;
int main()
{
int save = 0;
int budget[12];
int count = 0;
for (int i = 0; i < 12; i++)
{
cout << "请输入你第" << i+1 << "个月的预算" << endl;
cin >> budget[i];
while (budget[i] > 350)
{
cout << "你预算超过了350元,请调整预算不超过350" << endl;
cin >> budget[i];
}
system("cls");
}
int month;
for (month = 1; month <= 12; month++)
{
int n = month - 1;
count += 300;
if (count >= budget[n])
{
count = count - budget[n];
int m = count / 100;
if (m >= 1)
{
save = m * 100 + save;
count = count - m * 100 ;
}
}
else
{
count = count - budget[n];
break;
}

}
if (count >= 0)
{
    count = save * 1.2 + count;
    cout << "预算正常" << endl;
    cout << "今年年末总共还有" << count << "元" << endl;
}
else
{
    cout << "预算超支" << endl;
    cout << "-" << month << endl;
}
return 0;

}

CSDN-Ada助手 2023-12-26
  • 举报
回复
@newmemory_nosk 你的代码逻辑看起来很清晰,主要是根据每个月的预算和津津的零花钱计算储蓄情况。不过在循环结束后,有一处逻辑错误,需要在循环结束后输出最终结果。另外,你可能需要考虑一下当津津手中的钱加上这个月妈妈给的钱不够这个月的原定预算时的情况。希望这些建议对你有所帮助。
  • 打赏
  • 举报
回复 1
    // 定义每个月还剩余多少
    let num = 0;
    // 定义每个月开销多少
    let overhead = 0;
    // 定义每个月存多少
    let save = 0;
    // 定义一年后存了多少钱
    let arrsave = 0;
    // 定义花销多少钱
    let arroverhead = 0;
    // 定义最后存够一年后手中有多少钱
    let sum = 0;

    // 循环12个月
    for (var i = 1; i <= 12; i++) {
        // 设立判断循环条件
        if(i<=12){
            // 每个月剩余的金额加上每个月的300
            num = num + 300;

            // console.log(`第${i}月还有${num}`);

            overhead = prompt(`请输入${i}月要开销多少钱:`) - 0;

            save = prompt(`请输入${i}月要存多少钱`) - 0;
            
            // 根据存入的金额来判断是否整百,如果不是则一直循环输入,直到输入结果为整百
            while(save%100 != 0){
                alert("存入的金额不是整百请重新存入");
                
                // 输入第一个月要存入的金额
                save = prompt(`请输入${i}月要存多少钱`) - 0;
            }
            // 每个月除去开销和存款的余额
            num = num - overhead - save;
            // 将每次存入的金额累加进存放的变量
            arrsave += save;

            arroverhead += overhead;

            // console.log(`第${i}个月共开销${arroverhead}`);

            // console.log(`第${i}个月共存入${arrsave}`);

            // console.log(`第${i}月共还剩${num}`);

            // 根据判断这个月的剩余来确定是否钱不够用
            if (num < 0) {
                // 如果不够用则输出这个月的月份
                console.log(`第${i}个月钱不够用`);

                break;
            }
            
            // 设立条件当为第12个月的时候查看手中存款加上剩余的总金额
            if (i == 12) {
                // console.log(arrsave);
                // 存款为原来的20%
                arrsave = arrsave * 1.2;
                // 手中剩余的金额加上涨幅的存款
                sum = num + arrsave;
                
                console.log(sum);
                
                break;
            }

        }
    }
CSDN-Ada助手 2023-12-26
  • 举报
回复
@她再无杜朗护盾 你的代码逻辑基本正确,对每个月的预算、开销和存款进行了处理,并且根据余额判断是否钱不够用。但是在输出结果时,需要注意题目要求的格式,如果出现钱不够用的情况,需要输出对应的月份。另外,对于最终结果的计算也需要按照题目要求进行处理。希望你可以根据题目要求进行调整和优化。
HuaCY0207 2023-07-23
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int deposit = 0;
    int count = 0;
    int budget[12];
    for (int i = 0; i < 12; i++)
    {
        scanf ("%d", &budget[i]);
    }
    int month;
    for (month = 1; month <= 12; month++)
    {   
        int n;
        n = month - 1;
        count = count + 300;
        if (count >= budget[n])
        {
            int difference = count - budget[n];
            int m = difference / 100;
            if (m >= 1)
            {
                count = count - m*100 - budget[n];
                deposit = deposit + m*100;
            }
        }
        else
        {
            count = count - 350;
            break;
        }
    }
    if (count >= 0)
    {
        count = deposit*1.2 + count;
        printf ("%d",count);
    }
    else
    {
        printf ("-%d",month);
    }
    return 0;
}
CSDN-Ada助手 2023-07-23
  • 举报
回复
@HuaCY0207 你的代码看起来基本上是正确的,但是有一些小问题需要注意。首先,你在循环中将月份从1开始计数,但是数组是从0开始索引的,所以需要将月份减1来匹配数组的索引。另外,在条件判断中,当count不足以支付预算时,你将count减去了350,但是根据题目描述,津津只会在月初存钱,所以应该减去300而不是350。最后,在最后计算总金额时,你应该将deposit乘以1.2而不是加上1.2。以下是修正后的代码: ```c #include <stdio.h> int main() { int deposit = 0; int count = 0; int budget[12]; for (int i = 0; i < 12; i++) { scanf ("%d", &budget[i]); } int month; for (month = 1; month <= 12; month++) { int n; n = month - 1; count = count + 300; if (count >= budget[n]) { int difference = count - budget[n]; int m = difference / 100; if (m >= 1) { count = count - m*100 - budget[n]; deposit = deposit + m*100; } } else { count = count - 300; break; } } if (count >= 0) { count = deposit*1.2 + count; printf ("%d",count); } else { printf ("-%d",month); } return 0; } ``` 你可以尝试运行一下看看结果是否正确。如果还有其他问题,请随时向我提问。
folklore__ 2023-07-15
  • 打赏
  • 举报
回复 1

import math
fixed=300
sumsave=0
left=0
choice=[]
for _ in range(12):
    choice.extend([int(input(""))]) #每月津津的预算
    if len(choice)==12:
        for i in range(12):
            ep=choice[i]
            left1=left+fixed-ep
            
            if left1>=100:
                left=left1%100
                save=math.floor(left1/100)#若存钱当月存的钱
                sumsave=sumsave+save#总存储的金额数除以了100
            elif left1<0:
                print(left1)
                break
            else:
                left=left1#不存钱当月剩余
            sum=sumsave*120#算上利息
            print(sum)
CSDN-Ada助手 2023-07-15
  • 举报
回复
@folklore__ 你的代码基本上是正确的,可以计算每个月津津的储蓄情况。不过在输出结果时,你需要修改一下代码。你应该在循环结束后输出最终的储蓄金额,而不是在每个月结束后输出。另外,你还需要添加一个条件来判断是否出现了钱不够用的情况。如果出现了这种情况,你应该在循环内部使用break语句来跳出循环,并输出出现这种情况的月份。下面是修改后的代码: ```python import math fixed = 300 sumsave = 0 left = 0 choice = [] for _ in range(12): choice.extend([int(input(""))]) #每月津津的预算 if len(choice) == 12: for i in range(12): ep = choice[i] left1 = left + fixed - ep if left1 >= 100: left = left1 % 100 save = math.floor(left1 / 100) #若存钱当月存的钱 sumsave = sumsave + save #总存储的金额数除以了100 elif left1 < 0: print(-i-1) break else: left = left1 #不存钱当月剩余 if i == 11: sum = sumsave * 120 #算上利息 print(sum) ``` 希望对你有帮助!如果还有其他问题,请随时向我提问。
___CBY___ 2023-07-15
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;


int main(){
    int m[13];
    int q=0;
    int n=0;

    for(int i=1;i<=12;i++)
        cin>>m[i];
    for(int i=1;i<=12;i++)
    {
        q+=300;
        if(q<m[i])
        {
            cout<<-i<<endl;
            return 0;
        }
        else
            q-=m[i];
        while(q>=100){
            q-=100,n++;
        }
    }
    cout<<n*120+q<<endl;
    return 0;
}
   
CSDN-Ada助手 2023-07-15
  • 举报
回复
@___CBY___ 助手: 你的代码看起来基本正确,但是在判断q是否小于0的地方有一个小错误。if(q<0)应该在if(q<100)之前,这样才能正确判断是否出现钱不够用的情况。另外,在输出结果时,应该是输出120+q的值,而不是输出120+q。你可以将代码修改如下: ``` #include <iostream> using namespace std; int main(){ int m[13]; int q=0; int n=0; for(int i=1;i<=12;i++) cin>>m[i]; for(int i=1;i<=12;i++) { q+=300; if(q<0) { cout<<-i<<endl; return 0; } else q-=m[i]; while(q>=100){ q-=100,n++; } } cout<<120+q<<endl; return 0; } ```
A_Canan 2023-05-08
  • 打赏
  • 举报
回复 1

# 定义每个月妈妈给津津的零花钱(单位:元)
money = 300

# 定义每个月津津的预算(单位:元)
budget = []
for i in range(12):
    budget.append(int(input()))

# 定义津津手中的钱(单位:元)
cash = 0

# 定义津津存在妈妈那里的钱(单位:元)
savings = 0

# 定义是否出现钱不够用的情况
flag = False

# 遍历每个月
for i in range(12):
    # 每个月初,津津得到妈妈给的零花钱
    cash += money
    # 如果津津手中的钱大于等于100元,她就会把整百的钱存在妈妈那里
    if cash >= 100:
        savings += (cash // 100) * 100
        cash -= (cash // 100) * 100
    # 如果津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算,就输出-X
    if cash + money < budget[i]:
        print(-i-1)
        flag = True
        break
    # 否则,津津按照预算花费这个月的钱
    else:
        cash -= budget[i]

# 如果没有出现钱不够用的情况,就输出到年末津津手中会有多少钱
if not flag:
    print(int(cash + savings * 1.2))
CSDN-Ada助手 2023-05-12
  • 举报
回复
@A_Canan 这是津津的储蓄计划,每个月津津的预算都会在这个程序中输入,如果津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算,程序会输出-X, X 表示出现这种情况的第一个月;否则程序会输出到 2004 年年末津津手中会有多少钱。

11,805

社区成员

发帖
与我相关
我的任务
社区描述
Study well and make progress every day
其他 企业社区
社区管理员
  • 每日一练社区
  • CSDN学习
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧