用C语言写的万年历---亲手写的。好累哦
时间:2022-04-23
本文章向大家介绍用C语言写的万年历---亲手写的。好累哦,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define str " SUN MON TUE WED THU FRI SAT "
void menu(); //操作菜单
int leap(int year); //判断某年是不是闰年
int days_month(int year,int month); //返回某月的天数
int someday(int year,int month,int day); //计算某天是星期几
void search_month(int year,int month); //输出某月的日历
void search_someday(int year,int month,int day); //查询某日是星期几
int main()
{
int i,year,month,day;
int k1,k2,k3,k4; //用于判断输入的数据和操作是否正确,1代表正确,0代表错误
int a = 1;
menu();
do
{
printf("请输入你要进行的操作(1-4):");
scanf("%d",&i);
getchar();
switch(i)
{
case 1:
printf("请输入你要查询的年份:");scanf("%d",&year);
for(a;a<=12;a++)
{
printf("nn---------******* %d *******------------n",a);
search_month(year,a);
}
printf("---------*********************------------nnn");
break;
case 2:
printf("请输入您所要查询的相关信息.n");
printf("年份:");scanf("%d",&year);
printf("月份:");scanf("%d",&month);
k1=1;
while(k1)
{
if(month>12||month<1)
{
printf("你输入的月份有误,请重新输入!n");
printf("月份:");
scanf("%d",&month);
if(month<1||month>12) k1=1;
}
else k1=0;
}
search_month(year,month);
printf("---------*********************------------nnn");
break;
case 3:
printf("请输入你要查询的日期n");
printf("年份:");scanf("%d",&year);
printf("月份:");scanf("%d",&month);
k2=1;
while(k2)
{
if(month>12||month<1)
{
printf("你输入的月份有误,请重新输入!n");
printf("月份:");
scanf("%d",&month);
if(month<1||month>12) k2=1;
}
else k2=0;
}
// printf("%d年%d月有%d天n",year,month,days_month(year,month)); 调试观察输入的日期是否有误,可忽略
printf("日期:");scanf("%d",&day);
k3=1;
while(k3)
{
if(day>days_month(year,month)||day<1)
{
printf("你输入的日期有误,请重新输入!n");
printf("日期:");
scanf("%d",&day);
if(day>days_month(year,month)||day<1) k3=1;
}
else k3=0;
}
search_someday(year,month,day);
printf("---------*********************------------nnn");break;
case 4:exit(0);
printf("---------*********************------------nnn");break;
default:
k4=1;
while(k4)
{
printf("你输入的数据有误,请重新输入你要进行的操作(1-4):");
scanf("%d",&i);
if(i<1||i>4) k4=1;
else k4=0;
}
break;
}
}while(i>0&&i<5);
return 0;
}
void menu()
{
int i=1;
printf("nntt----------------------------------------n");
printf("tt|--------------------------------------|n");
printf("tt| %d. 输出某年的日历 |n",i);
printf("tt| %d. 输出某月的日历 |n",i+1);
printf("tt| %d. 查询某日是星期几 |n",i+2);
printf("tt| %d. 退出系统 |n",i+3);
printf("tt|--------------------------------------|n");
printf("tt----------------------------------------nn");
}
int leap(int year)
{
if((year%4==0&&year%100!=0)||year%400==0) return 1;
else return 0;
}
int days_month(int year,int month)
{
int days_month;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: days_month = 31;break;
case 4:
case 6:
case 9:
case 11:days_month = 30;break;
case 2:
if(leap(year)==1)
{
days_month = 29;break;
}
else days_month = 28;break;
}
return days_month;
}
int someday(int year,int month,int day)
{
//该函数运用了特殊的计算公式,详细可参见 http://blog.163.com/hexin_mars_blog/blog/static/248215040201571351115699/
int someday,m,n,i; //someday表示查询的日子是星期几
m=year-year/1000*1000;
n=m-m/100*100-1; //用于获得年份的后两位数
int days=0;
for(i=1;i<month;i++) days = days + days_month(year,i);
days =days + day;
someday = (n + n/4 - n/100 + n/400 + days)%7;
return someday;
}
void search_someday(int year,int month,int day)
{
char weekname[20];
switch(someday(year,month,day))
{
case 0:strcpy(weekname,"星期天") ;break;
case 1:strcpy(weekname,"星期一") ;break;
case 2:strcpy(weekname,"星期二") ;break;
case 3:strcpy(weekname,"星期三") ;break;
case 4:strcpy(weekname,"星期四") ;break;
case 5:strcpy(weekname,"星期五") ;break;
case 6:strcpy(weekname,"星期六") ;break;
}
printf("你所要查询的日期是%sn",weekname);
}
void search_month(int year,int month)
{
int i=0,j,k=0,m; //j用于记录某月的第一天是星期几 m用于记录某月的天数 k用于换行提示
char x[10]=" ";
m=days_month(year,month);
j=someday(year,month,1);
//输出某月的日历
printf("------------------------------------------n");
printf("%sn",str);
for(;i<j;i++)
{
printf("%s",x);k++;
}
for(i=1;i<=m;i++)
{
k++;
if(k%7==0)
{
if(i<10)
{
printf(" %d ",i);
printf("n");
}
else if(i>=10)
{
printf(" %d ",i);
printf("n");
}
}
else
{
if(i<10)
{
printf(" %d ",i);
}
else if(i>=10)
{
printf(" %d ",i);
}
}
}
printf("n------------------------------------------n");
}
void exit()
{
exit(0);
}
- python3 解码base64遇到的问题与解决
- TensorFlow从0到1 - 16 - L2正则化对抗“过拟合”
- 使用虚拟环境,搭建python3+scrapy
- Matplotlib基础全攻略
- Python 小爬虫 - 爬取今日头条街拍美女图
- python3使用zookeeper和私钥解密及编码转化配置信息
- Python中os.path.dirname(__file__)的用法
- TensorFlow从0到1 - 18 - TensorFlow 1.3.0安装手记
- Python + Splinter 实现浏览器自动化操作入门指南
- 动态地理信息可视化——leaflet在线地图简介
- python中的递归函数
- 对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析
- 玩转数据地图系列之——地图上的迷你条形图
- 树上倍增求LCA及例题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法