重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
注意:本源码中,函数GetWeekDay的返回值仅仅表示输入参数是否“正确/有效”(例如前三个参数使用2001,2,29就是无效参数),能否得到预期的星期值;真正的星期值则是通过输出变量返回给主调函数的。
成都创新互联2013年至今,是专业互联网技术服务公司,拥有项目网站制作、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元湄潭做网站,已为上家服务,为湄潭各地企业和个人服务,联系电话:18980820575
#include
time.h
#include
stdio.h
int
GetWeekDay(int
nYear,int
nMon,int
nDay,
int
*npWeekDay);
int
main()
{
int
nMyWeekDay;
int
nResult;
nResult
=
GetWeekDay(2007,1,10,nMyWeekDay);
return
0;
}
//输入日期,返回星期的C语言函数
int
GetWeekDay(int
nYear,int
nMon,int
nDay,
int
*npWeekDay)
{
int
nRetVal
=
0;
time_t
tMyDateTime;
struct
tm
tmMyDate,*tmpMyDate;
if((nYear1900||nYear=3000)
||
(nMon1
||
nMon12)
||
(nDay1||nDay31)
)
{
nRetVal
=
1;
*npWeekDay
=
-1;
return
nRetVal;
}
//memset(tmMyDate,0,sizeof(struct
tm));
tmMyDate.tm_year
=
nYear-1900;
tmMyDate.tm_mon
=
nMon-1;
tmMyDate.tm_mday
=
nDay;
tmMyDate.tm_hour
=16;
tmMyDate.tm_min
=30;
tmMyDate.tm_sec
=30;
tMyDateTime
=
mktime(tmMyDate);
if(tMyDateTime0)
{
nRetVal
=
1;
*npWeekDay
=
-1;
return
nRetVal;
}
tmpMyDate
=
localtime(tMyDateTime);
*npWeekDay
=
tmpMyDate-tm_wday;
return
nRetVal;
}
#includestdio.h
#includestring.h
int main()
{
int i;
char *day[7]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
scanf("%d", i);
if(i0||i6)
{printf("error");}
else
{printf("%s", day[i]); }
retunr 0;
}
#include
"stdio.h"
#include
"conio.h"
main()
{
int
day,month,year,sum,leap;
printf("\nplease
input
year,month,day\n");
scanf("%d,%d,%d",year,month,day);
switch(month)
/*先计算某月以前月份的总天数*/
{
case
1:sum=0;break;
case
2:sum=31;break;
case
3:sum=59;break;
case
4:sum=90;break;
case
5:sum=120;break;
case
6:sum=151;break;
case
7:sum=181;break;
case
8:sum=212;break;
case
9:sum=243;break;
case
10:sum=273;break;
case
11:sum=304;break;
case
12:sum=334;break;
default:printf("data
error");break;
}
sum=sum+day;
/*再加上某天的天数*/
if(year%400==0||(year%4==0year%100!=0))
/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1month2)
/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It
is
the
%dth
day.",sum);
getch();
}
#include stdio.h
void main(){
int date;
char week[7][3]={"六","天","一","二","三","四","五"};
scanf("%d",date);
if(date=1date=30)
{
date-=11;
while(date0) date+=7;
printf("星期%s",week[date%7]);
}
else printf("输入日期有误!");
}
//运行示例:
先做一个函数,计算1900年1月1日到该天的天数,然后用膜除求出星期几并输出。
具体代码如下:
#include stdio.h
#include stdlib.h
int Day(int y,int m,int d);
int main(int argc, char *argv[]) {
int i; //循环变量
int year,month,day; //读取用户输入的年月日
int days; //储存从1900-1-1到该天的天数
int week=0; //储存求余后的星期
//字符串组合输出星期
char b[]={"星期"};
char c[7][4]={"日","一","二","三","四","五","六"};
loop:printf("请输入年 月 日:(空格分隔)\n");
scanf(" %d%d%d",year,month,day);
days=Day(year,month,day);
//增强程序的健壮性
if(days==-1)
{
printf("输入格式有误,");
fflush(stdin); //防止用户输入字母等其他非数字字符
goto loop;
}
else
{
week=days%7; //用求余计算星期几
printf("%d年%d月%d日是%s%s\n",year,month,day,b,c[week]);
}
system("pause");
return 0;
}
//函数功能:输入年月日,输出1900-1-1到该天的天数,-1位输入不合法
int Day(int y,int m,int d)
{
int i;
int r=0; //储存1900到该天的闰年个数
int a[]={31,28,31,30,31,30,31,31,30,31,30}; //m给每出月的天数
if(y=1900 m0 m13 d0 d32)
{
for(i=1900;i=y;i++) //计算闰年的个数
{
if(i%400==0||i%100!=0i%4==0)
r++;
}
for(i=0;im-1;i++) //统计当年1月1日到当月的天数
{
d+=a[i];
}
if((y%400==0||y%100!=0y%4==0)m3) //如果当年是闰年但不到二月就不能算进去
r--;
return 365*(y-1900)+r+d;
}
else
return -1;
}