用C语言写的万年历---亲手写的。好累哦
#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("\n\n---------******* %d *******------------\n",a);
search_month(year,a);
}
printf("---------*********************------------\n\n\n");
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("---------*********************------------\n\n\n");
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("---------*********************------------\n\n\n");break;
case 4:exit(0);
printf("---------*********************------------\n\n\n");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("\n\n\t\t----------------------------------------\n");
printf("\t\t|--------------------------------------|\n");
printf("\t\t| %d. 输出某年的日历 |\n",i);
printf("\t\t| %d. 输出某月的日历 |\n",i+1);
printf("\t\t| %d. 查询某日是星期几 |\n",i+2);
printf("\t\t| %d. 退出系统 |\n",i+3);
printf("\t\t|--------------------------------------|\n");
printf("\t\t----------------------------------------\n\n");
}
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("你所要查询的日期是%s\n",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("%s\n",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);
}
用C语言写的万年历---亲手写的。好累哦相关推荐
- 用c语言写一个万年历代码
好的,这是一个使用 C 语言编写的万年历代码的示例: #include <stdio.h> #include <time.h>int main() {time_t t = ti ...
- 学了C语言,如何利用CURL写一个下载程序?—用nmake编译CURL并安装
在这一系列的前一篇文章学了C语言,如何为下载狂人写一个磁盘剩余容量监控程序?中,我们为下载狂人写了一个程序来监视磁盘的剩余容量,防止下载的东西撑爆了硬盘.可是,这两天,他又抱怨他的下载程序不好用,让我 ...
- c语言程序输入n个数字排序,请问,C语言能人请进,用写一个程序,要求输入N个整数,按从小到大的顺序输出,就说说...
导航:网站首页 > 请问,C语言能人请进,用写一个程序,要求输入N个整数,按从小到大的顺序输出,就说说 时间:2016-12-18 用写一个程序,要求输入N个整数,按从小到大的顺序输出,就说说思 ...
- 我的Go+语言初体验——Go+语言构建神经网络实战手写数字识别
"我的Go+语言初体验" | 征文活动进行中- 我的Go+语言初体验--Go+语言构建神经网络实战手写数字识别 0. 前言 1. 神经网络相关概念 2. 构建神经网络实战手写数字识 ...
- C语言输入end时结束程序,c语言输入eof结束怎么写
1.C语言里的EOF(结束程序)怎么用 在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file).在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件 ...
- c语言编程求lnx怎么写,c语言里ln怎么写
C语言写多项式相加怎么写? 分都不给.算了,以前写了个就给你吧./*此程序结构比较清晰,用单链表实现了多项式的加法.具体原理可以参考清华大学严蔚敏数据<结构C语言版>第二章注意:此程序假设 ...
- 代写python作业 费用_代写Python or R作业、代做Python语言程序作业、代写Longitude留学生作业...
代写Python or R作业.代做Python语言程序作业.代写Longitude留学生作业 日期:2018-11-13 10:19 Your task is to run some analysi ...
- 使用java语言基于SMTP协议手写邮件客户端
使用java语言基于SMTP协议手写邮件客户端 1. 说明 电子邮件是互联网上常见的应用,他是互联网早期的产品,直至今日依然受到广大用户的喜爱(在中国可能因为文化背景不同,电子邮件只在办公的时候常用) ...
- 【openai】请帮我设计一个通用的ERP管理系统,涉及到的表结构用mysql语言表达出来,全部写出来
背景 这周末把openAi集成到自己的web系统里面了 尝试提问了几个技术和日常问题,感觉回答的还不错 问题1:[请帮我设计一个通用的ERP管理系统,涉及到的表结构用mysql语言表达出来,全部写出来 ...
最新文章
- 【ACM】杭电OJ 2030
- 非著名架构师告诉你,代码该如何写,才能自己写的容易别人看的也不痛苦
- 全国大学生智能车竞赛申请沁恒RISC-V MCU样品说明
- python3中format方法_[翻译]python3中新的字符串格式化方法-----f-string
- 每日一题(40)—— 字符串常量
- Java前端笔记-后端Springboot,前端vue,Nginx使前后端分离
- Java使用swagger时显示实体类注解问题
- 【SpringMVC学习11】SpringMVC中的拦截器
- Hive实现笛卡尔积
- 搅拌反应釜cad图纸_搅拌式反应釜设计(三维SW)【全套含有CAD图纸三维建模】...
- Frechlet Inception Distance(FID)快速入门、使用、代码
- intellij IDEA 中,.properties文件unicode转中文
- 新东方 词根词缀 excel_词根词缀记忆英语单词,高效,不易遗忘
- 上众筹,智能手环走“全民路线”破局?
- Oracle 精编实用手册
- matlab导入表格画图,matlab从excel表格导入数据画图-在matlab上如何导入excel表格然后画图...
- 鸿蒙第二批升级时间,鸿蒙系统第二批升级名单_鸿蒙系统第二批有哪些手机可以升级...
- QPython+uiautomator2安卓手机自动化脚本编写
- PCB设计十条黄金法则
- c primer plus第六版 第七章
热门文章
- 第四百一十六天 how can I 坚持
- linux发行版本在这里。
- window7共享xp或者2003的文件设置
- [推荐] 创业者要留意优先清算权
- 计算机word考试试题答案,计算机word考试-试题1(附答案解析).doc
- hdu4038贪心(最快上升倍率,好题)
- hdu4784 不错的搜索( 买卖盐,要求整钱最多)
- 【Linux 内核】Linux 内核体系架构 ( 进程调度 | 内存管理 | 中断管理 | 设备管理 | 文件系统 )
- 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 反射获取 IActivityManager 对象 )
- 【MATLAB】变量 ( 变量引入 | 变量类型 )