c语言任意年月日是星期几,求C语言程序,任意输入一个年月日,要求输出是星期几,要在Visual  C++6.0的环境里运行,谢谢啦...

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

aaaqe

2013.05.13

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:51%    等级:13

已帮助:7216人

#include

int isLeapYear(int year)

{

if( ( year%4==0 && year%100!=0) || (year%100==0) && ( year%3200!=0 ) )

return 1;

else return 0;

}

int main()

{

loop2:

int a[12]={1,0,1,0,1,0,1,1,0,1,0,1};

int weekDay,c,y,temp;

int year,month,day;

char k;

printf("请按年月日格式输入(如1949 10 1): ");

loop: scanf("%d%d%d",&year,&month,&day);

//判断输入的年月日是否正确

if(year<0)

{

printf("年份不能为负数!请重输: ");

goto loop;

}

else if(month<1||month>12)

{

printf("输入月份只能在1-12之间!请重输: ");

goto loop;

}

else if(day<1||day>31)

{

printf("日的最大范围只在1-31之间!请重输: ");

goto loop;

}

else if(month==2 && day>29)

{

printf("二月没有%d日!请重输: ",day);

goto loop;

}

else if(month==2)

{

if(!isLeapYear(year) && day==29)

{

printf("该年不是闰年,二月没有29日!请重输: ");

goto loop;

}

}

else if(!a[month-1] && day==31)

{

printf("%d月是小月,没有31日!请重输: ",month);

goto loop;

}

//蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

loop3: if( month==1 || month==2)

{

month+=12;

year--;

}

y = year % 100;

c = year / 100 ;

temp = y + y/4 + c/4 - 2*c + 26*(month+1)/10 + day - 1;

while(temp<0)

{

temp+=7;

}

weekDay = temp%7;

printf("\n\n那天正逢星期");

switch(weekDay)

{

case 0: printf("日");break;

case 1: printf("一");break;

case 2: printf("二");break;

case 3: printf("三");break;

case 4: printf("四");break;

case 5: printf("五");break;

case 6: printf("六");break;

}

printf("\n\n\n");

printf("退出程序吗?(y/n)\n\n");

do k=getchar();

while(k!='y'&&k!='n'&&k!='Y'&&k!='N');

if(k=='y'||k=='Y') ;

else goto loop2;

}

40分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值