我的思路是:
1、首先从输入获取两个参数,第一个数每月的天数,第二个是每个月从星期几开始,这个可以用scanf()函数获取
2、打印日历,首先打印每个月开头的几个空格,然后打印日历,打印日历的时候,每隔七个就换一行即可。
代码如下:
#include <stdio.h>
int main(void){
int days; //存储一月有多少天,即输入的第一个输入的数
int firstDay; //存储每月第一天是星期几,即输入的第二个参数
//存输入获取两个参数
scanf("%d%d",&days,&firstDay);
int i;
//打印日历,每月开头的一行的空格,从星期一开始,一直到输入的星期几之前结束输出空格
//打印每月开头的空格后,等待后面输出每月日历
for(i=1;i<firstDay;i++){
printf(" \t");
}
//从每月1号开始,到每月最后一天结束打印
for(i=1;i<=days;i++){
//打印每月每天的日历
printf("%d\t",i);
//如果当前的天数+前面输入的空格数(空格数即firstDay-1) 对7求余等于0,说明打印了七个输入(包含打印的空格数),就打印一个换行 ,
//代表一周结束,以便后面开始换行打印下一周的日历
if((i+firstDay-1)%7==0){
printf("\n");
}
}
}