c语言获得星期几的函数 c语言根据日期算星期几

c语言计算日期为星期几

#includestdio.h

福州网站建设公司成都创新互联,福州网站设计制作,有大型网站制作公司丰富经验。已为福州数千家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的福州做网站的公司定做!

int isRn(int num){

if((num%4==0num%400!=0)||num%400==0){

return 1;

}else{

return 0;

}

int monthDay(int year,int month){

if(month==1||month==3||month==5

||month==7||month==8||month==10

||month==12){

return 31;

}else if(month==4||month==6||month==9

||month==11)

{

return 30;

}else if(month==2){

if(isRn(int num)==1){

return 29;

}else{

return 28;

}

}

}

void main(){

int sum=0,year,month,day,i,temp,j;

printf("请输入年份:");

scanf("%d",year);

while(year1900){

printf("年份必须从1900年开始!\n\n");

printf("请输入年份:");

scanf("%d",year);

}

printf("请输入月份:");

scanf("%d",month);

while(month1||month12){

printf("月份必须是1到12之间!\n\n");

printf("请输入月份:");

scanf("%d",month);

}

printf("请输入日:");

scanf("%d",day);

while(daymonthDay(year,month)||day1){

printf("日必须从1开始,并且不能大于该月的天数!\n\n");

printf("请输入日:");

scanf("%d",day);

}

temp=month;

temp-=1;

for(i=1900;i=year;i++){

for(j=1;j=12;j++){

if(i==yearj==temp){

break;

}

sum+= monthDay(year,j);

}

}

sum+=day;

printf("%d年%d月%d日,是星期",year,month,day)

if(sum%7==0){

printf("日。\n");

}else if(sum%7==1){

printf("一。\n");

}else if(sum%7==2){

printf("二。\n");

}else if(sum%7==3){

printf("三。\n");

}else if(sum%7==4){

printf("四。\n");

}else if(sum%7==5){

printf("五。\n");

}else if(sum%7==2){

printf("六。\n");

}

}

c语言知道日期 算星期几

C语言根据日期判断星期几(使用基姆拉尔森计算公式)

算法如下:

基姆拉尔森计算公式

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

在公式中d表示日期中的日数,m表示月份数,y表示年数。

注意:在公式中有个与其他公式不同的地方:

把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

以公元元年为参考,公元元年1月1日为星期一/PREPRE程序如下:

#include "stdio.h"

void CaculateWeekDay(int y,int m, int d)

{

if(m==1||m==2) {

m+=12;

y--;

}

int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;

switch(iWeek)

{

case 0: printf("星期一\n"); break;

case 1: printf("星期二\n"); break;

case 2: printf("星期三\n"); break;

case 3: printf("星期四\n"); break;

case 4: printf("星期五\n"); break;

case 5: printf("星期六\n"); break;

case 6: printf("星期日\n"); break;

}

}

void main()

{

int year=0,month=0,day=0;

printf("请输入日期:\n格式为:1900,1,1\n");

char temp = '1';

while (temp != '0')

{

scanf("%d,%d,%d",year,month,day);

scanf("%c",temp);

CaculateWeekDay(year,month,day);

printf("输入0退出,其他继续:");

scanf("%c",temp);

}

}

C语言:输入任意年月日,求该天是星期几?

注意:本源码中,函数GetWeekDay的返回值仅仅表示输入参数是否“正确/有效”(例如前三个参数使用2001,2,29就是无效参数),能否得到预期的星期值;真正的星期值则是通过输出变量返回给主调函数的。

#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;

}

C语言程序,输入年月日算出当天星期几

先做一个函数,计算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;

}

c语言知道日期算星期几

// 这定义的是一个二维数组(7行10列)

// 每一个字符串,比如:"星期天"就是一行,共七个字符。

// 汉字占两个字符,所以"星期天"就是7个字符(末尾应该还有一个'\0'结束符)。

// 这里的 10 确实是随便定义的数,但是要保证大于等于 7  

char str[7][10]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};

int year,month,day;

// 这是定义一个子函数,IsLeapYear也是随便取的,

// 但是要符合 C 语言的命名规范,并且最好有实际意义

int IsLeapYear() 

if((year%4==0year%100!=0)||(year%400==0)) 

return 1;

else 

return 0;

// 这和上面一样,定义子函数,名字是随便取的,

// 下划线也是符合c 语言命名规范的,所以可用

// int m 是一个参数,用来保存主函数传递过来的值

int month_day(int m) 

{  

// 这是数组初始化的一种格式,由于有初始值列表,

// 系统会自动根据初始化数据确定数组大小

// 比如这里相当于int mon_day[12]

int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};

这些都是基础,还是看看书吧

c语言函数输入xxxxxxxx日期date,计算当天是星期几?

#include stdio.h

#include time.h

int main() {

int year, month, day;

printf("Enter a date (yyyy-mm-dd): ");

scanf("%d-%d-%d", year, month, day);

struct tm tm = {0};

tm.tm_year = year - 1900;

tm.tm_mon = month - 1;

tm.tm_mday = day;

tm.tm_isdst = -1;

time_t t = mktime(tm);

char* weekday[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

printf("%s\n", weekday[localtime(t)-tm_wday]);

return 0;

}

在这段代码中,使用了 time 库中的 mktime 函数和 localtime 函数来将日期转换为时间戳,并使用 tm_wday 字段来计算日期是星期几。


分享题目:c语言获得星期几的函数 c语言根据日期算星期几
网页地址:http://myzitong.com/article/dodeijs.html