题目要求:2007年1月1日为星期一,编写一个函数,输出2007年任意月份的日历
这道题我是个人的做法,有个别地方可能有些绕。
#include<stdio.h>
int main()
{
int month,WEEKDAY,count,month_days,width;
int isWhatDay(int month); //声明计算的函数
printf("Please enter a month:\n");
scanf("%d",&month);
WEEKDAY = isWhatDay(month); //将函数返回值赋给WEEKDAY
printf("Calendar 2007 - %d\n",month);
printf("----------------------------\n");
printf(" Su Mo Tu We Th Fr Sa\n"); //空白处是两个空格
//下面是赋各个月份的天数
if(month == 1||month == 3||month == 5||month == 7||month ==8||month == 10||month == 12)
month_days = 31;
else if(month == 2)
month_days = 28;
else
month_days = 30;
width = 4 * WEEKDAY;
/*此处计算width可能一开始看不懂,实际上是为了打印空格,
空格不printf到第一天的前一位是因为下面输出是%4d,其前三位是空格了。*/
for(count = 1;count <= width;count++)
printf(" ");
for(count = 1;count <= month_days;count++)
{
printf("%4d",count);
if(WEEKDAY + (count - 1) % 7 == 6)
//这个if是因为到星期六就换行所以我从这个出发写出的等式
printf("\n");
}
printf("\n-----------------