输入年、月、日,计算该天是本年的第几天

本文介绍了一个简单的C语言程序,用于计算输入的日期(年、月、日)是一年中的第几天。程序考虑了平年和闰年的情况,并通过循环结构实现了月份天数的累加。
题目描述输入年、月、日,计算该天是本年的第几天。输入描述:包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。输出描述:输入可能有多组测试数据,对于每一组测试数据,输出一个整数,代表Input中的年、月、日对应本年的第几天。示例1输入1990 9 202000 5 1输出263122
#include<stdio.h>
#include<string.h>
int Run[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int Ping[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};


int isRun(int year){
    if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
        return 1;
    }else{
        return 0;
    }
}


int cal(int year, int month, int day){
    int result = 0;
    if(isRun(year)){
        for(int i = 0; i < month-1; i++){
            result = result + Run[i];
        }
        result = result + day;
    }else{
        for(int i = 0; i < month-1; i++){
            result = result + Ping[i];
        }
        result = result + day;
    }
    return result;
}


int main(){
    int year, month, day;
    while(scanf("%d%d%d", &year, &month, &day)) {
        printf("%d\n", cal(year, month, day));
    }


    return 0;
}


计算某一本年第几天,可将当中本之前所有数相加,再加上本数。同时,需要考虑闰的情况,闰的二有 29 ,平的二有 28 。判断闰的规则是:能被 400 整除,或者能被 4 整除但不能被 100 整除。 以下是不同编程语言的实现方法: ### Java 实现 ```java public class Main { public static void f1() { // 20170728 整的总数+当前期 int year = 2017; int month = 7; int day = 28; int sum = 0; // 总数 for (int i = 1; i <= month; i++) { // 第i数 switch (i) { case 1: case 3: case 5: sum += 31; break; case 4: case 6: sum += 30; break; case 2: if (year % 400 == 0) { // 判断是否为闰 sum += 29; } else { sum += 28; } break; } } sum += day; System.out.println("当前期是本年的第" + sum + ""); } public static void main(String[] args) { f1(); } } ``` ### C 语言实现 ```c #include <stdio.h> // 定义一个判断闰的函数 int leap(int b); int main() { // 先定义一个数组对份的数进行初步定义 int mouth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int x, y, z, sum = 0; scanf("%d%d%d", &x, &y, &z); /* 判断输入数是否为闰, 如果是闰,对 mouth[1] 重新赋值 29, 否则赋值 28 */ if (leap(x)) mouth[1] = 29; else mouth[1] = 28; // 用循环来对数进行累加,对所输入份不累加 for (int i = 0; i < y - 1; i++) sum += mouth[i]; // 对于所求份用上边的 sum 加上输入数 sum += z; printf("您所输入期是本年的第%d", sum); return 0; } // 对判断是否为闰的函数说明 int leap(int b) { if ((b % 400 == 0) || ((b % 4 == 0) && (b % 100 != 0))) return (1); else return (0); } ``` ### Python 实现 ```python def is_leap_year(year): return (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)) def day_of_year(year, month, day): days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] if is_leap_year(year): days_in_month[1] = 29 total_days = sum(days_in_month[:month - 1]) + day return total_days year = 2017 month = 7 day = 28 print(f"当前期是本年的第{day_of_year(year, month, day)}") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值