突发兴致,承接上一条输入月份,看当月的天数的突发感想,稍加改编题目:输入一个日期,计算该日期距离该年1月1日相隔的天数

0M01M1 2021-11-23 23:46:52

突发兴致,承上一条输入月份,看当月的天数的突发感想,稍加改编题目:输入一个日期,计算该日期距离该年1月1日相隔的天数

// 输入一个日期,计算该日期距离该年1月1日相隔的天数
#include<stdio.h>
int main()
{
    int year,month,day;
    int month_days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int tmp=0;//日期数据中日的标志位
    int daycounts=0;//相隔天数的计算
    printf("请输入年月日:"); 
    scanf("%d %d %d", &year,&month,&day);    
    do{
        if (month<1||month>12)
        {
            printf("输入的月份为:%d,输入错误,请重新输入月份(1-12):",month);
            scanf("%d", &month); 
        }
    }while (month<1||month>12);//当输入的月份不是1-12月的话,就一直报错重新输入
    do
    {
        if ((month==2)&&(year%4==0&&year%100!=0||year%400==0))
            {     
                if ((day<(month_days[month-1]+1)))
                {
                    tmp=1;
                    printf("输入的月份为:%d,输入的日为:%d,输入正确!!",month,day);
                }  
            }
            else if ((day<month_days[month-1]))
            {
                tmp=1;
                printf("输入的月份为:%d,输入的日为:%d,输入正确!!",month,day);
            }
            else
            {
                printf("输入的月份为:%d,输入的日为:%d,输入错误,请重新输入日期:",month,day);
                scanf("%d",&day); 
            }
    } while (tmp==0);//输入的日期不符合要求,继续输入日
    printf("输入的时间为%d年%d月%d日,输入正确!\n",year,month,day);
    for (int i = 0; i < month-1; i++)
    {
        daycounts=daycounts+month_days[i];
        printf("daycounts=%d\n",daycounts);
    }
    if ((year%4==0&&year%100!=0||year%400==0)&&(month>2))
    {
             daycounts=daycounts+day+1;    
    }
    else 
        daycounts=daycounts+day;
    printf("%d年%d月%d日距%d年1月1日相隔%d天",year,month,day,year,daycounts);

  return 0;
 }

心得:1、大多的精力放在输入数据的正确性上面,输入日期的正确与否直接关系到后面日期的计算

          2、其中比较绕的就是怎样判断日期的正确性,可以动手画一下逻辑图,

          3、日期的计算方式

计划下一个:输入两个日期,判断两个日期之间相隔的天数。

以上欢迎大家提出宝贵意见,共同进步,谢谢!

...全文
4 6 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
相关推荐
发帖
编程新手村
创建于2021-11-01

6.5w+

社区成员

灌水发信息每周送书 灌水发干货每周送惊喜 谁最水过年送大礼 谁最硬核过年送大礼 谁最贡献过年送大礼
帖子事件
创建了帖子
2021-11-23 23:46
社区公告

我们“新手村”社区就是大家的孵化器

你们学习,我来评分

每周最高分送一本书

每月第四周送一份机械键盘

咱们新手村使用一切狂暴手段让优秀的人得到奖励