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

#include<stdio.h>
int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int judge(int a);
int main()
{
    int a,b,c,i,sum=0;
    while(scanf("%d/%d/%d",&a,&b,&c)==3)
    {
        sum=0;
        for(i=0;i<b-1;i++)
            {
                sum+=days[i];
                if(judge(a) &&i==1)
                  sum+=1;
        }
        sum+=c;
        printf("%d\n",sum);

    }
    return 0;

}

int judge(int a)
{
    if((a%4==0 && a%100) ||(a%100==0&&a%400==0))
        return 1;
    else
        return 0;

}
时间: 2024-10-01 03:40:06

给定一个日期,输出这个日期是该年的第几天的相关文章

一道有趣的算法题:仿照Excel的列编号,给定一个数字,输出该列编号字符串

       By Long Luo 最近遇到一个算法题: 仿照Excel的列编号,给出一个数字,输出该列编号字符串. 例如:A对应1,Z对应26,AA对应27,AZ对应52 ...... 这个题目是一个典型的26进制思路去处理,但是这个题目里面有很多陷阱,在1, 26, 52等特殊情况进行考虑,经过晚上接近1个小时的编写,完成的代码如下: C++代码如下: #include <iostream> #include <string.h> using namespace std; /

输入一个日期,输出该日期是星期几

假定输入日期合法正确. 先找一个参考日期,找星期天的日期为最好.我一时没想到就选了今天,星期一,也不错.然后求出输入日期与参考日期之间间隔的天数n,n为负时则表示输入日期在参考日期之前,n为正时则表示输入日期在参考日期之后.因为星期为循环星期1到星期天,又根据补码的原理,可知n = ((n % 7) +  8) % 7, 此时的n为几则是星期几.(PS:星期天用0来表示,因为我选的是参考日期是星期一所以是+8,如果选的是星期天则是+7). 1 //给定一个日期,求这个日期是星期几? 2 #inc

java 给定一个日期期间 返回形如Mar 2015 3/20-3/31的数据

最近一个项目中有个前台对于表头要求: 给定一个日期期间返回形如 Mar 2015 3/20-3/31Apr 2015 4/1-4/30 这样的月年数据,简单的写了下代码,暂时没想到更好的办法 例如传进来的参数是 "2015-03-20"-"2016-04-08" 这样的形式 分三段处理: 第一段:起始日期的起始日期的月底 第二段:开始和结束月之间的所有月数据 第三段:结束日期的月初到结束日期 1 public List<String> loadMonth

PHP date 格式化一个本地时间/日期

PHP date 格式化一个本地时间/日期 date (PHP 4, PHP 5) date — 格式化一个本地时间/日期 说明 string date ( string $format [, int $timestamp ] ) 返回将整数 timestamp 按照给定的格式字串而产生的字符串.如果没有给出时间戳则使用本地当前时间.换句话说,timestamp 是可选的,默认值为 time(). Tip 自 PHP 5.1.1 起有几个有用的常量可用作标准的日期/时间格式来指定 format 

输入年月日,输出该日期是当年的第几天

这首题比较简单,只要判断该年是不是闰年,然后按月加,加到当月再加上的输入的天数即可. 假定输入的日期合法. 1 //给定一个日期,求该日期是该年的多少天? 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 int main(int argc, char *argv[]) 6 { 7 int y, m, d, n = 0, i, res; 8 int months[13] = {0,31, 28, 31, 30, 31, 30, 31, 3

输入中文日期输出对应的数字格式的日期

案例:编写一个函数进行日期转换,将输入的中文日期转换为阿拉伯数字日期 比如:二零一二年十二月月二十一日要转换为2012-12-21.(处理"十" 的问题:1.*月十日:2.*月十三日:3.*月二十三日:4.*月三十日:) 四中情况对"十"的不同翻译.1→10:2→1:3→不翻译:4→0[年部分不 可能出现'十',都出现在了月与日部分.] 测试数据:二零一二年十二月二十一日(2012年12月21日).二零零九年七 月九日.二零一零年十月二十四日.二零一零年十月二十日

一个监视文件夹日期的脚本

::这个脚本用计划任务执行后,可以对WINDOWS Backup的文件夹进行监视,如果没有新的备份产生,则发送EMAIL到指定的地址. ::脚本允许一次事件,第二次事件后才发送告警. @echo off SETLOCAL SETLOCAL ENABLEDELAYEDEXPANSION SET destinationfolder=H:\WindowsImageBackup\MBM-SBS set emailServer=smtp.yourISP.com SET [email protected]

给定一个字符串,找到第一个只出现一次的字符的下标,找不到输出-1。

1. 给定一个字符串,找到第一个只出现一次的字符的下标,找不到输出-1. sample: 输入:"abcdefcba" 输出:3 解法:先遍历字符串,用一个map记录每个字符出现的次数,再次遍历字符串,找到第一个只出现一次的字符,复杂度为O(n). #include <iostream> #include <string> #include <cstring> #include <map> using namespace std; int

c语言:给定一个大写字母,用小写字母输出

给定一个大写字母,用小写字母输出 程序: #include<stdio.h> int main() { char   c1,c2; printf("请输入一个大写字母:"); scanf("%c", &c1); c2=c1+32; printf("c2=%c\nc2=%d\n", c2,c2); return 0; } 结果: 请输入一个大写字母:A c2=a c2=97 请按任意键继续. . .

给定一个字符串类型表示的小数,输出其二进制表示

题目 给定一个字符串类型(string)表示的小数,打印出它的二进制表示. 如果这个数无法精确地表示为二进制形式,输出”ERROR”. 解答 整数部分通过不断地对2取余然后除以2来得到其二进制表示, 或是不断地和1按位与然后除以2得到其二进制表示. 小数部分则通过不断地乘以2然后与1比较来得到其二进制表示. 小数部分转化为二进制,通过乘以2然后与1比较,大于等于1则该位为1,并且该值减去1: 否则该位为0.不断地通过这种操作最终能使该小数部分的值变为0的,即可精确表示. 否则将无法用有限的位数来