黑马程序员技术交流社区

标题: 题目:请用户输入年月日,计算出这一天是第几天. [打印本页]

作者: buzheng    时间: 2016-5-6 12:26
标题: 题目:请用户输入年月日,计算出这一天是第几天.
如题,要求:用户非法输入的时候,需要提示"非法输入",有且只能提示一次.
如何用最少的代码,把各种非法输入的情况表示出来呢
作者: a_skting    时间: 2016-5-6 19:48
这是我写的之前要求用户输入一个1990年往后的年月日的判定,你参考一下。

int judgeYear(int *year, int *month, int *day)
{
        do
        {
                printf("Enter the Data (yy-mm-dd):\n");
                scanf("%d-%d-%d", year, month, day);
               
                if(*year >= 1990 && *month >= 1 && *month <= 12)
                {
                        // 计算天数是否合理
                        //判定非闰年该月天数是否合理。
                        switch( *month)
                        {
                                case 1:
                                case 3:
                                case 5:
                                case 7:
                                case 8:
                                case 10:
                                case 12:
                                        if(*day >= 1 && *day <= 31)
                                                return 0;
                                        break;
                                case 4:
                                case 6:
                                case 9:
                                case 11:
                                        if(*day >= 1 && *day <= 30)
                                                return 0;
                                        break;
                                case 2:
                                        if(runYear(*year))
                                        {       
                                                if(*day >=1 && *day <=29)
                                                        return 0;
                                        }
                                        else
                                        {
                                                if(*day >= 1 && *day <= 28)
                                                        return 0;
                                        }       
                                        break;
                        }
                       
                }
                printf("Data is error.\n");
               
        }while(1);
}

作者: a_skting    时间: 2016-5-6 19:51
我觉得主要的判定是在于判定天数对不对。判定天数的思路大概在swith那里
作者: buzheng    时间: 2016-5-7 08:03
a_skting 发表于 2016-5-6 19:48
这是我写的之前要求用户输入一个1990年往后的年月日的判定,你参考一下。

int judgeYear(int *year, int * ...

如果不考虑用户非法输入,这道题还是很简单的,加入非法输入就难了,不信的话,你可以试试




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2