c语言—输入年、月、日,算出该日是该年的第几天

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int y,m,d;//年、月、日
    int cr,ds=0,i;//cr:判断是否为闰年的变量,是为1,否为0;ds:天数的总和;i是一个循环变量
    char run[12] = {31,29,31,30,31,30,31,31,30,31,30,31};//闰年的每月的天数
    char ping[12] = {31,28,31,30,31,30,31,31,30,31,30,31};//平年的每月的天数
    printf("请输入你要查询的年份:\n");
    scanf("%d",&y);//输入年份
    cr = y%4==0&&y%100!=0||y%400==0;//判断是否为闰年,是为1,否为0
    do{
        printf("请输入月份:\n");
        scanf("%d",&m);//输入月份
        if(m<0||m>12){//判断有没输入错误
        printf("输入有误,请重新输入!\n");}
    }while(m<0||m>12);//有错重新输入
    do{
        printf("请输入日期:\n");
        scanf("%d",&d);//输入日期
        if(d>31){//判断有没有输入大于31号的
            printf("输入有误,请重新输入!(一个月最多有31天)\n");
        }else if(d>run[m-1]&&cr==1)//判断闰年某天数是否在该月的最多天数内
        {
            printf("%d月最多有%d天,请重新输入!\n",m,run[m-1]);
        }else if(d>ping[m-1]&&cr==0)//判断平年某天数是否在该月的最多天数内
        {
            printf("%d月最多有%d天,请重新输入!\n",m,ping[m-1]);
        }
    }while((d>run[m-1]&&cr==1)||(d>ping[m-1]&&cr==0));
    if(cr == 1){//计算闰年的某天在该年的总天数
        for(i=0;i<m-1;i++){
        ds += run[i];
        }
    }else {//计算平年的某天在该年的总天数
        for(i=0;i<m-1;i++){
            ds += ping[i];
        }
        ds += d;//加上当月的天数
    printf("%d年%d月%d日是该年的第%d天!",y,m,d,ds);
    }  
    
}

 

posted on 2017-10-16 19:55  梁锦杰  阅读(8135)  评论(0编辑  收藏  举报

导航

欢迎进入我的博客!