死在第6个测试点QAQ

回复帖子

@charlotteHolmes 2020-01-14 23:37 回复

第6个测试点WA,输入数据在本地运行是正确的,请大家指点呜呜呜呜

#include<stdio.h>
int bg; 
int main()
{   
    int bl=0;
    int flag=0;
    int handin=0;
    for(int i=1;i<=12;i++)
    {
        bl=bl+300;
        scanf("%d",&bg);
        bl=bl-bg;

        if(bl<0)
        {
            flag=i;
            bl=0;
        }
        else
        { 
            handin=handin+(bl/100)*100;
            bl=bl%100;      
        }   
    }   
    if(flag!=0)printf("-%d",flag); 
    else printf("%d\n",bl+handin*6/5);
    return 0;
}
@AC黑洞 2020-01-15 08:33 回复 举报

@charlotteHolmes

第一个月!!!

#include<stdio.h>
int bg; 
int main()
{   
    int bl=0;
    int flag=0;
    int handin=0;
    for(int i=1;i<=12;i++)
    {
        bl=bl+300;
        scanf("%d",&bg);
        bl=bl-bg;

        if(bl<0)
        {
            flag=i;
            bl=0;
            break;
        }
        else
        { 
            handin=handin+(bl/100)*100;
            bl=bl%100;      
        }   
    }   
    if(flag!=0)printf("-%d",flag); 
    else printf("%d\n",bl+handin*6/5);
    return 0;
}
@CorCor_corvus 2020-01-15 08:33 回复 举报
    if(bl<0)
    {
        flag=i;
        bl=0;
        break;
    }

你在这个if里少加一个break。

可能会导致flag的值被覆写,不符合输出“第一个月”

PS:我不小心用你的代码交了一下,可能会出问题,建议稍稍改一下再交,如果出问题了可以at我

@charlotteHolmes 2020-01-15 11:05 回复 举报

@CorCor_corvus 谢谢你!昨天夜里发帖后研究了一下别的同学的代码注意到了这个问题,已经改正并且AC辣(=・ω・=)其实一开始也注意到了“第一个月”,但是自己一直以为必须输入全部12个月的数据后再输出是正确的(挠头)虽然通过了这个问题还是没有想明白QwQ

@Joker_and_coder 2020-01-15 16:27 回复 举报

你好。我有个稍微不同的看法,如果细抠题目的话,按理说就是应该输入完12个月才去输出-X或者money。 所以,你可以加一个数组,用来存放-X,然后12个月份输出完之后,对flag进行判断,并输出数组内的第一个-X值。 这样的话,既能将12个数字输入完毕,又满足了输出第一个-X的要求(因为可能有两个月份都超出)

@charlotteHolmes 2020-01-17 21:03 回复 举报

@Joker_and_coder 已经按照您的想法修改完毕提交并AC辣(真是炒鸡激动233)! 代码如下(=・ω・=)

#include<stdio.h>
int bg; 
int main()
{   
    int bl=0;
    int flag[12]={0,0,0,0,0,0,0,0,0,0,0,0};
    int handin=0;
    for(int i=1;i<=12;i++)
    {
        bl=bl+300;
        scanf("%d",&bg);
        bl=bl-bg;

        if(bl<0)
        {
            flag[i-1]=i;
            bl=0;
        }
        else
        { 
            handin=handin+(bl/100)*100;
            bl=bl%100;      
        }   
    }
    int f;
    for(int j=0;j<12;j++)
    {
        if(flag[j]!=0)
        {
            f=flag[j];
            break; 
        }
        else f=0;
    }
    if(f)printf("-%d",f);
    else printf("%d\n",bl+handin*6/5);
    return 0;
}
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。