标题:c语言输入年月日求距离下一年的天数,程序有错但找不出来错在哪,该怎么改, ...
只看楼主
MangoQvQ
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-11-14
结帖率:66.67%
已结贴  问题点数:15 回复次数:3 
c语言输入年月日求距离下一年的天数,程序有错但找不出来错在哪,该怎么改,求大佬救救孩子吧
从键盘输入一个年、月、日,并输出距离下一个年份,即下一年的1月1日,还有几天;并判断今年是否为闰年。(要求自己编写sum_day函数用于求天数,编写leap函数判断今年是否为闰年并在主函数中调用这两个函数。)

#include<stdio.h>

int is_leap_year(int year)
{
if ( ((year%4)==0 && (year%100)!=0)
    || (year%400)==0
   )
{
    return 1;
}
else
{
    return 0;
}
}
int sum_day(int month,int ret)
{
    scanf("%d,%d", &month, &ret);

    switch(month){
        case 1:ret=365;break;
        case 2:ret=334;break;
        case 3:ret=306;break;
        case 4:ret=275;break;
        case 5:ret=245;break;
        case 6:ret=214;break;
        case 7:ret=184;break;
        case 8:ret=153;break;
        case 9:ret=122;break;
        case 10:ret=92;break;
        case 11:ret=61;break;
        case 12:ret=31;break;
        default:printf("请输入正确的月份\t");break;
    }
    return ret;
}
int main()
{
    int year,month,day;
    int ret=0;

    printf("请输入年、月、日");
    scanf("%d,%d,%d", &year, &month, &day);

    ret=sum_day(month,ret);
    is_leap_year(year);
    if(is_leap_year(year)==1)
        {
    printf("该年为闰年\n");
        }
    else
        {
    printf("该年为平年\n");
        }


    if(is_leap_year(year)==1 && month<=2)
    {
        ret++;
    }
    ret=ret-day;

    printf("距离下一年还有%d天\n",ret);
    return 0;
}
搜索更多相关主题的帖子: break case ret year int 
2021-11-21 16:58
MangoQvQ
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-11-14
得分:0 

    if(is_leap_year(year)==1 && month<=2)
    {
        ret++;
    }
    ret=ret-day;
大概就是这一块儿出问题了
2021-11-21 18:17
白白白小白
Rank: 2
等 级:论坛游民
帖 子:32
专家分:65
注 册:2021-11-8
得分:15 
int sum_day(int month,int ret)
{
  //  scanf("%d,%d", &month, &ret);  //把这行注释掉

int main()
{
    int year,month,day;
    int ret=0;

    printf("请输入年、月、日");
    scanf("%d,%d,%d", &year, &month, &day);   // 前面两个%d后面的,去掉

[此贴子已经被作者于2021-11-21 20:06编辑过]

2021-11-21 20:05
白白白小白
Rank: 2
等 级:论坛游民
帖 子:32
专家分:65
注 册:2021-11-8
得分:0 
另外前面有大神用数组写的看起来会更简单一些,可以参考一下

程序代码:
/*输入一个年、月、日,并输出距离下一个年份,即下一年的1月1日,还有几天;并判断今年是否为闰年。
(要求自己编写sum_day函数用于求天数,编写leap函数判断今年是否为闰年并在主函数中调用这两个函数。)*/
#include<stdio.h>

int isLeapYear;

void leap(int year)
{
    if ( ((year%4)==0 && (year%100)!=0)
        || ((year%400)==0 && (year%3200)!=0)
        || (year%172800)==0
        )
    {
        isLeapYear = 1;
    }
    else
    {
        isLeapYear = 0;
    }
}

int sum_day(int month, int day)
{
    int list[] = {0,366,335,307,276,246,215,185,154,123,93,62,32};
    if (month<1 || month>12)
    {
        return -1;
    }
    return list[month]-day+((isLeapYear&&month<3)?1:0);
}

void main()
{
    int year, month, day;
    printf("输入一个年、月、日,例如 2021 11 15\n");
    scanf("%d%d%d", &year, &month, &day);
    leap(year);

    printf("距离下一个年份还有 %d 天,今年%s闰年\n", sum_day(month, day), isLeapYear?"":"不是");
}
2021-11-21 20:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507598-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.202939 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved