| 
 
| /** 小明从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));
 }
 | 
 |