c语言电子万年历函数 c语言万年历设计思路( 三 )


#include iomanip
#include string
using namespace std;
static char *week0=" SUN MON TUE WED SUR FRI SAT"; //指针形式定义一个字符串,或者是week0[36]
int leap(int year)
{
if((year%4==0year%100!=0)|| year%400==0)
return 1;
else return 0;
}
int week(int year)
{
int i,w;
int s=0;
for(i=1900;iyear;i++)
{
if(leap(i))
s+=366;
else s+=365; //计算从1900年到year年的天数
}
w=(s+1)%7;
return w;
}
void main()
{
int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i,j,k;
int year;
int w;
do
{
cout"输入年份:";
cinyear;
}while(year=1900);
w=week(year);
if(leap(year))
month[1]=29;
for(i=0;i12;i++)
{
for(k=0;k35;k++)
cout"_"; //输出一条横线
coutendl;
coutsetw(20)i+1"月"endl;
coutendl;
coutweek0endl;
for(k=0;kw;k++)
cout" "; //输出若干空格
for(j=1;j=month[i];j++)
{
if((j+w)%7==1) //遇到星期日时,换一行输出
coutendl;
coutsetw(5)j;
}
coutendl;
for(k=0;k35;k++)
cout"_"; //输出一条横线
coutendl;
w=(w+month[i])%7; //计算下个月1号是星期几
}
coutendl;
system("pause");
}
C语言万年历程序#include"stdio.h"
#include"stdlib.h"
main( )
{
int Year,Month;//年、月
int FirstDay_Year,FirstDay_Month;//某年c语言电子万年历函数的第一天是星期几,某年某月c语言电子万年历函数的第一天是星期几(范围是0~6,其中0代表星期日)
int IsLeapYear;//是否为闰年c语言电子万年历函数,0表示不是闰年,1表示是闰年
int i,d,y;//临时变量
char YN;//Yes No,程序是否要继续
int Days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//Days[1~12]存储每个月有多少天c语言电子万年历函数,其中二月的天数是可变的(闰年29天,平年28天),这里初始化为28天
printf(" C语言简单万年历\n");//打印标题
XunHuan://循环标号(可以通过goto跳转到这里)
printf("请输入年份: ");//提示输入年份(0~9999)
scanf("%d",Year);//把输入的年份赋值给变量Year
printf("请输入月份: ");//提示输入月份(1~12)
scanf("%d",Month);//把输入的月份赋值给变量Month
y=Year;
FirstDay_Year=5*(y/4)+(y%4)-(y/100)+(y/400);//蔡勒公式(计算某年的第一天是星期几)
IsLeapYear=(y%4==4y%100!=100||y%400==0)?1:0;
//判断是否为闰年
Days[2]=(IsLeapYear==1)?29:28;//闰年二月29天,非闰年二月28天
for(i=1,d=0;iMonth;i++)
d=d+Days[i];
FirstDay_Month=(d+FirstDay_Year)%7;//当月的第一天是星期几(0代表星期日)
printf("\n****************************************************\n");
printf("\t\t公元 %d 年 %2d 月",Year,Month);//打印年月
printf("\n****************************************************\n");
printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六\n");
//打印星期表头
for(i=0;iFirstDay_Month;i++)
printf("%7c",' ');//当某月的第一天不是星期日时打印空格占位
for(d=1;d=Days[Month];d++)//循环,从每个月的第一天开始打印
{
printf("%7d",d);
if(((d+FirstDay_Month)%7)==0dDays[Month])
printf("\n");//当输出c语言电子万年历函数了星期六而且还未输出所有天数时,换行
}
printf("\n****************************************************\n");
printf("\n");
printf("是否继续(Y/N)?\n");
scanf("%c",YN);
scanf("%c",YN);
if(YN=='Y' || YN=='y')
goto XunHuan;
}
【c语言电子万年历函数 c语言万年历设计思路】

推荐阅读