当前位置:首页 » 编程语言 » c语言月日计算星期几
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言月日计算星期几

发布时间: 2022-10-08 19:54:56

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

#include <stdio.h>
int main()
{
int day,mn,yr,i,days=0,s,k;
int mont[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char wek[][9]={ {'S','u','n','d','a','y'},
{'M','o','n','d','a','y'},
{'T','u','e','s','d','a','y'},
{'W','e','d','n','s','d','a','y'},
{'T','h','u','r','s','d','a','y'},
{'F','r','i','d','a','y'},
{'S','a','t','u','r','d','a','y'}
};
printf("Inpute the date (year-month-day):");
scanf("%d-%d-%d",&yr,&mn,&day);
if (yr%4==0||yr%100==0||yr%400==0)
mont[2]=29;
else
mont[2]=28;
for (i=0;i<mn;i++)
days+=mont[i];
days+=day;
s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days;
k=s%7;
printf("%d-%d-%d is %s.",yr,mn,day,wek[k]);
return 0;
}

⑵ 怎样用C语言程序计算每月的一号是星期几

1、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日为星期一。

2、例程:

#include"stdio.h"
voidCaculateWeekDay(inty,intm,intd)
{
if(m==1||m==2){
m+=12;
y--;
}
intiWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
switch(iWeek)
{
case0:printf("星期一 ");break;
case1:printf("星期二 ");break;
case2:printf("星期三 ");break;
case3:printf("星期四 ");break;
case4:printf("星期五 ");break;
case5:printf("星期六 ");break;
case6:printf("星期日 ");break;
}
}
voidmain()
{
intyear=0,month=0,day=0;
printf("请输入日期: 格式为:1900,1,1 ");
chartemp='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((nYear<1900||nYear>=3000)
||
(nMon<1
||
nMon>12)
||
(nDay<1||nDay>31)
)
{
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(tMyDateTime<0)
{
nRetVal
=
1;
*npWeekDay
=
-1;
return
nRetVal;
}
tmpMyDate
=
localtime(&tMyDateTime);
*npWeekDay
=
tmpMyDate->tm_wday;
return
nRetVal;
}

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

似乎是有时间函数,看看说明
其实弄个语言,主要的是使用中间的函数、工具、各种包,
语言本身比较简单,相对的,而那是不够的,
那些函数,也不都是语言本身写的,

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

先做一个函数,计算1900年1月1日到该天的天数,然后用膜除求出星期几并输出。

具体代码如下:

#include<stdio.h>
#include<stdlib.h>

intDay(inty,intm,intd);

intmain(intargc,char*argv[]){
inti;//循环变量
intyear,month,day;//读取用户输入的年月日
intdays;//储存从1900-1-1到该天的天数
intweek=0;//储存求余后的星期
//字符串组合输出星期
charb[]={"星期"};
charc[7][4]={"日","一","二","三","四","五","六"};

loop:printf("请输入年月日:(空格分隔) ");
scanf("%d%d%d",&year,&month,&day);
days=Day(year,month,day);
//增强程序的健壮性
if(days==-1)
{
printf("输入格式有误,");
fflush(stdin);//防止用户输入字母等其他非数字字符
gotoloop;
}
else
{
week=days%7;//用求余计算星期几
printf("%d年%d月%d日是%s%s ",year,month,day,b,c[week]);
}
system("pause");
return0;
}

//函数功能:输入年月日,输出1900-1-1到该天的天数,-1位输入不合法
intDay(inty,intm,intd)
{
inti;
intr=0;//储存1900到该天的闰年个数
inta[]={31,28,31,30,31,30,31,31,30,31,30};//m给每出月的天数

if(y>=1900&&m>0&&m<13&&d>0&&d<32)
{
for(i=1900;i<=y;i++)//计算闰年的个数
{
if(i%400==0||i%100!=0&&i%4==0)
r++;
}
for(i=0;i<m-1;i++)//统计当年1月1日到当月的天数
{
d+=a[i];
}
if((y%400==0||y%100!=0&&y%4==0)&&m<3)//如果当年是闰年但不到二月就不能算进去
r--;
return365*(y-1900)+r+d;
}
else
return-1;
}

⑹ c语言计算日期为星期几

#include<stdio.h>
int isRn(int num){
if((num%4==0&&num%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(year<1900){
printf("年份必须从1900年开始!\n\n");
printf("请输入年份:");
scanf("%d",&year);
}
printf("请输入月份:");
scanf("%d",&month);
while(month<1||month>12){
printf("月份必须是1到12之间!\n\n");
printf("请输入月份:");
scanf("%d",&month);
}
printf("请输入日:");
scanf("%d",&day);
while(day>monthDay(year,month)||day<1){
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==year&&j==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语言编程(程序怎样编写):给定年、月、日,计算该日是该年的第几天,然后计算该日是星期几。

/**
程序描述:给定年、月、日,计算该日是该年的第几天,然后计算该日是星期几。
*/
#include<stdio.h>

intmon[]={31,28,31,30,31,30,31,31,30,31,30,31};

intleap_year(intn)
{
if(n%400==0||(n%4==0&&n%100!=0))
return1;
else
return0;
}
intcal_dayCount(intyear,intmonth,intday)
{
inti,sum;
for(i=0,sum=0;i<month-1;i++)
sum+=mon[i];
if(month>2)
sum+=day+leap_year(year);
else
sum+=day;
returnsum;
}
intcal_weekday(intyear,intmonth,intday)
{
/**
蔡勒(Zeller)公式
历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式(两个通用计算公式和
一些分段计算公式),其中最着名的是蔡勒(Zeller)公式。
即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公式中的符号含义如下,
w:星期;
c:年的高两位,即世纪-1
y:年的低两位;
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,
比如2003年1月1日要看作2002年的13月1日来计算);
d:日;
[]代表取整,即只要整数部分。

算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。
如果结果是负数,负数求余数则需要特殊处理:
负数不能按习惯的余数的概念求余数,只能按数论中的余数的定义求余。为了方便
计算,我们可以给它加上一个7的整数倍,使它变为一个正数,然后再求余数

以2049年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下:
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26×(10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54(除以7余5)
即2049年10月1日(100周年国庆)是星期5。
*/
inty,c,m,d;
intw;

if(month>=3)
{
m=month;
y=year%100;
c=year/100;
d=day;
}
else/*某年的1、2月要看作上一年的13、14月来计算*/
{
m=month+12;
y=(year-1)%100;
c=(year-1)/100;
d=day;
}
w=y+y/4+c/4-2*c+(26*(m+1))/10+d-1;

if(w<0)/*如果w是负数,则计算余数方式不同*/
{
w=7-(-w)%7;
}
else
{
w=w%7;//如果w等于0,表示为星期天
}
returnw;
}
intmain()
{
intyear,month,day;
intdayCount=0,i;
printf("请输入当前的年,月,日:");
scanf("%d-%d-%d",&year,&month,&day);
printf("该日是该年的第几天:%d ",cal_dayCount(year,month,day));
printf("该日是星期几:%d ",cal_weekday(year,month,day));
return0;
}

示例运行结果:

⑻ c语言知道日期算星期几

//这定义的是一个二维数组(7行10列)
//每一个字符串,比如:"星期天"就是一行,共七个字符。
//汉字占两个字符,所以"星期天"就是7个字符(末尾应该还有一个''结束符)。
//这里的10确实是随便定义的数,但是要保证大于等于7
charstr[7][10]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
intyear,month,day;

//这是定义一个子函数,IsLeapYear也是随便取的,
//但是要符合C语言的命名规范,并且最好有实际意义
intIsLeapYear()
{
if((year%4==0&&year%100!=0)||(year%400==0))
return1;
else
return0;
}

//这和上面一样,定义子函数,名字是随便取的,
//下划线也是符合c语言命名规范的,所以可用
//intm是一个参数,用来保存主函数传递过来的值
intmonth_day(intm)
{
//这是数组初始化的一种格式,由于有初始值列表,
//系统会自动根据初始化数据确定数组大小
//比如这里相当于intmon_day[12]
intmon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};

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

⑼ 用c语言输入日期输出星期几

#include<stdio.h>

intmain(intargc,charconst*argv[])
{
intdata;
scanf("%d",&data);
printf("星期%d ",(data+1)%7+1);
return0;
}