/**
小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)(C语言)
*/
#include<stdio.h>
//计算公元2006年到输入年份有多少个闰年,返回闰年个数
int getLeapyear(int year)
{
int leap,leap1;
leap = year/4 - 3*year/400;
leap1= 2006/4 - 3*2006/400;
return (leap-leap1);
}
//获取2006年1月1日到输入月份的天数
int getDayNum(int year,int month,int day)
{
int months[]={31,28,31,30,31,30,31,31,30,31,30,31};
int leapMonths[]={31,29,31,30,31,30,31,31,30,31,30,31};
int days = 0;
int num; //存储过去整年内的天数
int years;
int leap = getLeapyear(year); //获取经过几个闰年
years = year - 2006; //经过几年
if(year%4 == 0 && year%100 != 0 || year%400 == 0)
{
num = 365 * years + leap -1;//过去整年的天数
for(int i = 0;i < month - 1;i++)
{
days += leapMonths[i];//累加过去正月的天数
}
days = num + days + day;//总天数
}
else
{
num = 365 * year + leap;//过去整年的天数
for(int i = 0;i < month - 1;i++)
{
days += months[i];//累加过去正月的天数
}
days = num + days + day;//总天数
}
return days;
}
void getFriendNum(int days)
{
int grilFriend = days / 3; //女性朋友个数
int boyFriend = days /2; //男性朋友个数
printf("female friends Number is %d\n");
printf("male friends Number is %d\n");
}
int main()
{
int year,month,day;
//输入年份
printf("enter year,the year >= 2006: ");
scanf("%d",&year);
while(year < 2006)
{
printf("输入错误,年份不应小于2006,请重新输入\n");
scanf("%d",&year);
}
//输入月份
printf("enter montth,the month > 0 and month <= 12: ");
scanf("%d",&month);
while(month <= 0 ||month > 12)
{
printf("输入错误,月份不应大于0小于13,请重新输入\n");
scanf("%d",&month);
}
//输入日期并判断
if(month == 2 && year%4 == 0 && year%100 != 0 || year%400 == 0)
{
printf("本月为闰年2月份,请输入天数,天数应 <= 29: ");
scanf("%d",&day);
while(day>29)
{
printf("输入错误,天数应<=29,请清新输入\n");
scanf("%d",&day);
}
}
else if(month == 2)
{
printf("本月为平年2月份,请输入天数,天数应 <= 28: ");
scanf("%d",&day);
while(day>28)
{
printf("输入错误,天数应<=28,请清新输入\n");
scanf("%d",&day);
}
}
else if(month == 4 || month == 6 || month == 9 || month == 11)
{
printf("%d月份应 <= 30,请输入天数: ",month);
scanf("%d",&day);
while(day>30)
{
printf("输入错误,天数应<=30,请清新输入\n");
scanf("%d",&day);
}
}else
{
printf("%d月份应 <= 31,请输入天数: ",month);
scanf("%d",&day);
while(day>31)
{
printf("输入错误,天数应<=31,请清新输入\n");
scanf("%d",&day);
}
}
getFriendNum(getDayNum(year,month,day));
} |
|