未知错误QWQ

P2010 [NOIP2016 普及组] 回文日期

明依 @ 2019-03-12 14:19:48

#include<iostream>
using namespace std;
int main() {
    char begin[8],end[8];
    int i,first,last,a,b,ans=0;
    cin>>begin>>end;
    for(i=0; i<8; i++) cout<<begin[i];
    cout<<endl;
    for(i=0; i<8; i++) cout<<end[i];
    cout<<endl;
    first=(begin[0]-'0')*1000+(begin[1]-'0')*100+(begin[2]-'0')*10+begin[3]-'0';
    last=(end[0]-'0')*1000+(end[1]-'0')*100+(end[2]-'0')*10+end[3]-'0';
    cout<<first<<' '<<last<<endl;
    for(i=first; i<=last; i++) {
        a=(i%10)*10+(i/10)%10;
        b=((i/100)%10)*10+i/1000;
        if(i==first) {
            if(((begin[4]-'0')*10+begin[5]-'0')>a) continue;//月份不在范围内
            if(((begin[6]-'0')*10+begin[7]-'0')>b) continue;//日期不在范围内 
        }
        if(i==last){
            if(((end[4]-'0')*10+end[5]-'0')<a) continue;
            if(((end[6]-'0')*10+end[7]-'0')<b) continue;
        }
        if(a<1||a>12) continue;
        else {
            if(a==1||a==3||a==5||a==7||a==8||a==10||a==12) {
                if(b<1||b>31) continue;
                else ans++;
            } else if(a==4||a==6||a==9||a==11) {
                if(b<1||b>30) continue;
                else ans++;
            } else {
                if((!i%4&&i%100)||(!i%400)) {
                    if(b<1||b>29) continue;
                    else ans++;
                } else {
                    if(b<1||b>28) continue;
                    else ans++;
                }
            }
        }
    }
    cout<<ans;
    return 0;
}
//洛殿佑我AC此题!!

我自己的程序中多写了个cout<<begin;和cout<<end;用来检验输入

所以说我想知道我的第一个输入中的点是什么鬼...

请问有大佬遇到过这种情况吗?有的话请帮助一下


by Little_Ming @ 2019-03-12 14:35:32

长度为n的字符串需要n+1char,因为最后一个字符是'\0'(表示字符串结束)。


by 明依 @ 2019-03-12 14:39:40

@Little_Ming谢谢大佬...果然是我的数组开小了


by 稚名真白 @ 2019-03-12 14:45:02

为何这么秀Qwq


by ThinkofBlank @ 2019-03-12 14:49:49

tql


|