万年历的C语言实现

// Zeller公式确定星期几,w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

// y是年份取最后两位,c是世纪减1,m是月份,如果m是1月和2月,则m换成13和14,d是日期,[]表示取整,w除以7之后的余数就是星期几,如果余数为0,就是星期日

#include <stdio.h>

int main()

{

int year, month, y;

printf("请输入年:\n");

scanf("%d", &year);

if (year < 1900)

{

printf("年必须大于1900\n");

exit(-1);

}

y = year;

int c = y;

y %= 100;

c /= 100;

int m;

printf("请输入月:\n");

scanf("%d", &month);

if ((month < 0) || (month > 12))

{

printf("月在1--12之间\n");

exit(-1);

}

m = month;

if (1 == m)

{

m = 13;

}

if (2 == m)

{

m = 14;

}

int d;

printf("请输入日期:\n");

scanf("%d", &d);

if ((d < 0) || (d > 31))

{

printf("日期必须在1和31之间\n");

exit(-1);

}

int w =

y + (int)y / 4 + (int)c / 4 - 2 * c + (int)(26 * (m + 1) / 10) + d - 1;

w %= 7;

char r[20];

switch (w)

{

case 0:

sprintf(r,"%s","星期天");

break;

case 1:

sprintf(r,"%s","星期一");

break;

case 2:

sprintf(r,"%s","星期二");

break;

case 3:

sprintf(r,"%s","星期三");

break;

case 4:

sprintf(r,"%s","星期四");

break;

case 5:

sprintf(r,"%s","星期五");

break;

case 6:

sprintf(r,"%s","星期六");

break;

default:

exit(-1);

}

printf("\n%d-%d-%d:%s\n", year, month, d, r);

return 0;

}

时间: 2024-10-07 05:59:55

万年历的C语言实现的相关文章

万年历(C语言版)

#include <stdio.h> //判断输入的年份是否是闰年 int IsLeap(int year) { if((year%400==0) || ((year%4==0)&&(year%100!=0))) return 1; else return 0; } int Day[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //计算一个月的最大天数(上一个月) int Max_day(int year,int month) { if(

C语言可以开发哪些项目?(转)

原文地址:https://www.cnblogs.com/shiyanlou/p/6098661.html 知乎:https://www.zhihu.com/question/20564904 C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中--,这些迷茫也导致了我们在学习的过程中不知道如何学.学什么,所以,总结这个列表,希望对C语言初学者可以有所帮助~ C语言可以做什么? 从最简单

万年历算法的实现(C语言--gcc编译)

/** cal.c * * 现行的格里历是从儒略历演化而来的.儒略历每4年一个润年,润年366天,平年365天.* 如果从公元1年算的话,那么凡是能够被4整除的都是润年.从天文角度看,儒略历这种 * 历法是有误差的,到16世纪误差已经达到了10天.1582年,罗马教皇对儒略历进行了 * 一次校定,该年的10-5到10-14这10天被抹掉,并规定凡不能被400整除的世纪年不再 * 算为润年,校定之后的儒略历即为现行的格里历. * * 但是英国直到1752年才开始使用格里历,此时时间误差已经达到了1

[C语言练习]万年历加强版

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 /**  * @copyright 2011 Chunhui Wang  *  *

用一门非常小众的语言REBOL写日历(万年历)打印的程序

先上效果图由于课程设置,选修了一门非常非常小众的REBOL语言的程序设计概论,就自己观点来看,这门语言小众,语法晦涩,教材也不太好,书中作者试图一直把我们以门外汉这样灌输知识给我们,我觉得这点作者做的不是特别好,比如说流行语言中的变量,用书中作者的话就变成了单字...赋值就是设字...这看来非常的不专业,而且某种程度上貌似在拐弯,这是我对这本教材不能接受的地方.当然,对于初学者来说,这无可厚非.欸,怪我怪我,来了这么渣的专业,全机电学大物3,就我们班学大物2(2比3难),你说一堆搞机器人的学的比

【C语言】第一个C语言小程序 —— 日期算法和万年历

1. 写了个万年历的功能练练手.还没有写交互的代码,只是把方法写完了.先给出头部和方法签名 #include<stdio.h> #define DAYS_PER_WEEK 7 #define MONTHS 12 #define DATE_HEADER " Sun Mon Tues Wed Thur Fri Sat" int get_days(int, int, int); //返回从公元元年算起,某年某月某日是第几天, 用这个数字算星期几 int days_of_year(

初识C语言控制台版万年历

任务:使用C完成控制台版万年历 从控制台输入年份和月份,然后显示该月日历. 使用分支和循环结构完成. 提示: 1.1900年1月1日是星期一 2.计算输入的月份的1月1日距离1900年1月1日有多少天 3.输入月份的1月1日是星期几 = 得到的总天数 % 7 4.然后根据下图可以看出,该月的1号是星期几,我们在控制台上,就需要在前面打印几个\t控制符,比如2016年10月1日是星期六,那么前面我们就需要六个\t来制造空格空出来. 具体的实现步骤如下: 1.接收控制台输入的年份和月份 2 . 计算

C语言 万年历程序

原代码: [email protected]:~/c++$ cat 123.c  #include<stdio.h>   #define Mon   1 #define Tues  2 #define Wed   3 #define Thur  4 #define Fri   5 #define Sat   6 #define Sun   0   #define January_days   31 #define February_days   28 #define March_days   

C语言-让生活更美好

1.智能车 1)避障车 2)平衡车 3)WIFI视频车 2.萝莉语音温度播报 3.万年不变的万年历 4.采矿致富车--------------电赛作品--金属探测车 5.基于物联网的家庭安防系统-----九宫格解锁(隔空解锁) 6.基于心理治疗的儿童电子琴 7.蓝牙防丢器 8.操作系统 9.喂水器:(小狗走近就会滴水) 10.喂食器:(小狗走近就会落食) 举几个用c开发的程序例子. QQ notepad(记事本).notepad++.notepad2 pidgin(全平台的聊天软件) apach