为了账号安全,请及时绑定邮箱和手机立即绑定

我该怎么判断下面这个日期是否合法 ?

我该怎么判断下面这个日期是否合法 ?

函数式编程 2021-08-25 19:15:18
题目描述上网的时候经常需要用户填表输入出生日期,现在请你写一个程序来判断用户输入的日期是否合法,为了方便起见,2月29日总视为合法日期。如果输入的日期是合法的。输出yes,否则输出no输入有若干组日期输入每组输入两个整数,中间用空格隔开,分别代表月份和日期。数据最后以0 0结束。0 0不做处理。输出每组日期对应输出一行,合法则输出yes,否则输出no样例输入1 241 32 99-1 204 -1015 20 0样例输出yesyesnononono提示12个月包含的天数分别为31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

#define JANUARY 1
#define FEBRUARY 2
#define MARCH 3
#define APRIL 4
#define MAY 5
#define JUNE 6
#define JULY 7
#define AUDUST 8
#define SEPTEMBER 9
#define OCTOBER 10
#define NOVERBER 11
#define DECEMBER 12

#define MONTH 12
#define DATALENTH 2

int data[MONTH][DATALENTH];

void getData(void);
void output(void);

void main(void)
{
getData();

output();

getch();
}

void getData(void)
{
int tempMonth,tempData;
int i = 0;
int flag = 0;

while(!flag){
flag = scanf("%d %d",&tempMonth,&tempData);
getchar();/*清空缓存*/
if(!flag){/*输入为整型以外的数据*/
printf("DATA ERROR!");
// getchar();/*清空缓存*/
continue;
}
else{
data[i][0] = tempMonth;
data[i][1] = tempData;
//printf("%d %d\n",data[i][0],data[i][1]);
i++;
flag = 0;
}

/*结束输入*/
if( ( !tempMonth ) || ( !tempData ) ){
break;
}
}
}

void output(void)
{
int i = 0;

while(!data[i][0] && !data[i][1])
switch(data[i][0]){
case FEBRUARY:
if( 0 < data[i][1] < 30 ){
printf("YES\n");
}
else{
printf("NO\n");
}
break;

case JANUARY:
case MARCH:
case MAY:
case JULY:
case AUDUST:
case OCTOBER:
case DECEMBER:
if( 0 < data[i][1] < 32 ){
printf("YES\n");
}
else{
printf("NO\n");
}
break;

case APRIL:
case JUNE:
case SEPTEMBER:
case NOVERBER:
if( 0 < data[i][1] < 31 ){
printf("YES\n");
}
else{
printf("NO\n");
}
break;

default:
printf("NO\n");
break;
}
i++;
}
}



查看完整回答
反对 回复 2021-08-30
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

int n m
if(n>o&&n<=10&&m>0&&m<=30){printf();}随便写了下,估计有很多错误的
好久没懂c了但是思路是这样的、选择语句

查看完整回答
反对 回复 2021-08-30
  • 2 回答
  • 0 关注
  • 331 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信