C语言 编程
输入年月日,查看这个年月日的正确性,要求是简单的,易懂的,不要太长。
问题:
年好说,就是个闰年和非闰年。可是月要对应日。而日的天数也有不同。这个怎么一一匹配。谢谢了 高手门
[解决办法]
- C/C++ code
/* * * 判断输入的日期是否合法, * * 如果日期合法,判断该年是否为闰年,并且计算输入的日期是该年第多少天。 * */ #include <stdio.h>int isLeapYear(int year){ return (year%4==0 && year%100!=0) || year%400==0;}int main(void){ const int dayOfMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int year, month, date; int isLegal = 1, sum = 0, i; printf("输入年:"); scanf("%d", &year); printf("输入月:"); scanf("%d", &month); printf("输入日:"); scanf("%d", &date); if (month>12 || month<1) isLegal = 0; if (month != 2) { if (date > dayOfMonth[month]) isLegal = 0; } else { if (isLeapYear(year) && date>29) isLegal = 0; else if (!isLeapYear(year) && date > 28 ) isLegal = 0; } if (date < 1) isLegal = 0; if ( isLegal ) { for (i=1; i<month; i++) sum += dayOfMonth[i]; sum += date; if (isLeapYear(year)) { printf("%d 年是闰年。\n", year); if (month > 2) sum++; } else { printf("%d 年是平年。\n", year); } printf("%d.%d.%d 是 %d 年的第 %d 天。\n", year, month, date, year, sum); } else { printf("无效的日期!\a\n"); } return 0;}