问题描述:输入一个日期,计算这一天是周几,假设年份和月份的天数是一定的,分别是360天和30天,并且已知一个日期。
首先,要解决一个问题,你要知道真正需要求的是什么。
对于这个题,我们要解决的是已知日期和要求日期的天数已知日期和要求日期的先后问题

法一:

首先第一个问题:求已知日期和待求日期之间的天数。

Day = (unknowYear - knowYear) * 360 + (unknowday - knowday) + (unknowMouth - knowMouth) * 30;

然后用一个if结构来判断已知日期和要求日期的先后问题,如果天数是负的,那么就是说明待求日期在前。

下面贴出完整代码:

#include<stdio.h>
#include<stdlib.h>int main()
{int unknowYear,unknowMouth,unknowday;int knowYear=2020, knowMouth=11, knowday=2;//周一int year=0, mouth=0, day=0;int Day=0;int week;printf_s("请输入年 月 日:");scanf_s("%d %d %d", &unknowYear, &unknowMouth, &unknowday);Day = (unknowYear - knowYear) * 360 + (unknowday - knowday) + (unknowMouth - knowMouth) * 30;if (Day >= 0){week = 1 + Day % 7;}else{week = 7 + Day % 7;}printf("%d\n", week);return 0;
}

写在后面

上题的限制条件较多,再写一下符合现实时间的代码。
在此有个限制条件:输入的日期是1971-1-1到2100-12-31之间的日期。
需要注意闰年平年的判定。
解题思路就是计数给定日期距离1971.1.1过去了多少天,即可推算出今天是星期几。
主要代码如下

bool is_leap(int year)//判断闰年
{return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
}char * dayOfTheWeek(int day, int month, int year)
{char* ans[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};int m[12] = {31,28,31,30,31,30,31,31,30,31,30,31};int sum= 0;for(int i = 1971; i < year; i++){sum += is_leap(i)? 366: 365;}for(int i = 0; i < month - 1; i++){sum += m[i];}if(month > 2 && is_leap(year)) //注意大于2月的情况才需要考虑是否要额外加1sum += 1 + day;elsesum += day;return ans[(5 + sum - 1) % 7];//因为1971年1月1日是周五
}

C语言输入一个日期,计算这一天是周几相关推荐

  1. C语言--输入一个日期,输出当前日期是这一年的第几天(完整代码)

    文章目录 介绍 代码如下(部分注释) 执行结果如下 输入错误情况如下 -- 文明 使人进步 -- 介绍 输入一个日期,输出当前日期是这一年的第几天 注意考虑平年闰年问题 2021.3.24 输出:20 ...

  2. java语言显示运算时间_JAVA语言之ACM日期计算:输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天...

    本文主要向大家介绍了JAVA语言之ACM日期计算:输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. ACM日期 ...

  3. 用C语言来实现_输入一个日期(年月日),计算是这一年中的第几天

    1.环境: 2.代码: /* *wuxiuwen  *input date, the date of this year is calculated which day.  *输入一个日期(年月日), ...

  4. c语言编写一个程序计算某年某月有几天,c语言编写程序,输入某年某月,求该月的天数...

    c语言编写程序,输入某年某月,求该月的天数 #包括 voidmain() { 年.月.日: 请输入当前日期(年月以空格分隔): ': 中国年月 而(月=0 | |月12) { cout '输入时间有误 ...

  5. 输入一个日期,计算这个日期与 2018-03-12差多少天;

    #coding=gbk ''' 1.计算输入日期与基准日期的差异天数 2.方法2 利用time包 '''#输入一个日期,计算这个日期与 2018-03-12差多少天: def count_days() ...

  6. java 从控制台输入一个正整数_编程输出该正整数各位数字之和_C语言 从键盘上输入一个正整数,计算并输出该数的各位数字之和...

    点击查看C语言 从键盘上输入一个正整数,计算并输出该数的各位数字之和具体信息 答:思路:定义变量a接受键盘输入和变量sum保存a的各位数字之和,依次对a进行除10操作,并把a除10的余数加到sum中, ...

  7. c++ 输入一个日期,计算出该日期是这一年中的第几天(switch语句)

    c++ 日期计算 系统提示用户输入一个日期(年月日),随后根据用户提供的日期,利用switch语句,计算出该日期是这一年中的第几天.(注意闰年的判断,当日期在2月以后,天数应加一) (大一写的代码,算 ...

  8. 从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天

    /** 从键盘输入一个日期,格式为yyyy-M-d要求计算该日期与1949年10月1日距离多少天例如:用户输入了:1949-10-2程序输出:1用户输入了:1949-11-1程序输出:31 */ im ...

  9. C语言实现输入一个日期,返回第二天的日期

    来源:大工慕课 链接 作者:Caleb Sung 解答示范 其实也可以用函数部分的知识解决,而且也不推荐大家使用goto命令: 本文主要面向C语言初学者,故使用函数之前的知识加以解决: #includ ...

最新文章

  1. 【PHPExcel】设置打印格式
  2. STM32开发 -- 开发环境搭建
  3. layui jquery ajax,url,type,async,dataType,data
  4. HDU6168 Numbers
  5. 吃鸡服务器8月10日维护,《黑潮之上》2021年8月10日不停服维护公告
  6. kibana-7.15.2 一分钟下载、安装、部署 linux
  7. oracle回滚段空间满了,Oracle回滚段表空间文件丢损怎样处理?
  8. JavaScript 基础(三) - Date对象,RegExp对象,Math对象,Window 对象,History 对象,Location 对象,DOM 节点...
  9. MIT6.830 lab2 SimpleDB Operators 实验报告
  10. 帆软报表属性设计基础
  11. 一个开发周期为6个月的中小型软件开发项目成本预算大致表,不足之处请指点...
  12. 美国十大web2.0公司背后的故事
  13. FPGA学习笔记06——数电基础知识
  14. 二进制数的加法步骤解析
  15. 【LibTorch】Microsoft C++ 异常: c10::NotImplementedError,位于内存位置 0x000000E8A9DAEDC0 处。
  16. 蓝桥杯 ALGO-1003 礼物
  17. firebox插件使用笔记
  18. mvn 私服推送jar,并从私服下载jar
  19. python下载夏目友人帳
  20. office word出现“错误!未找到引用源”的错误

热门文章

  1. 生成世界地图并在地图上画圆圈
  2. 不小心删除了gitlab远端分支怎么恢复
  3. 网易云歌单歌曲实时拉取
  4. Java基于ssm的超市多商家系自提系统
  5. 微服务分布式架构中,如何高效收集请求/响应日志
  6. 运动目标检测之帧差法
  7. Redis 性能优化 13 条军规
  8. 清华大学百年校庆给清华大学的一封信
  9. pdm生成java_PowerDesigner通过SQL语句生成PDM文件并将name和comment进行互相转换
  10. es6之扩展运算符 Object.assign和 三个点(...)