カレンダー

月のカレンダーを出力する

C
#include<stdio.h>
int main(){
  int days[] = {31,28,31,30,31,30,31,30,31,31,30,31,30,31};
  int y, m, d, i, k;

  printf("y=");
  scanf("%d", &y);
  printf("m=");
  scanf("%d", &m);
  if(1583>y || y>4000 || 1>m || m>12) return 1;
  printf("\n%d/%d\n\n", y, m);

  d = days[m-1];
  if(m==2 && (y%4==0&&y%100!=0||y%400==0)) d++;

  if(m==1 || m==2){
    y--;
    m += 12;
  }
  k = (y+(int)(y/4)-(int)(y/100)+(int)(y/400)+(int)((13*m+8)/5)+1) % 7;

  printf("日 月 火 水 木 金 土\n");
  for(i=0; i<k; i++) printf("   ");
  for(i=1; i<=d; i++){
    printf("%2d ", i);
    if(++k%7==0) printf("\n");
  }
  printf("\n");
  return 0;
}

C++
#include<iostream>
using namespace std;
int main()
{
  int days[] = {31,28,31,30,31,30,31,30,31,31,30,31,30,31};
  int y, m, d, i, k;

  cout<<"y="; cin>>y;
  cout<<"m="; cin>>m;
  if(1582>=y || y>=4000 || 1>m || m>12) return 1;
  cout<<'\n'<<y<<'/'<<m<<"\n\n";

  d = days[m-1];
  if(m==2 && (y%4==0&&y%100!=0||y%400==0)) d++;

  if(m==1 || m==2)
  {
    y--;
    m += 12;
  }
  k = (y+(int)(y/4)-(int)(y/100)+(int)(y/400)+(int)((13*m+8)/5)+1) % 7;

  cout<<" 日 月 火 水 木 金 土\n";
  for(i=0; i<k; i++)cout<<"   ";
  for(i=1; i<=d; i++)
  {
    cout.width(3);
    cout<<i;
    if(++k%7 == 0) cout<<'\n';
  }
  cout<<endl;
  return 0;
}

タグ:

+ タグ編集
  • タグ:
最終更新:2010年08月05日 22:55