用结构体计算第几天

定义一个日期结构体类型(包括年、月、日),编写程序,要求输入年月日,输出该日在本年中第几天。

输出格式:"是%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;

  }


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值