1 题意,给出2000年1月1日后多少天,换算出年-月-日 星期几。
2 分析。
比较水的模拟题。编码能力有待提高,思维不够缜密,出了很多错,是很多。
注意题目要求输出的数,是有前导0的。
3
代码一
#include <iostream>
#include<stdio.h>
#include <string>
using namespace std;
int day;
int year;
int month;
int zhou;
int year_day[2]={365,366};
int run_year(int temp){
if( (temp%4==0&&temp%100!=0) || (temp%400==0) ){
return 1;
}
return 0;
}
int month_day[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31};
//int month_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//ping nian
char week_name[13][20]={"Saturday","Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
int main()
{
while(~scanf("%d",&day)&&day!=-1){ ///Note: day>0, (negleck day==0.)
zhou=day%7;
year=2000;
month=1;
day++;// buchang
for(int i=2000;day>year_day[run_year(i)];i++){
day-=year_day[run_year((i))];
year=i+1;
}
for(int j=1;day>month_day[run_year(year)][j];j++){
day-=month_day[run_year(year)][j];
month=j+1;//Note: 注意month初始化,否则如果for内语句不执行,那么month将是随机数!
}
//cout<<year<<"-"<<(month<10?"0":"")<<month<<"-"<<(day<10?"0":"")<<day<<" "<<week_name[zhou]<<endl;
printf("%d-%02d-%02d %s\n",year,month,day,week_name[zhou]);
}
return 0;
}
代码二:
#include <iostream>
#include<stdio.h>
#include <string>
using namespace std;
int day;
int year;
int month;
int zhou;
int kk[2]={365,366};
int run_year(int temp){
if( (temp%4==0&&temp%100!=0) || (temp%400==0) ){
return 1;
}
return 0;
}
int month_day[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31};
int month_[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//ping nian
char week_name[13][20]={"Saturday","Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
int main()
{
while(~scanf("%d",&day)&&day!=-1){
zhou=day%7;
year=2000;
month=1;
day++;// buchang
for(int i=2000;day>kk[run_year(i)];i++){
day-=kk[run_year(i)];
year=i+1;
}
for(int i=1;i<=12;i++){
if(run_year(year)){
if(i==2&&day>29){
day-=29;
}
else if(i!=2&&day>month_[i]){ /// 不要忽略i!=2. (否则,i==2,day==29,就会wa)
day-=month_[i];
}
else{
month=i;
break;
}
}
else{
if(day>month_[i]){
day-=month_[i];
}
else{
month=i;
break;
}
}
}
printf("%d-%02d-%02d %s\n",year,month,day,week_name[zhou]);
}
return 0;
}