ccf 日期问题 求答案求答案

问题描述

ccf 日期问题 求答案求答案

问题描述
  给定一个年份y和一个整数d,问这一年的第d天是几月几日?
  注意闰年的2月有29天。满足下面条件之一的是闰年:
  1) 年份是4的整数倍,而且不是100的整数倍;
  2) 年份是400的整数倍。
输入格式
  输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
  输入的第二行包含一个整数d,d在1至365之间。
输出格式
  输出两行,每行一个整数,分别表示答案的月份和日期。
样例输入
2015
80
样例输出
3
21
样例输入
2000
40
样例输出
2
9

解决方案

求答案,谢了
求面试题答案!(非技术问题)

解决方案二:

 #pragma once
class CDate
{

public:
    CDate();
    CDate(unsigned year, unsigned month, unsigned day) :m_nYear(year), m_nMonth(month), m_nDay(day){}
    virtual ~CDate();

public:
    friend int DaysMinus(const CDate& smallDate, const CDate& bigDate);
private:
    unsigned int m_nYear;
    unsigned int m_nMonth;
    unsigned int m_nDay;

};

#include "stdafx.h"
#include "CDate.h"

CDate::CDate()
{
    m_nYear = 0;
    m_nMonth = 0;
    m_nDay = 0;
}

CDate::~CDate()
{
}

int DaysMinus(const CDate& smallDate, const CDate& bigDate)
{
    if (smallDate.m_nYear > bigDate.m_nYear)
        cout << "smallDate is bigger than bigDate !"<<endl;
    else if(smallDate.m_nYear==bigDate.m_nYear){
        if (smallDate.m_nMonth>bigDate.m_nMonth)
            cout << "smallDate is bigger than bigDate !"<<endl;
        else if (smallDate.m_nMonth==bigDate.m_nYear&&smallDate.m_nDay>bigDate.m_nDay)
            cout << "smallDate is bigger than bigDate !" << endl;
    }

    int days = 0;//相差的天数
    for (int i = smallDate.m_nYear + 1; i < bigDate.m_nYear; i++){
        days += 365;
        if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)//闰年的条件
            days++;
    }

    int iSmdays = 0,iBidays = 0;//第一年和最后一年的时间
    bool bSm_Run, bBi_Run;

    bSm_Run = ((smallDate.m_nYear % 4 == 0 && smallDate.m_nYear % 100 != 0) || smallDate.m_nYear % 400 == 0);//小年是闰年

    switch (smallDate.m_nMonth)
    {
    case 1:iSmdays = smallDate.m_nDay; break;
    case 2:iSmdays = 31 + smallDate.m_nDay; break;
    case 3:iSmdays = 31 + 28 + smallDate.m_nDay + bSm_Run; break;
    case 4:iSmdays = 31 * 2 + 28 + smallDate.m_nDay + bSm_Run; break;
    case 5:iSmdays = 31 * 2 + 28 + 30 + smallDate.m_nDay + bSm_Run; break;
    case 6:iSmdays = 31 * 3 + 28 + 30 + smallDate.m_nDay + bSm_Run; break;
    case 7:iSmdays = 31 * 3 + 28 + 30 * 2 + smallDate.m_nDay + bSm_Run; break;
    case 8:iSmdays = 31 * 4 + 28 + 30 * 2 + smallDate.m_nDay + bSm_Run; break;
    case 9:iSmdays = 31 * 5 + 28 + 30 * 2 + smallDate.m_nDay + bSm_Run; break;
    case 10:iSmdays = 31 * 5 + 28 + 30 * 3 + smallDate.m_nDay + bSm_Run; break;
    case 11:iSmdays = 31 * 6 + 28 + 30 * 3 + smallDate.m_nDay + bSm_Run; break;
    case 12:iSmdays = 31 * 6 + 28 + 30 * 4 + smallDate.m_nDay + bSm_Run; break;
    default:
        break;
    }

    //bSm_Run = ((smallDate.m_nYear % 4 == 0 && smallDate.m_nYear % 100 != 0) || smallDate.m_nYear % 400 == 0);//小年是闰年
    bBi_Run = ((bigDate.m_nYear % 4 == 0 && bigDate.m_nYear % 100 != 0) || bigDate.m_nYear % 400 == 0);
        switch (bigDate.m_nMonth){
        case 1:iBidays = bigDate.m_nDay; break;
        case 2:iBidays = 31 + bigDate.m_nDay; break;
        case 3:iBidays = 31 + 28 + bigDate.m_nDay + bBi_Run; break;
        case 4:iBidays = 31 * 2 + 28 + bigDate.m_nDay + bBi_Run; break;
        case 5:iBidays = 31 * 2 + 28 + 30 + bigDate.m_nDay + bBi_Run; break;
        case 6:iBidays = 31 * 3 + 28 + 30 + bigDate.m_nDay + bBi_Run; break;
        case 7:iBidays = 31 * 3 + 28 + 30 * 2 + bigDate.m_nDay + bBi_Run; break;
        case 8:iBidays = 31 * 4 + 28 + 30 * 2 + bigDate.m_nDay + bBi_Run; break;
        case 9:iBidays = 31 * 5 + 28 + 30 * 2 + bigDate.m_nDay + bBi_Run; break;
        case 10:iBidays = 31 * 5 + 28 + 30 * 3 + bigDate.m_nDay + bBi_Run; break;
        case 11:iBidays = 31 * 6 + 28 + 30 * 3 + bigDate.m_nDay + bBi_Run; break;
        case 12:iBidays = 31 * 6 + 28 + 30 * 4 + bigDate.m_nDay + bBi_Run; break;
        default:
            break;
        }
        if (smallDate.m_nYear == bigDate.m_nYear){
            days = iBidays - iSmdays;
        }
        else{
            days = days + 365 + bSm_Run - iSmdays;
            days = days + iBidays;
        }
        return days;
}

