/*
小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)
*/
#include<stdio.h>
int f(int,int,int);//声明一个函数,参数是三个int型,返回值也是int。用于计算输入日期到指定日期总共天数。
int year=2006;//定义一个全局变量。(可定义为常量)
int main()
{
int n=1;//代表年
int month=1;//代表月
int day=1;//代表日
int sum=0;//接收f函数的返回值
A: printf("input n:\n");
scanf("%d",&n);//键盘输入年份
if(n<year)//判断年份是否合法
{
printf("输入错误,请重新");
goto A;//不合法则返回去重新输入
}
B: printf("input month:\n");
scanf("%d",&month);
if(month<1||month>12)
{
printf("输入错误,请重新");
goto B;
}
C: printf("input day:\n");
scanf("%d",&day);
if(month<1||month>31)
{
printf("输入错误,请重新");
goto C;
}
sum=f(n,month,day);
if(sum%3==0){printf("结识美女\n");}
if(sum%2==0){printf("结识帅哥\n");}
printf("%d\n",sum);
return 0;
}
int f(int a,int b,int c)//
{
int i=a-year;//计算年差
int j=0;
int days=0;//计算总共天数
for(j;j<i;j++)//超过一年则计算整年天数
{
year+=j;
if(year%400==0)//判断是否闰年
{
days+=366;
}else
{
days+=365;
}
}
switch (b)//不足一年的计算前每整月的天数再加日期数
{
case 1:
days+=c;
break;
case 2:
days=31+c;
break;
case 3:
{
days=31+c;
if(a%400==0){days+=29;}
else{days+=28;}
break;
}
case 4:
days=31+c+31;
if(a%400==0){days+=29;}
else{days+=28;}
break;
case 5:
days=31+c+31+30;
if(a%400==0){days+=29;}
else{days+=28;}
break;
case 6:
days=31+c+31+30+31;
if(a%400==0){days+=29;}
else{days+=28;}
break;
case 7:
days=31+c+31+30+31+30;
if(a%400==0){days+=29;}
else{days+=28;}
break;
case 8:
days=31+c+31+30+31+30+31;
if(a%400==0){days+=29;}
else{days+=28;}
break;
case 9:
days=31+c+31+30+31+30+31+31;
if(a%400==0){days+=29;}
else{days+=28;}
break;
case 10:
days=31+c+31+30+31+30+31+31+30;
if(a%400==0){days+=29;}
else{days+=28;}
break;
case 11:
days=31+c+31+30+31+30+31+31+30+31;
if(a%400==0){days+=29;}
else{days+=28;}
break;
case 12:
days=31+c+31+30+31+30+31+31+30+31+30;
if(a%400==0){days+=29;}
else{days+=28;}
break;
}
return days;
} |
|