南阳理工oj-75 日期计算

日期计算

时间限制:3000 ms  |  内存限制:65535 KB 
难度:1
描述 
如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每行的输入数据都是一个按题目要求格式输入的日期。
输出
每组输入数据的输出占一行,输出判断出的天数n
样例输入
3
2000 4 5
2001 5 4
2010 10 24
样例输出
96
124
297

代码:

#include <stdio.h>
int count(int year,int month,int day){
    int sum=0,i,month1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    if((year%4==0&&year%100!=0)||year%400==0){
        month1[1]=29;
    }
    else
        month1[1]=28;
    for (i=0; i<month-1; i++) {
        sum+=month1[i];
    }
    for (i=1; i<=day; i++) {
        sum++;
    }
    return sum;
}
int main(){
    int year,month,day,N;
    scanf("%d",&N);
    while (N--) {
        scanf("%d %d %d",&year,&month,&day);
        printf("%d\n",count(year, month, day));
    }
    return 0;
}

思路:计算天数最重要是就是要区分闰年和平年中2月的区别,判断闰年的方法就是看他是否能被4整除但是不能被100整除,不过如果能被400整除他也是闰年,闰年里2月有29天。

在定义的计算天数的函数中一开始设定了一个数组,int month1[12]; 这个数组的目的就是为了明确每个月具体天数,一开始假设是平年,将平年每个月的天数赋值给他,然后看是判断是否是闰年是闰年的话2月改成29天如果不是的话就依旧是28天。

接下来就开始计算题是第几天,也可以说是总天数,显示将这个月之前每个月的天数都加给计算天数的sum;这个月不满,所以这个月的天数单独计算,设定了个for循环如果i小于等于day的话就让sum++;这样便将总天数算了出来最后在主函数中调用即可。

阅读更多
个人分类: 南阳理工算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