// DATE.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "CDate.h"

int _tmain(int argc, TCHAR* argv[])
{
    CDate SmallDate(2007,3,12);
    CDate bigDate(2013,6,16);
    cout << DaysMinus(SmallDate, bigDate) << endl;
    system ("pause");
    return 0;
}

这是原来的一个课堂作业,可能不能满足你的要求,大致就是这么个算法。 如果有用请点击下采纳。


解决方案三:

判闰,数数 就这些啊
给个比较简单的
算好闰年
先按每月31 天算
假设 d=100
先计算好每月第一天是一年第几天
100 / 31 =3.。。。 7,
4,5 两个月 就好
大于 5月 直接减去 5月份的第一天(+1)
不大于5 减去4月的
也可以二分查找

时间: 2024-09-16 21:54:23

ccf 日期问题 求答案求答案的相关文章

ccf 最佳文章 求答案 求答案

问题描述 ccf 最佳文章 求答案 求答案 问题描述 小明最近在研究一门新的语言,叫做Q语言.Q语言单词和文章都可以用且仅用只含有小写英文字母的字符串表示,任何由这些字母组成的字符串也都是一篇合法的Q语言文章. 在Q语言的所有单词中,小明选出了他认为最重要的n个.使用这些单词,小明可以评价一篇Q语言文章的"重要度". 文章"重要度"的定义为:在该文章中,所有重要的Q语言单词出现次数的总和.其中多次出现的单词,不论是否发生包含.重叠等情况,每次出现均计算在内. 例如,

源代码-ccf 模板生成问题 求答案求答案

问题描述 ccf 模板生成问题 求答案求答案 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的.例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerry 时,网页的源代码是 这样的例子在包含动态内容的网站中还有很多.为了简化生成网页的工作,成成觉得他需要引入一套模板生成系统. 模板是包含特殊标记的文本.成成用到的模板只包含一种特殊标记,格式为 {{ VAR }},其中 VAR 是一个变量.该标记在模板生成时会被

交通-ccf 高速公路问题 求答案求答案

