发布网友 发布时间:2022-08-21 03:27
共2个回答
热心网友 时间:2023-11-17 06:21
#include <stdio.h>
#include <string.h>
//判断是否是闰年
bool isLeap(int year)
{
if((year%4==0 && year%100 !=0) || (year%400==0))
{
return true;
}
return false;
}
//返回指定年,指定月的天数(即返回某月的天数)
int getDays(int year,int month)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
}
if(isLeap(year))
{
return 29;
}
return 28;
}
//返回指定年月中该月的第一天的星期
int getWeekday(char date[])
{
int j,k,m,q;
j=date[1]-48;
k=date[2]-48;
m=date[6]-48;
q=1;
return (q+((m+1)*26/10)+k/4+j/4-2*j)%7;
}
void showTips()
{
printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六\n");
}
int main()
{
char date[11];
int i,year,month,days,weekday,temp;
printf("请输入年月,格式为xxxx年x月,或者xxxx年xx月\n");
gets(date);
//strcpy(date,"2007年7月");
year=0;
for(i=0;i<4;i++)
{
year*=10;
year+=date[i]-48;
}
//如果给定日期的月份是1位 即1~9
if(strlen(date)==9)
{
month=date[6]-48;
}
//如果给定的日期的月份是2位 即10~12
else
{
month=(date[6]-48)*10+date[7]-48;
}
days=getDays(year,month);
weekday=getWeekday(date);
printf("星期六 星期日 星期一 星期二 星期三 星期四 星期五\n");
temp=weekday;
for(i=0;i<temp;i++)
{
printf("\t");
}
for(i=1;i<=days;i++)
{
printf(" %d\t",i);
temp++;
if(temp==7)
{
printf("\n");
temp=0;
}
}
printf("\n");
return 0;
}
这是根据你提供的星期计算公式得出来的结果,所以不保证与当前的日历一致性,结果附图所示!
热心网友 时间:2023-11-17 06:21
// 提示输入年月, 用空格分开输入