
感觉题目想表达的意思有点问题——什么叫“分别表示11月到12月津津的预算”?
这里应该是“分别表示1月到12月每个月的预算”。
可以分为3种情况讨论:
第一种是剩余的钱多余100元或恰好100元;
第二种是钱不够用;
第三种是有剩余的钱但是不够100元的。
然后再分别对每种情况进行逻辑分析即可。
#include <stdio.h>
int main()
{
int q=300; //每月固定的300块
int s=0,x=0,cnt=0,y=0; //s表示津津手上的钱,x表示每个月的预计开销,cnt表示在妈妈那里存的钱,y用于记录第一次不够开销的月
for(int i=1;i<=12;i++)
{
s+=q; //每个月月初手上的钱加300
scanf("%d",&x); //读入开销
if(s-x>=100) //表示这个月可以在妈妈那里存钱
{
int t=(s-x)/100; // t表示除去开销后可以存在妈妈那里的100的个数
cnt+=t*100; // cnt表示在妈妈那里存的钱
s=s-x-t*100; // s减去开销,减去在妈妈那里存的钱,等于最后月末剩的钱
}
else if(s-x<0) //表示这个月的钱不够开销
{
s=0; //月末省吃俭用s归零
if(y==0) //第一次不够开销
{
y=-i; //用 y记录第一次不够开销的月
}
}
else //这个月的钱够开销但没有钱存到妈妈那里
{
s-=x; //直接减去开销即可
}
}
if(y==0) //没有出现不够开销的月
{
printf("%d\n",(int)(s+cnt*1.2));
}
else //存在不够开销的月
{
printf("%d",y);
}
return 0;
}
预算问题的三种情况分析
409

被折叠的 条评论
为什么被折叠?



