关于计算少一的有关问题

关于计算少一的问题
#include<stdio.h>
#include<math.h>
int main()
{
    int a[12],b[12],c[12],i,t,n,sum,M;                      //c[i]为月末剩余钱数
    sum=0;//存起来的钱数总额
    t=0;//超支的月份
    for(i=0;i<12;i++)
    {
    scanf("%d",&a[i]);                                            //输入每月的预算
    b[i]=300-a[i];                                                    //计算每月零花钱扣除预算的剩余
    if(b[i]<0)
    {
    if(i==0)                                                             //若第一个月超支
    {
    c[1]=-fabs(b[1]);
    t=-1;
    }
    else                                                                 //不是第一个月超支
    c[i]=c[i-1]-fabs(b[i]);
    if(c[i]<0&&t==0)
    {
    t=-(i+1);
    }
    }
    else
    {
    if(i==0)
    {
    c[i]=b[i];
    n=c[i]/100;                                                        //每月存款的数目
    sum=n+sum;
    c[i]=b[i]%100;
    }
    else
    if(c[i-1]+b[i]>=0)
    {
    n=(c[i-1]+b[i])/100;
    c[i]=(b[i]+c[i-1])%100;
    sum+=n;
    }
    else if(c[i-1]+b[i]<0&&t==0)
    {
    t=-(i+1);
    }
    }
    }
    M=sum*1.2*100+c[11];
    if(t==0)
    printf("%d",M);
    else
    printf("%d",t);
    return 0;
    }
当我按要求输入
290 
 230 
 280 
 200 
 300 
 170 
 330 
 50 
 90 
 80 
 200 
 60 
的时候,输出结果不是1580而是1579.求各位大牛解答小弟心中的疑惑


------解决思路----------------------
兄弟,你的代码没有问题,你可以在代码最后加入暂停,你在输入最后一个数后要回车,然后就可以看到结果是1580
------解决思路----------------------
修改一下不然好亂 我用VC6.0 ok

#include<stdio.h>
#include<math.h>
int main()
{
    int a[12],b[12],c[12],i,t,n,sum,M;            //c[i]為月末剩余錢數
    sum=0;//存起來的錢數總額
    t=0;//超支的月份

//每月的零用錢
int allowance = 0;
    printf("請輸入每個月的零用錢\n");
scanf("%d", &allowance);
for(i=0;i<12;i++)
    {
printf("請輸入每月的預算\n");
scanf("%d",&a[i]);                         //輸入每月的預算

b[i]=allowance-a[i];                    //計算每月零花錢扣除預算的剩余
if(b[i]<0)
{
if(i==0)                               //若第一個月超支
{
c[1]=-fabs(b[1]);
t=-1;
}
else                                   //不是第一個月超支
c[i]=c[i-1]-fabs(b[i]);
if(c[i]<0&&t==0)