读书人

C语言 编程解决方法

发布时间: 2012-03-29 12:53:13 作者: rapoo

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;} 

读书人网 >C++

热点推荐