第三天、计算某日是该年的第几天

       编写一个计算天数的程序,用户从键盘中输入年、月、日,在屏幕中输出此日期是该年的第几天。 C代码:

/*第三天、计算某日是该年的第几天*/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    /*参数依次为年、月、日、计算天数、for循环初始值*/
    /*注意:days赋初始值0,不赋值,变量的值不确定,会导致运行崩溃*/
    int year,month,day,days = 0,i = 0;
    int average_year[12] = {31,28,31,30,31,30,31,31,30,31,30,31};    //平年
    int leap_year[12] = {31,29,31,30,31,30,31,31,30,31,30,31};        //闰年
    printf("请输入要查询的日期,例如:1993年1月30日\n");
    scanf("%d年%d月%d日",&year,&month,&day);
    /*能被400整除,或者不能被100整除但能被4整出的年份为闰年*/
    if(year % 400 == 0 || year % 4 == 0 && year % 100 != 0)                        
    {
        /*数组的第一个元素的索引值为0,将month月的前几个月相加*/
        for(i;i <= month - 2;i++)
            days += leap_year[i];
        /*将month月的day天加上,为最终的天数*/
        days += day;
    }
    else        /*不满足,则为平年*/
    {
        /*同上*/
        for(i;i <= month - 2;i++)
            days += average_year[i];
        days += day;
    }
    printf("%d年%d月%d日是%d年的第%d天\n",year,month,day,year,days);
    system("pause");
}

结果显示:

python代码,C代码的升级版,可以进行输入判断:

def leap(a):
    if (a % 4 == 0) & (a % 100 != 0) | (a % 400 == 0):
        return 1
    else:
        return 0

def number(y,m,d):
    result = 0
    average_year = (31,28,31,30,31,30,31,31,30,31,30,31)    #平年的元组
    leap_year = (31,29,31,30,31,30,31,31,30,31,30,31)       #闰年的元组
    if (1 <= y <= 5000) & (1 <= m <= 12) & (1 <= d <=31) & leap(y) & (d <= leap_year[m-1]):
        for i in range(0,m-1):
            result += leap_year[i]
    elif (1 <= y <= 5000) & (1 <= m <= 12) & (1 <= d <=31) & (leap(y) == 0) & (d <= average_year[m-1]):
        for i in range(0,m-1):
            result += average_year[i]
    else:
        result = 0
        d = 0
    result += d
    return result

def tranform(contents):
    if ('年' in contents) & ('月'in contents) & ('日' in contents) & (' ' not in contents):
        str_len = len(contents)
        for i in range(1,str_len):
            if contents[i] == '年':
                year = int(contents[0:i])       #input()接收的是字符串
                year_num = i + 1
            if contents[i] == '月':
                month = int(contents[year_num:i]) #用int()强制转换成整型
                month_num = i + 1
            if contents[i] == '日':  
                day = int(contents[month_num:i])
        return (year,month,day)
    else:
        return 0

choose = 1    
while choose:            
    contents = input('请输入要查询的日期,查询范围公元1年-公元5000年,例如:1993年1月30日\n')
    t = tranform(contents)
    if t != 0:
        result = number(t[0],t[1],t[2])
        if result != 0:
            print('第%d天' %(result))
            while True:
                choose = input('输入‘是’继续查询,输入‘否’放弃查询\n')
                if ('是' in choose) | ('否' in choose) & (len(choose) == 1):
                    if '是' in choose:
                        choose = 1
                        break
                    else:
                        choose = 0
                        break
                else:
                    print('输入选择错误,请重新输入\n')
        else:
            print('输入日期错误,请重新输入\n')
    else:
        print('输入格式错误,请重新输入\n')

结果显示:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏练小习的专栏

可视化格式模型-BFC

在常规流中的框(boxes,元素形成的矩形区域),都属于一个格式化的上下文中,可能是块的,也可能是行内的,但不可能同时是行内的又是块的。块框参与块格式化上下文。...

1685
来自专栏Golang语言社区

【Go 语言社区】iframe去边框,无边框,使用大全

<iframe src=”you page’s url” width=”100″ height=”30″ frameborder=”no” border=”0″...

3377
来自专栏韩伟的专栏

框架设计原则和规范(二)

此文是《.NET:框架设计原则、规范》的读书笔记,本文内容较多,共分九章,将分4天进行推送,今天推送4-5章。 1. 什么是好的框架 2. 框架设计...

2865
来自专栏张善友的专栏

检查Python对象

编程环境中的对象很象现实世界中的对象。实际的对象有一定的形状、大小、重量和其它特征。实际的对象还能够对其环境进行响应、与其它对象交互或执行任务。计算机中的对象试...

18110
来自专栏Python小屋

面向对象程序设计中“超类”和“子类”概念的来历

众所周知,在面向对象程序设计中,子类从超类中继承数据成员和成员方法,然后在此基础上再根据实际需要进行扩展并增加属于子类的数据成员和成员方法。也就是说,子类的对象...

2594
来自专栏我的博客

自学DIV+CSS总结

1、CSS有四种控制方式:行内样式、内嵌式、链接式、导入式(优先级从高到低) 2、CSS选择器有:标记选择器(p、ul、a、li、img、span、input、...

2486
来自专栏JarvanMo的IT专栏

Dart In Action -Dar的基本数据类型(一)

本文基本上是将dart官网部分内容进行翻译,没兴趣的请出门左转至Dart的官网,有兴趣的同志请继续阅读本文。 Flutter教程在这里

672
来自专栏LinXunFeng的专栏

iOS - 揭露Block的内部实现原理

1205
来自专栏angularejs学习篇

angularjs学习第九天笔记(指令作用域【隔离作用域】研究)

541
来自专栏Coding迪斯尼

ReactJs开发自制Monkey语言编译器:实现内嵌函数调用以及增加数组类型

692

扫码关注云+社区