VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2007|回复: 3

[原创] 输入年月日,计算为该年第几天

[复制链接]
33_avatar_middle
在线会员 发表于 2011-4-4 08:38:17 | 显示全部楼层 |阅读模式
源码信息
源代码类型: -
源代码作者: -
编译器版本: -
代码注释: -
数据库种类:
预览图片: -
源代码简介: -
本帖最后由 a118116a 于 2011-4-4 08:39 编辑

/*输入年月日,输出是该年的第几天*/
#include<stdio.h>
#include<stdlib.h>
void main()
{
        int y,m,d,n;
        printf("please input y,m,d:\n");
        scanf("%d%d%d",&y,&m,&d);
        if(y<0||m>12||m<=0||d>31||d<=0)
        {printf("The date is wrong!\n");
        exit(0);}
        if(y%4==0&&y%100!=0||y%400==0)
        {switch(m){
                case 1:n=d;break;
                case 2:{if(d>29){printf("The date is wrong!\n");exit(0);}n=31+d;break;}
                case 3:n=31+29+d;break;
        case 4:{if(d>30){printf("The date is wrong!\n");exit(0);}n=2*31+29+d;break;}
        case 5:n=2*31+29+30+d;break;
        case 6:{if(d>30){printf("The date is wrong!\n");exit(0);}n=3*31+29+30+d;break;}
            case 7:n=3*31+29+2*30+d;break;
                case 8:n=4*31+29+2*30+d;break;
                case 9:{if(d>30){printf("The date is wrong!\n");exit(0);}n=4*31+29+3*30+d;break;}
        case 10:n=5*31+29+3*30+d;break;
                case 11:{if(d>30){printf("The date is wrong!\n");exit(0);}n=6*31+29+3*30+d;break;}
                case 12:n=4*31+29+4*30+d;break;
                       
                }
        }
   else
   {switch(m){
                case 1:n=d;break;
                case 2:{if(d>28){printf("The date is wrong!\n");exit(0);}n=31+d;break;}
                case 3:n=31+28+d;break;
        case 4:{if(d>30){printf("The date is wrong!\n");exit(0);}n=2*31+28+d;break;}
        case 5:n=2*31+28+30+d;break;
        case 6:{if(d>30){printf("The date is wrong!\n");exit(0);}n=3*31+28+30+d;break;}
            case 7:n=3*31+28+2*30+d;break;
                case 8:n=4*31+28+2*30+d;break;
                case 9:{if(d>30){printf("The date is wrong!\n");exit(0);}n=4*31+28+3*30+d;break;}
        case 10:n=5*31+28+3*30+d;break;
                case 11:{if(d>30){printf("The date is wrong!\n");exit(0);}n=6*31+28+3*30+d;break;}
                case 12:n=4*31+28+4*30+d;break;
                       
       
                        }
   }
       
                printf("%d\n",n);
   

}
http://ttjb2011.blog.163.com/
更多 更多




上一篇:一种字符串转化为16进制显示的算法
下一篇:十进制、十六进制、二进制互相转换的VC++程序
35_avatar_middle
online_vip 发表于 2011-4-4 10:36:12 | 显示全部楼层
实现的好麻烦。。。
62_avatar_middle
在线会员 发表于 2011-4-4 13:01:41 | 显示全部楼层
代码一点也不规范啊,看起来好乱。
21_avatar_middle
在线会员 发表于 2011-4-10 20:42:08 | 显示全部楼层
以前也写过类似的代码,但是是算两个日期之间的天数额
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-6-18 11:45

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表