7-19 计算天数(15 分)

本文介绍了一个使用C语言编写的程序,该程序旨在将特定年月日的日期转换为当年的第几天。作者通过累加各月天数并考虑是否为闰年来计算总天数。然而,在编译器反馈中,该程序存在一些逻辑错误导致部分测试用例无法完全正确处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目代码

编译器反馈部分结果错误(15分得14分),没想通哪里错了。查了一下将各月天数存入数组然后计数循环比较方便。

#include <stdio.h>
int main(){
    int year=-1, month=-1, day=-1;
    int days=-1;
    scanf("%4d/%2d/%2d", &year, &month, &day);
    if(month==1)
        days = day;
    else if(month==2)
        days = 31+day;
    else if(month==3)
        days = 31+28+day;
    else if(month==4)
        days = 31+28+31+day;
    else if(month==5)
        days = 31+28+31+30+day;
    else if(month==6)
        days = 31+28+31+30+31+day;
    else if(month==7)
        days = 31+28+31+30+31+30+day;
    else if(month==8)
        days = 31+28+31+30+31+30+31+day;
    else if(month==9)
        days = 31+28+31+30+31+30+31+31+day;
    else if(month==10)
        days = 31+28+31+30+31+30+31+31+30+day;
    else if(month==11)
        days = 31+28+31+30+31+30+31+31+30+31+day;
    else if(month==12)
        days = 31+28+31+30+31+30+31+31+30+31+30+day;
    if(year%400==0|| ((year%4==0)&&(year%100!=0)) )
        days++;
    /* 再次思考此题“部分正确”的结果,发现此处有逻辑错误,月份大于2时才涉及闰月的days++操作*/
    printf("%d\n", days);
    // printf("%d\n", 03==3);

    return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值