杭电oj 2005

Posted c-xiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杭电oj 2005相关的知识,希望对你有一定的参考价值。

Problem Description

给定一个日期,输出这个日期是该年的第几天。

Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
 
问题分析:
年月日一起输入,最先考虑使用字符串直接全部输入,然后考虑到年月日的字符个数均不确定,所以还是选择分开输入,但是年月日中间使用了/分隔符,所以使用scanf输入最合适。
题目主要是判断闰年,然后可以使用一个二维数组来分别保存两种情况下每个月的天数,使用循环累加即可
参考代码:
#include <iostream>
using namespace std;
int  lev(int n) 
{
    if(n % 4 == 0 && (n % 100 != 0 || n % 400 == 0))
    return 0;
    else return 1;
}
int main(int argc, char** argv) {
    int y,m,d;
    int month[2][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}
    };
    while(scanf("%d/%d/%d",&y,&m,&d) != EOF)
    {
        int s=0;
        int i;
        for(i=1;i<m;i++){
            s+=month[lev(y)][i];
        } 
        s+=d;
        cout<<s<<endl;
    }
    return 0;
}

 

 

以上是关于杭电oj 2005的主要内容,如果未能解决你的问题,请参考以下文章

杭电OJ1002大数据相加

杭电oj2037——今年暑假不AC(java实现)

杭电oj_2035——人见人爱A^B(java实现)

进制转换————杭电oj 2031题(c语言解决)

杭电oj 1106

杭电oj-1001