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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,要求:用户非法输入的时候,需要提示"非法输入",有且只能提示一次.
如何用最少的代码,把各种非法输入的情况表示出来呢

3 个回复

倒序浏览
这是我写的之前要求用户输入一个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);
}
回复 使用道具 举报
我觉得主要的判定是在于判定天数对不对。判定天数的思路大概在swith那里
回复 使用道具 举报
a_skting 发表于 2016-5-6 19:48
这是我写的之前要求用户输入一个1990年往后的年月日的判定,你参考一下。

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

如果不考虑用户非法输入,这道题还是很简单的,加入非法输入就难了,不信的话,你可以试试
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马