我把你的程序进行了小改动,已经过了,程序如下
```cpp
#include<cstdio>
int main()
{
//FILE *fin,*fout;
//fin=fopen("data.in","rb");
//fout=fopen("data.out","wb");
int n=0;//津津当前钱数
int save=0;//津津存钱数
int e=0;
for(int i=1;i<=12;i++)
{
int m;//预算
scanf("%d",&m);
n+=300;//妈妈给津津钱
if(n<m)//如果当前钱数不够预算的话
{
e=-i;
break;
}
n-=m;//更新津津月末开销完毕还剩下的钱数
int temp=n/100;//该月存的钱(可为0)
save+=temp;//更新总存钱数
n-=temp*100;//更新津津存钱之后还剩下的钱数
}
if(e<0)//如果当前钱数不够预算的话
{
printf("%d",e);//扔沟
return 0;
}
n+=save*120;//(save*6/5);
printf("%d",n);
return 0;
//fclose(fin);
//fclose(fout);
}
```
by 厌胜 @ 2017-07-16 11:28:55
首先,你定义的saveout完全没有用到,我这里用e代替了它给你看看作用。
其次,因为你定义的save是整数型,所以之后的\*6/5操作结果应该会是浮点型,那就会出现误差。所以我这里将它变成了存在妈妈那里的钱的百位(比如,如果save是1,就表示在妈妈那里存了100元),然后再将它\*120,表示年末妈妈给津津的钱。
然后,程序能简单点就简单点,没必要在int temp=((n-m)/100)\*100;之后还n-=m;。可以直接先将剩余的钱算出来,再去计算有多少要存到妈妈那里去。
by 厌胜 @ 2017-07-16 11:36:28
@[厌胜](/space/show?uid=25357) 谢谢前辈的修改与指导!
by indev @ 2017-07-25 17:30:44