输出月历
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
int month[]= {31,28,31,30,31,30,31,31,30,31,30,31};
const long long date=3;
int runnian (int y)
{
if (y%400==0)
return 1;
else if (y%100==0)
return 0;
else if (y%4==0)
return 1;
else
return 0;
}
int printm(int f, int d)
{
int w=f;
int i, j;
printf("Sun Mon Tue Wen Thu Fri Sat\n");
if (w!=7)
{
printf(" ");
for (i=1; i<w; i++)
{
printf(" ");
}
}
else
w=0;
for (i=1; i<=d; i++, w++)
{
if (w==0)
printf("%3d", i);
else
printf("%4d", i);
if (w==6)
{
putchar('\n');
w=-1;
}
}
if (w!=0)
putchar('\n');
return 0;
}
int getd (int y, int m)
{
return m==2?runnian(y)+month[m-1]:month[m-1];
}
int getf(int y, int m)
{
long long days=0;
int i;
if (y<2020)
{
for (i=y+1; i<2020; i++)
days+=365+runnian(i);
for (i=m; i<=12; i++)
{
days+=getd(y, i);
}
return (date+(7-days%7))%7==0?7:(date+(7-days%7))%7;
}
else if (y>2020)
{
for (i=2020; i<y; i++)
days+=365+runnian(i);
for (i=1; i<m; i++)
days+=getd(y, i);
return (date+days%7)%7==0?7:(date+days%7)%7;
}
else
{
for (i=1; i<m; i++)
{
days+=getd(y, i);
}
return (date+days%7)%7==0?7:(date+days%7)%7;
}
}
int main()
{
int y, m;
int f=0;
while (scanf("%d%d", &y, &m)==2)
{
if (f)
putchar('\n');
else
f=1;
printm(getf(y, m), getd(y, m));
}
return 0;
}
// A code block
var foo = 'bar';
#include <stdio.h>
#include <stdlib.h>
int main()
{
int month, i, j;
scanf("%d", &month);printf("Sun Mon Tue Wen Thu Fri Sat\n");
if(month >= 7)
month -= 7;
for(i = 1; i <= month; i++)
printf(" ");
for(i = month + 1, j = 1; j <= 30; i++, j++)
{
printf("%3d", j);
if(i % 7 == 0 && j != 30)
printf("\n");
if(i % 7 != 0 && j != 30)
printf(" ");
}
return 0;
}