问题:定一个结构体变量(包括 年 月 日),并用一个days的函数 计算出该日在这一年中是第几天,注意闰年的问题。
例如:intput 2009 12 25
output 359
代码
解法一
#include<stdio.h>
struct //y_m_d //定义结构体;
{
int year;
int month;
int day;
}date; //定义结构体变量名;
int main ()
{
int days(int year, int month, int day); //调用函数days;
//int days(int, int, int); //定义函数类型,可有可无;
int day_sum;
scanf("%d%d%d",&date.year,&date.month,&date.day); //结构体的输入方式;
day_sum=days(date.year,date.month,date.day); //结构体的初始分配空间;
printf("%d\n",day_sum);
}
int days(int year, int month, int day) //调用函数;
{
int day_sum,i;
int day_tap[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义月数数组;
day_sum=0;
for(i=1; i<date.month; i++)
{
day_sum+=day_tap[i];
}
day_sum+=date.day;
if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3) //判断闰年;
day_sum++; //计算完所有日期,最后判断闰年,是闰年加1;
return (day_sum);
}
解法二
#include<stdio.h>
struct y_m_d //定义结构体;
{
int year;
int month;
int day;
}date; //定义结构体变量名;
int main ()
{
int days(struct y_m_d date1); //调用函数days;
scanf("%d%d%d",&date.year,&date.month,&date.day); //结构体的输入方式;
printf("%d",days(date));
}
int days(struct y_m_d date1) //定义函数;
{
int sum;
switch(date1.month) //switch的使用;
{
case 1:sum=date1.day; break;
case 2:sum=date1.day+31; break;
case 3:sum=date1.day+59; break;
case 4:sum=date1.day+90; break;
case 5:sum=date1.day+120; break;
case 6:sum=date1.day+151; break;
case 7:sum=date1.day+181; break;
case 8:sum=date1.day+212; break;
case 9:sum=date1.day+243; break;
case 10:sum=date1.day+273; break;
case 11:sum=date1.day+304; break;
case 12:sum=date1.day+334; break;
}
if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3) //判断闰年;
sum++;
return (sum);
}