问题描述 ccf 高速公路问题 求答案求答案 问题描述 某国有n个城市,为了使得城市间的交通更便利,该国国王打算在城市之间修一些高速公路,由于经费限制,国王打算第一阶段先在部分城市之间修一些单向的高速公路. 现在,大臣们帮国王拟了一个修高速公路的计划.看了计划后,国王发现,有些城市之间可以通过高速公路直接(不经过其他城市)或间接(经过一个或多个其他城市)到达,而有的却不能.如果城市A可以通过高速公路到达城市B,而且城市B也可以通过高速公路到达城市A,则这两个城市被称为便利城市对. 国王想知道,在

ai-ccf 数列分段求答案求答案求答案

问题描述 ccf 数列分段求答案求答案求答案 问题描述 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段? 输入格式 输入的第一行包含一个整数n,表示数列中整数的个数. 第二行包含n个整数a1, a2, -, an,表示给定的数列,相邻的整数之间用一个空格分隔. 输出格式 输出一个整数,表示给定的数列有多个段. 样例输入 8 8 8 8 0 12 12 8 0 样例输出 5 样例说明 8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个

编程c语言-&amp;amp;lt;The c programming language&amp;amp;gt;Exercise-23答案求解释。

问题描述 <The c programming language>Exercise-23答案求解释. 本人新手,下面是rick的答案,不明白的是 if( line[t] == ' " ') in_quote = 1; if( ! in_quote ) { } else {} 作者是怎样确保下面的if在双引号' " '内还是在双引号外的,求大神帮助.原代码在下面. #include #define MAXLINE 1000 /* max input line size / c

textbox-C# 索引超出了数组界限 论坛找过了 没有找到答案 求解决!

问题描述 C# 索引超出了数组界限 论坛找过了 没有找到答案 求解决! if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { int i = 0; string Path = folderBrowserDialog1.SelectedPath; string[] filepath = System.IO.Directory.GetFiles(Path); string[] filename = new string[1000];

求大师给答案,Java老师说不懂 大学数学老师说不会

问题描述 由用户输入一个整数(>=1),则形成一个顺时针螺旋递减等差数列矩阵,符合1,2,3-n*n输入数字2,则程序输出:1243输入数字3,则程序输出:123894765输入数字4,则程序输出:12341213145111615610987我们Java老师说问数学老师我们大学数学老师说不会求大师给答案 解决方案 解决方案二:该回复于2011-04-29 08:33:48被版主删除解决方案三:估计你们老师是闲你烦懒得理你没有不敬的意思,这个用最笨的方法是可以实现的解决方案四:该回复于2011-

sql-SQL语句求思路求解决,要晓得部门经理叫什么名字

问题描述 SQL语句求思路求解决,要晓得部门经理叫什么名字 这样说吧,要晓得部门名称 也要晓得部门经理叫什么名字 这个部门在1月份来了多少人, 走了多少人,有多少人派遣出去 这种sql语句如何实现? 求各位大神给点sql思路,小弟不才,想不出来~~~ 解决方案 该问题已自行解决.谢谢大家. 解决方案二: 表结构上怎样的 解决方案三: 题目是怎样的啊,只有问题,没有条件怎么写啊 解决方案四: 这个问题,我解决了...谢谢热忱的道友们! 解决方案五: 确实不好回答,没有表结构,不知道相关字段

ios后台运行-Voip后台实现过程中的问题,底层用sip的库,求支援求帮助求分析解决

问题描述 Voip后台实现过程中的问题,底层用sip的库,求支援求帮助求分析解决 公司目前在做一个voip网络电话的项目,底层的库是用的sip.我是负责写上层app的,底层的库都是封装在.a的静态库里面.我看不到底层的实现内容. 我以前有实现过在后台一直运行,但是这个项目怎么弄都弄不出来,有各种问题.由于公司的帐号是个人帐号,需要上架审核.我有以下问题,希望大家有会的能帮忙回答一下.谢谢大家.我现在是用xcode5,然后是用ios7的4s来写程序测试. 1.这个类似网络电话的app,如果需要上架