C初学者编程帮助日历代码更新

实现打印给定月份和年份的日历的function。 首先,提示用户:

输入月份和年份:

一旦用户输入有效输入(由空格分隔的两个整数),以与UNIX cal命令的输出类似的格式打印日历。 例如,如果用户输入03 2014,则输出应为:

View post on imgur.com

我的代码的更新版本,对于stackflow的新缩进感到抱歉,它不会让我只是复制并粘贴我的代码说我有缩进问题:

#include int main(){ int year; int month, day; int days_in_month[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; char *months[]= { " ", " January", " February", " March", " April", " May", " June", " July", " August", " September", " October", " November", " December" }; printf("Please enter a month and year: "); scanf("%d %d", &month, &year); if(((year%4==0) && (year%100!=0)) || (year%400==0)) { days_in_month[2] = 29; } else { days_in_month[2] = 28; } printf("%s", months[month]); printf("\nSun Mon Tue Wed Thu Fri Sat\n" ); for ( day = 1; day <= 1; day++ ) { printf(" "); } for ( day = 1; day  0 ){ printf(" " ); } else{ printf("\n " ); } } return 0; } 

我需要帮助的是,我可以打印正确的年份和月份以及每个月的天数,但我完全不知道如何处理代码,以便progrma本身知道从哪里开始打印第一个我进入的那个月的某一天。 例如,如果我在2014年1月投入日历,那么日历应该打印在1月份,并且在星期日下降1,在星期四下2 ……依此类推。 谢谢您的帮助。

您想要确定的是,如果mm-yyyy是输入,则确定1-mm-yyyy的工作日,以便您可以从该工作日开始打印该月的日期。 确定工作日有公式。 读这个 。 C中有代码用于确定给定日期的工作日。

试试这个

 #include int main(){ int year; int month, day; int days_in_month[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; char *months[]= { " ", " January", " February", " March", " April", " May", " June", " July", " August", " September", " October", " November", " December" }; printf("Please enter a month and year: "); scanf("%d %d", &month, &year); if(((year%4==0) && (year%100!=0)) || (year%400==0)) { days_in_month[2] = 29; } else { days_in_month[2] = 28; } int weekday ; // WeekDay ( Sunday - 0,Monday- 1,.....) int day1 = 1; int i; weekday = (day1+=month<3?year--:year-2,23*month/9+day1+4+year/4-year/100+year/400)%7; printf("%d day is %d weekday\n", day1,weekday); printf("%s", months[month]); printf("\nSun Mon Tue Wed Thu Fri Sat\n" ); if(weekday < 7) for(i=0; i 0 ){ printf(" " ); } else{ printf("\n " ); } } return 0; }