【输入】
【输出】
1、先编写2000年以后每年一月一日星期几
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int year=0, month=0;//year:年; month:月;
int year1 = 2000, momth1 = 1, week= 6; //已知2000年1月1日为星期六; week:星期;
int i, j;//用于循环
scanf("%d-%d",&year,&month);//输入年月格式 year-month;
for(;year1<year; year1++)
{
if ((year1 % 4 == 0 && year1 % 100 != 0) || year1 % 400 == 0)//判断是否为闰年
week += 2;
else
week++;
if (week / 8)
week = week % 7;
}
printf("%d", week);
return 0;
}
测试成功,继续下一步
2、升级程序算出每月第一日是星期几
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int year=0, month=0;//year:年; month:月;
int year1 = 2000, month1 = 1, week= 6; //已知2000年1月1日为星期六; week:星期;
int i, j;//用于循环
scanf("%d-%d",&year,&month);//输入年月格式 year-month;
for(;year1<year; year1++)
{
if ((year1 % 4 == 0 && year1 % 100 != 0) || year1 % 400 == 0)//判断是否为闰年
week += 2;
else
week++;
if (week / 8)
week = week % 7;
}
for (i = 1; i < month; i++)
{
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10)//这些月份有31天
{
week += 31;
for (; week > 7; week -= 7);
}
else if(i==2)
{
if ((year % 4 == 0 && year % 100 != 0) || year% 400 == 0)//闰年二月29天,非闰年二月有28天
{
week += 29;
for (; week > 7; week -= 7);
}
else
{
week += 28;
for (; week > 7; week -= 7);
}
}
else//剩下三,四,六,九,十一月每月有30天
{
week += 30;
for (; week > 7; week -= 7);
}
}
printf("%d", week);
return 0;
}
成功!
3、开始打印该年该月的每日是星期几
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int year=0, month=0;//year:年; month:月;
int year1 = 2000, month1 = 1, week= 6,fate; //已知2000年1月1日为星期六; week:星期; fate:天数
int i, j,k;//用于循环
scanf("%d-%d",&year,&month);//输入年月格式 year-month;
for(;year1<year; year1++)
{
if ((year1 % 4 == 0 && year1 % 100 != 0) || year1 % 400 == 0)//判断是否为闰年
week += 2;
else
week++;
if (week / 8)
week = week % 7;
}
for (i = 1; i < month; i++)
{
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10)//这些月份有31天
{
week += 31;
for (; week > 7; week -= 7);
}
else if(i==2)
{
if ((year % 4 == 0 && year % 100 != 0) || year% 400 == 0)//闰年二月29天,非闰年二月有28天
{
week += 29;
for (; week > 7; week -= 7);
}
else
{
week += 28;
for (; week > 7; week -= 7);
}
}
else//剩下三,四,六,九,十一月每月有30天
{
week += 30;
for (; week > 7; week -= 7);
}
}
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10)
fate= 31;
else if (month == 2)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
fate= 29;
else
fate= 28;
}
else fate= 30;
printf("一\t二\t三\t四\t五\t六\t日\n");
for (k = 1; k < week; k++)
printf(" \t");
for (j=1; j<=fate; j++)
{
printf("%-2d", j);
week++;
if (week > 7)
{
week = week - 7;
printf("\n");
}
else
printf("\t");
}
return 0;
}