首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

年历显示,该怎么解决

2012-06-17 
年历显示嗯……C语言课程设计要求(1)输入一个年份,输出的是屏幕上显示该年的日历,假定输入的年份在1940-2040

年历显示
嗯……C语言课程设计要求
(1)输入一个年份,输出的是屏幕上显示该年的日历,假定输入的年份在1940-2040年之间
(2)输入年月,输出该月的日历
(3)输入年月日,输出距今天还有多少天,是否是公历节日[/size]

[解决办法]
1)

C/C++ code
[User:root Time:22:58:32 Path:/home/liangdong/c]$ cat src/main.c #include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc, char* const argv[]) {        int year;        char command[20];        while (scanf("%d", &year) == 1) {                snprintf(command, sizeof(command), "cal '%d'", year);                system(command);        }        return 0;}[User:root Time:22:58:05 Path:/home/liangdong/c]$ makegcc -g -I./include   -c -o src/main.o src/main.cgcc -o output src/main.o -lpthread -lm -lzMakefile done.[User:root Time:22:58:07 Path:/home/liangdong/c]$ ./output 1999                               1999                                      January               February                 March       Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa                1  2       1  2  3  4  5  6       1  2  3  4  5  6 3  4  5  6  7  8  9    7  8  9 10 11 12 13    7  8  9 10 11 12 1310 11 12 13 14 15 16   14 15 16 17 18 19 20   14 15 16 17 18 19 2017 18 19 20 21 22 23   21 22 23 24 25 26 27   21 22 23 24 25 26 2724 25 26 27 28 29 30   28                     28 29 30 3131        April                   May                   June        Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa             1  2  3                      1          1  2  3  4  5 4  5  6  7  8  9 10    2  3  4  5  6  7  8    6  7  8  9 10 11 1211 12 13 14 15 16 17    9 10 11 12 13 14 15   13 14 15 16 17 18 1918 19 20 21 22 23 24   16 17 18 19 20 21 22   20 21 22 23 24 25 2625 26 27 28 29 30      23 24 25 26 27 28 29   27 28 29 30                       30 31        July                  August                September     Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa             1  2  3    1  2  3  4  5  6  7             1  2  3  4 4  5  6  7  8  9 10    8  9 10 11 12 13 14    5  6  7  8  9 10 1111 12 13 14 15 16 17   15 16 17 18 19 20 21   12 13 14 15 16 17 1818 19 20 21 22 23 24   22 23 24 25 26 27 28   19 20 21 22 23 24 2525 26 27 28 29 30 31   29 30 31               26 27 28 29 30       October               November               December      Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa                1  2       1  2  3  4  5  6             1  2  3  4 3  4  5  6  7  8  9    7  8  9 10 11 12 13    5  6  7  8  9 10 1110 11 12 13 14 15 16   14 15 16 17 18 19 20   12 13 14 15 16 17 1817 18 19 20 21 22 23   21 22 23 24 25 26 27   19 20 21 22 23 24 2524 25 26 27 28 29 30   28 29 30               26 27 28 29 30 31312012                               2012                                      January               February                 March       Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 1  2  3  4  5  6  7             1  2  3  4                1  2  3 8  9 10 11 12 13 14    5  6  7  8  9 10 11    4  5  6  7  8  9 1015 16 17 18 19 20 21   12 13 14 15 16 17 18   11 12 13 14 15 16 1722 23 24 25 26 27 28   19 20 21 22 23 24 25   18 19 20 21 22 23 2429 30 31               26 27 28 29            25 26 27 28 29 30 31        April                   May                   June        Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 1  2  3  4  5  6  7          1  2  3  4  5                   1  2 8  9 10 11 12 13 14    6  7  8  9 10 11 12    3  4  5  6  7  8  915 16 17 18 19 20 21   13 14 15 16 17 18 19   10 11 12 13 14 15 1622 23 24 25 26 27 28   20 21 22 23 24 25 26   17 18 19 20 21 22 2329 30                  27 28 29 30 31         24 25 26 27 28 29 30        July                  August                September     Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 1  2  3  4  5  6  7             1  2  3  4                      1 8  9 10 11 12 13 14    5  6  7  8  9 10 11    2  3  4  5  6  7  815 16 17 18 19 20 21   12 13 14 15 16 17 18    9 10 11 12 13 14 1522 23 24 25 26 27 28   19 20 21 22 23 24 25   16 17 18 19 20 21 2229 30 31               26 27 28 29 30 31      23 24 25 26 27 28 29                                              30       October               November               December      Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa    1  2  3  4  5  6                1  2  3                      1 7  8  9 10 11 12 13    4  5  6  7  8  9 10    2  3  4  5  6  7  814 15 16 17 18 19 20   11 12 13 14 15 16 17    9 10 11 12 13 14 1521 22 23 24 25 26 27   18 19 20 21 22 23 24   16 17 18 19 20 21 2228 29 30 31            25 26 27 28 29 30      23 24 25 26 27 28 29                                              30 31 


[解决办法]

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <math.h>int main(int argc, char* const argv[]) {        int year, month, day;        struct tm past_tm;        time_t past_time;        time_t cur_time;        while (scanf("%d%d%d", &year, &month, &day) == 3) {                bzero(&past_tm, sizeof(struct tm));                past_tm.tm_year = year - 1900;                past_tm.tm_mon = month - 1;                past_tm.tm_mday = day;                past_time = mktime(&past_tm);                if (past_time != -1) {                        cur_time = time(NULL);                        struct tm *cur_tm = localtime(&cur_time);                        year = cur_tm->tm_year;                        month = cur_tm->tm_mon;                        day = cur_tm->tm_mday;                        bzero(cur_tm, sizeof(struct tm));                        cur_tm->tm_year = year;                        cur_tm->tm_mon = month;                        cur_tm->tm_mday = day;                        cur_time = mktime(cur_tm);                        int secs = abs(cur_time - past_time);                        int days = secs / (60 * 60 * 24);                        printf("%d days\n", days);                }        }        return 0;}[User:root Time:23:26:31 Path:/home/liangdong/c]$ ./output 2012 5 270 days2012 5 281 days^C
[解决办法]
可惜是C语言的,否则利用boost的date,date_duration解决很简单

热点排行