小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥
(注意润年问题)(C语言)
算法的主要部分
//输入天数,输出是否结识美女或帅哥
Pro(GetDays(y,m,d));
}
void Pro(int days)
{
if(days%2==0)
{
printf("结识帅哥\n");
}
if(days%3==0)
{
printf("结识美女\n");
}
if(days%2!=0&&days%3!=0)
{
printf("没结识\n");
}
else if(days%2==0&&days%3==0)
{
printf("结识美女+帅哥\n");
}
}
//获取2006年1月1日至当前日期的所有天数
int GetDays(int year,int month,int day)
{
int i;
int sum_daysofyear=0;
int sum_daysofmonth=0;
int allday=0;
for(i=2006;i<year;i++)
{
sum_daysofyear+=Getdaysofyear(i);
}
sum_daysofmonth=Getdaysofmonth(year,month);
allday=sum_daysofyear+sum_daysofmonth+day;
return allday;
}
//判断闰年 返回该年包含的天数
int Getdaysofyear(int year)
{
if(year%4==0&&year%100!=0)
{
return 366;
}
else if(year%400==0)
{
return 366;
}
else
{
return 365;
}
}
//获取当前月 总天数
int Getdaysofmonth(int year,int month)
{
int i;
int sum_daysofmonth=0;
//每月的天数
int yearMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31} ;
//每月天数 闰年
int leapyearMonths[12]={31,29,31,30,31,30,31,31,30,31,30,31};
//如果是闰年 计算当前月的总天数
if(year%4==0&&year%100!=0)
{
for(i=1;i<month;i++)
{
sum_daysofmonth+=leapyearMonths[i-1];
}
return sum_daysofmonth;
}
else if(year%400==0)
{
for(i=1;i<month;i++)
{
sum_daysofmonth+=leapyearMonths[i-1];
}
return sum_daysofmonth;
}
//如果不是闰年
else
{
for(i=1;i<month;i++)
{
sum_daysofmonth+=leapyearMonths[i-1];
}
return sum_daysofmonth;
}
}