问题简述:算出a年b月c日是当年的多少天
利用数组来判断闰年与否:
#include<stdio.h>
struct date
{
int day;
int month;
int year;
} ;
int days[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int runn(year)
{
return (year%400==0||(year%100!=0&&year%4==0));
}
int main()
{
struct date datel,*dateo;
dateo=&datel;
int i,sum=0;
printf("请输入日期(年,月,日)\n");
scanf("%d,%d,%d",&dateo->year,&dateo->month,&dateo->day);
if(days[runn(dateo->year)][dateo->month]>dateo->month)
{
for(i=0;i<dateo->month;i++)
sum+=days[runn(dateo->year)][i];
}
sum+=dateo->day;
printf("\n%d月%d日是%d年的第%d天。",dateo->month,dateo->day,dateo->year,sum);
}
函数一开始就在主函数的前面原来不需要再主函数里面再声明的呀!
2利用switch函数来进行天数计算
#include <stdio.h>
int hanshu(m);
struct year
{
int y;
int m;
int d;
};
int main()
{ struct year today;
int hanshu();
int y,m,d,sum=0;
printf("请输入日期(年,月,日)\n");
scanf("%d,%d,%d",&today.y,&today.m,&today.d);
y=today.y;
m=today.m;
d=today.d;
sum=hanshu(m-1)+d;
if(m>2)
{
if((y%4==0&&y%100!=0)||y%400==0)
{
printf("\n%d月%d日是%d年的第%d天。",m,d,y,sum-1);
}
else
printf("\n%d月%d日是%d年的第%d天。",m,d,y,sum-2);
}
else printf("\n%d月%d日是%d年的第%d天。",m,d,y,sum);
}
int hanshu(m)
{int max,min;
max=31;
min=30;
switch(m)
{
case 0: return 0;break;
case 1: return max; break;
case 2:return max+min ;break;
case 3:return max*2+min;break;
case 4:return min*2+max*2;break;
case 5:return max*3+min*2 ;break;
case 6:return max*3+min*3 ;break;
case 7:return max*4+min*3 ;break;
case 8:return max*5+min*3 ;break;
case 9:return max*5+min*4 ;break;
case 10:return max*6+min*4 ;break;
case 11:return max*6+min*5 ;break;
default :break;
}
}
用函数:
#include<stdio.h>
struct dd//储存年月日
{
int year;
int month;
int day;
};
int dayss[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int runn(struct dd*p)//判断是不是闰年
{
return ((p->year)%4==0&&(p->year)%100!=0)||(p->year%400==0);
}
int days(struct dd*p)
{ int i,sum;
sum=0;
for(i=0;i<p->month;i++)
{
sum+=dayss[runn(p)][i];
}
return sum+(p->day);
}
int main()
{
struct dd inpus;
int runn();
int days();
printf("请输入日期(年,月,日)\n");
scanf("%d,%d,%d",&inpus.year,&inpus.month,&inpus.day);
printf("\n%d月%d日是%d年的第%d天。",inpus.month,inpus.day,inpus.year,days(&inpus));
}