C程序题年月日防恶意输入的问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 19:29:24
题目如下:请用户输入年月日。再显示正确的年月日。诸位莫笑!难点在于要求防止用户恶意输入。即用户输入“2000年18月367日”,程序运行后输出为“2002年6月1日”。考虑润平年以及进位。刚学C语言
要求只能用C语言,C++ 不行。可用二维数组和for循环或 do while循环做。也可嵌套,以及用if 等分支。但代码不得超过20行!!!!
请高手指点,越快越好。刚注册,只有这点分,万望赐教!
请注意代码不要超过20行。一定要用到“二维数组”。
我们老师这么要求的。
小弟尝试数次未得。
万望高手赐教 是以分号,大括号等为一行的

按照楼主的意思简单的编了一个
但是规则楼主说的不是很清楚呀
再说 既然是防止恶意输入 就像lcability所说的那样,要求重新输入就好了哈
代码如下 :
#include<stdio.h>
void main()
{
int year,month,day;
int Check[]={30,31,28,31,30,31,30,31,31,30,31,31};
scanf("%d%d%d",&year,&month,&day);
if(month%12 == 0)
{
year += (month/12 -1);
month = 12;
}
else
{
year += month/12;
month = month%12;
}
while(day > Check[month%12])
{
day -= Check[month%12];
if((month%12 == 2)&&(((year%4 == 0)&&(year%100 != 0)) || (year%400 == 0)))
{
--day;
}
if(++month > 12)
{
month -= 12;
++year;
}
}
printf("%d %d %d\n",year,month,day);;
}

代码很不规范 呵呵

以什么为行?以;分号,还是回车?

另外
即用户输入“