A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//题目:输入某年某月某日,判断这一天是这一年的第几天?
//先设置数组存储闰年与非闰年每个月的天数;判断各个录入数字是否为正整数,判断该年是否为闰年,判断输入的月数是否超过12,判断该日期是否超过该月的最大天数.
//根据是否闰年,决定提取那个数组计算天数.
#include <stdio.h>
void main()
{
        int month[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
                                          31,29,31,30,31,30,31,31,30,31,30,31};                                                //设置平年闰年每月天数的数组
        int year=0,mon=0,day=0,leap=0;
        while(1)                                                        //仅当输入正确计算完成后才跳出循环.
        {
                printf("请输入年月日:\n");
                scanf("%d%*c%d%*c%d",&year,&mon,&day);
                if(  (year % 4 == 0 && year % 100!=0) || (year % 400 == 0)   )//如果是闰年 则leap=1
                        leap = 1;
                if(year>=0 && mon>0 && mon<12 && day >0 && day <= month[leap][mon-1])        //如果输入正确,则开始计算日期
                {
                        printf("%d年%d月%d日",year,mon,day);
                        for(int i=0;i<mon-1;i++)
                        {
                                day += month[leap][i];
                        }
                        break;
                }
                else//如果输入错误,则重新输入,leap置零,重新计算下次输入的年份是否为闰年
                {
                        printf("输入错误,请重新输入:\n");
                        leap =0;
                }
        }
        printf("为当年的第%d天.\n",day);
}

3 个回复

正序浏览
不错,挺强...
回复 使用道具 举报
怎么可以这样玩
回复 使用道具 举报
自嗨是个好习惯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马