#include <stdio.h>
int yd;//定义全局变量,yd表示某一年的总天数
int aa(int x) //该函数用来判断是否是闰年
{if(((x%4==0)&&(x%100!=0))||(x%400==0)) yd=366;}
int run2(int x,int d[3])//功能函数
{int i,n=d[2],a[12]={0,31,28,31,30,31,30,31,31,30,31,30};//n表示总天数a[1]-a[11]分别代表前11
个月的天数
if(yd==366) a[2]=29;//如果该年是闰年则2月设置为29天否则为28天。
for(i=0;i<=d[1]-1;i++)
n=n+a[i];
printf("该日是%d年的第%d天。\n",d[0],n);
return(n);
}
main()
{
int md,data[3];//md表示某个月的总天数data[0]-data[2]分别储存年、月、日
/*开始输入年份如果年份小于等于0则要求重新输入*/
printf("请输入年份\n");
scanf("%d",&data[0]);
while(data[0]<=0)
{printf("输入的年份应大于0请重新输入:\n");scanf("%d",&data[0]);}
aa(data[0]);
/*开始输入月份如果月份小于1或大于12则要求重新输入*/
printf("请输入月份\n");
scanf("%d",&data[1]);
while(data[1]<1||data[1]>12)
{printf("输入的月份应在1-12之间请重新输入:\n");scanf("%d",&data[1]);}
/*根据输入的月份判断该月的总天数*/
switch(data[1])
{case 1:md=31;break;
case 2:if(yd==366) md=29;else md=28;break;
case 3:md=31;break;
case 4:md=30;break;
case 5:md=31;break;
case 6:md=30;break;
case 7:md=31;break;
case 8:md=31;break;
case 9:md=30;break;
case 10:md=31;break;
case 11:md=30;break;
case 12:md=31;
}
/*开始输入日如果输入值大于该月的总天数或小于1则要求重新输入*/
printf("请输入日\n");
scanf("%d",&data[2]);
while(data[2]>md||data[2]<1)
{printf("输入值应小于等于该月的总天数或大于等于1请重新输入:\n");scanf("%d",&data[2]);}
printf("您输入的是%d年%d月%d日",data[0],data[1],data[2]); //data[0],data[1],data[2]分别代表
年、月、日
run2(data[0],data);//将输入的年份和数组首地址传给函数
}
二、输入某年的年份和天数计算出该天数是这一年的几月几日如输入2012和
60则2012年的第60天是2012年2月29日。
#include <stdio.h>
int yd;//定义全局变量,yd表示某一年的总天数
int aa(int x)//该函数用来判断是否是闰年
{if(((x%4==0)&&(x%100!=0))||(x%400==0)) yd=366;else yd=365;}//如果是闰年则全年有366天
int run(int x,int n) //功能函数
{int i,m,d,s=0,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/m表示月份d表示日i用来遍历
s用来计算月份的总和a[1]-a[12]分别代表前12个月的天数
printf("%d年的第%d天是",x,n);
if(yd==366) a[2]=29;//如果该年是闰年则2月设置为29天否则为28天。
for(i=0;i<12;i++)
{s=s+a[i];
if(n>s&&n<=s+a[i+1])
{m=i+1;d=n-s;}
}
printf("%d月%d日。\n",m,d);
}
main()
{
int num,year;//num表示天数year表示年份
/*开始输入年份如果年份小于等于0则要求重新输入*/
printf("请输入年份\n");
scanf("%d",&year);
while(year<=0)
{printf("输入的年份应大于0请重新输入:\n");scanf("%d",&year);}
aa(year);
/*开始输入天数如果天数小于等于0或大于该年的总天数则要求重新输入*/
printf("请输入天数\n");
scanf("%d",&num);
while(num>yd||num<=0)
{printf("输入值应小于一年的总天数请重新输入:\n");scanf("%d",&num);}
run(year,num);
}