日历实现需要考虑那些问题?
如果自己来做个日历,我们应该考虑那些问题?这个会很难吗? 谢谢
[解决办法]
http://blog.csdn.net/jiangxinyu/archive/2007/05/16/1611551.aspx
[解决办法]
不难,很不难
[解决办法]
hoho
[解决办法]
看要做到什么程度吧
如果加上农历节气假日宜什么忌什么就比较麻烦了:)
[解决办法]
很久以前写的代码, 可以参考一下:
#include <iostream>using namespace std;/** * 2000年一月一日:周六 * 万年历,最主要的是计算某一年的某一月的一日是星期几. */// 每年的每月的天数,闰年的时候要特殊处理int daysOfMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool isBissextile(int year);int daysOfYear(int year);int daysTo2000(int year, int month, int day);int dayOfWeek(int year, int month, int day);bool isNumber(const char* str);int main() { int year, month, date = 1; bool flag = true; do { flag = true; cout << "year: "; char str[16]; cin >> str; if (strlen(str) > 15) { continue; } flag = isNumber(str); if (flag) { year = atoi(str); } } while (!flag); do { flag = true; cout << "Month: "; char str[16]; cin >> str; if (strlen(str) > 2) { continue; } flag = isNumber(str); if (flag) { month = atoi(str); if (month < 1 || month > 12) { //cout << month << endl; flag = false; continue; } break; } } while(!flag); cout << endl << "Calendar of year " << year << " month " << month << endl; cout << "Sun\tMon\tDie\tMit\tDon\tFre\tSum" << endl; int day = dayOfWeek(year, month,date); for (int i = 0; i < day; i++) { cout << "\t"; } for (int i = 1; i <= daysOfMonth[month - 1]; i++) { cout << i << "\t"; day++; if (day % 7 == 0) { cout << endl; } } return 0;}bool isNumber(const char* str) { const char* p = str; while (*p != '\0') { if (!isdigit(*p)) { return false; } p++; } return true;}/** * 判断输入的年是否闰年. */bool isBissextile(int year) { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { return true; } return false;}/** * 计算某一年某一月某一日到2000年一月一日有多少天 */ int daysTo2000(int year, int month, int day) { int days = 0; if (year >= 2000) { for (int i = 2000; i < year; i++) { days += daysOfYear(i); // 求这两个年之间的整年的天数 } for (int i = 0; i < month - 1; i++) { days += daysOfMonth[i]; // 求整月的天数 } if (month > 2 && isBissextile(year)) { // 如果大于二月且这一年是闰年,则再加一天. days++; } days += day; // 最后加上这一个月的号数. days--; // 因为最后要减去一天. } else { for (int i = year; i < 2000; i++) { days += daysOfYear(i); } days++; // 加上2000年1月1日这一天. int temp = 0; for (int i = 0; i < month - 1; i++) { temp += daysOfMonth[i]; } if (month > 2 && isBissextile(year)) { temp++; } temp += day; days -= temp; } return days;}/** * 计算某一年有多少天 */int daysOfYear(int year) { int days = 0; for (int i = 0; i < 12; i++) { days += daysOfMonth[i]; } if (isBissextile(year)) { days++; } return days;}/** * 计算某一天是星期几 */int dayOfWeek(int year, int month, int day) { int days = daysTo2000(year, month, day); if (year >= 2000) { int date[7] = {6, 0, 1, 2, 3, 4, 5}; return (date[days % 7]); } else { int date[7] = {6, 5, 4, 3, 2, 1, 0}; return (date[days % 7]); }}
[解决办法]
http://topic.csdn.net/u/20071217/20/dfc60987-7c6d-4e35-97cb-f1da1b7021bc.html