|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
输入年月日,判断这一天是今年的第几天?
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- int year,mon,day,days=0,i;
- scanf("%4d%2d%2d",&year,&mon,&day);
- if(mon<1||mon>12)
- {cout<<"-1"<<endl;return 0;}
- if(day>31) {cout<<"-1"<<endl;return 0;}
- int a[12]={31,29,31,30,31,30,31,31,30,31,30,31};
- int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
- if(year%400==0||(year%4==0&&year%100!=0))
- {
- if(mon==2&&day>29) {cout<<"-1"<<endl;return 0;}
- else switch(mon)
- {
- case 1:
- case 3:
- case 5:
- case 7:
- case 9:if(day==31){cout<<"-1"<<endl;return 0;}
- }
- days=day;
- for(i=1;i<mon;i++)
- {
- days+=a[i-1];
- }
- }
- if(year%400!=0||(year%4!=0&&year%100==0))
- {
- if(mon==2&&day>28) {cout<<"-1"<<endl;return 0;}
- else switch(mon)
- {
- case 1:
- case 3:
- case 5:
- case 7:
- case 9:if(day==31){cout<<"-1"<<endl;return 0;}
- }
- days=day;
- for(i=1;i<mon;i++)
- {
- days+=a[i-1];
- }
- }
- cout<<days;
- return 0;
- }
复制代码
在非闰年的情况下,你在计算累计天数时错误地使用了闰年的月份天数数组a,应当使用非闰年的月份天数数组b。以下是修正后的代码:
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- int year,mon,day,days=0,i;
- scanf("%4d%2d%2d",&year,&mon,&day);
- if(mon<1||mon>12)
- {cout<<"-1"<<endl;return 0;}
- if(day>31) {cout<<"-1"<<endl;return 0;}
- int a[12]={31,29,31,30,31,30,31,31,30,31,30,31};
- int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
- if(year%400==0||(year%4==0&&year%100!=0))
- {
- if(mon==2&&day>29) {cout<<"-1"<<endl;return 0;}
- else switch(mon)
- {
- case 1:
- case 3:
- case 5:
- case 7:
- case 8: // 此处应为8
- case 10: // 此处应为10
- case 12: if(day>31){cout<<"-1"<<endl;return 0;} break; //应增加返回操作
- }
- days=day;
- for(i=1;i<mon;i++)
- {
- days+=a[i-1];
- }
- }
- if(year%400!=0||(year%4!=0&&year%100==0))
- {
- if(mon==2&&day>28) {cout<<"-1"<<endl;return 0;}
- else switch(mon)
- {
- case 1:
- case 3:
- case 5:
- case 7:
- case 8: // 此处应为8
- case 10: // 此处应为10
- case 12: if(day>31){cout<<"-1"<<endl;return 0;} break; //应增加返回操作
- }
- days=day;
- for(i=1;i<mon;i++)
- {
- days+=b[i-1]; // 此处应为b
- }
- }
- cout<<days;
- return 0;
- }
复制代码
这段代码修复了你的问题,现在正确地在给定日期是非闰年时使用了正确的月份天数数组,并且在日期超出月份天数限制时也可以正确返回错误信息。
有用请设置最佳答案
|
|