定义一个日期结构体类型(包括年、月、日),编写程序,要求输入年月日,输出该日在本年中第几天。
输出格式:"是%d年第%d天"
【输入形式】
年月日
【输出形式】
本年第几天
【样例输入】
2006 3 12
【样例输出】
是2006年第71天
#include <stdio.h>
#include <stdlib.h>
int run(int year);
typedef struct {
int year;
int month;//月份应该是一个数组,怎么在结构体中一个个调用数组
int day;
}time;
int main()
{//确定结构体变量a
time a;
int sum;
//所以不是在结构体中设置数组,而是
int m[12]={31,28,31,30,31,30,31,30,31,30,31,30,31,30};
scanf("%d %d %d",&a.year,&a.month,&a.day);//指针的内容还不熟悉,scanf的格式一定要严格遵守
sum=a.day;//然后我调用结构体里面的天数
int i=0;
for(i=0;i<a.month-1;i++){
sum=sum+m[i];//就是把前面几个月的天数相加,而且要理解用结构体变量调用结构体里面的成员的用法
}//这里的作用是算出天数
if(run(a.year)&&a.month>2)//这里的作用是判断是不是闰年并且月份是不是大于二,如果是,那就天数加一,如果只要有一个条件不满足,好比不是闰年或者小于等于二月的话,天数就不变,因为如果是一月的话,根本不会进入循环,如果是二月的话直接用一月的天数加上二月的天数就好了
{
//天数就不用加一,现在还没理解过来为什么
printf("是%d年第%d天",a.year,sum+1);}
else
printf("是%d年第%d天",a.year,sum);
return 0;
}
int run(int year){
if((year%4==0&&year%100!=0)||year%400==0)
return 1;
else
return 0;
}