感觉这好像是个挺低级的东西吖。。。#include <iostream> using namespace std; int cYear; int cMonth; int judgeDay(int y,int m) { switch(m) { case 1: case 3: case 5: case 7:case 10: case 12: return 31; break; case 4: case 6: case 9: case 11: return 30; break; case 2: { if(y%4==0 && y%100!=0 || y%400==0) return 29; else return 28; }break; } } void SetandPrint() { int i,days=0,s,k; int mont[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int wek[7]={7,1,2,3,4,5,6}; int a[32]; int printdays=0; cout<<"输入年月(输入格式:1990 1):"; cin>>cYear>>cMonth; if (cYear%4==0||cYear%100==0||cYear%400==0) mont[2]=29; else mont[2]=28; for (i=0;i<cMonth;i++) days+=mont[i]; days+=1; s=cYear-1+(int)((cYear-1)/4)-(int)((cYear-1)/100)+(int)((cYear-1)/400)+days; k=s%7; printdays=judgeDay(cYear,cMonth)+wek[k]-1; cout<<"星期一/t星期二/t星期三/t星期四/t星期五/t星期六/t星期日/n"; for(i=1;i<=printdays;i++) { if(i<wek[k]) cout<<"/t"; else { if((i-1)%7==0) { cout<<endl; } cout<<i-wek[k]+1<<"/t"; } } cout<<endl; } int main() { while(1) { SetandPrint(); } return 0; }