计算某天是某年的第几天

考察C语言的结构体

  1 /**
  2  * Copyright (c) 1991 - 2016 Arvin Tang.
  3  * All rights reserved.
  4  *
  5  * 文件名称:谭浩强_C语言教程_第九章_用户自己建立数据类型_课后第1题
  6  * 简要描述:定义结构体变量,计算该日是本年中的第几天。注意闰年的问题
  7  *
  8  * 当前版本:1.0.0
  9  * 作    者:
 10  * 完成日期:2016-1-13
 11  * 修订说明:
 12  *
 13  * 取代版本:
 14  * 作    者:
 15  * 完成日期:
 16  * 修订说明:
 17  */
 18
 19 /**
 20  * 版本说明:目前我们采用的版本号规则为:v x.y.z。如:v 1.2.43
 21  * x表示程序发生重大改动。通常为程序核心层的重大调整,程序极有可能不向后兼容。同时,y和z的数值会被重置为0。
 22  * y表示程序引入了新功能。
 23  * z表示修复程序的错误。
 24  */
 25
 26 # include <stdio.h>
 27 //# include <malloc.h>
 28 # include <stdlib.h>//里含有exit()函数和malloc()函数
 29
 30 typedef struct
 31 {
 32     int year;//年
 33     int month;//月
 34     int day;//日
 35 }DATE;//定义日期结构体变量
 36
 37 //函数声名
 38 int is_run(DATE);//闰年判断
 39 void date_export(int, DATE);//某天输出
 40
 41
 42 int main(int argc, char const *argv[])
 43 {
 44     DATE var;
 45
 46     printf("请输入你要查询的日期:\n");
 47     printf("年:\n");
 48     scanf("%d", &var.year);
 49     printf("月:\n");
 50     scanf("%d", &var.month);
 51     printf("日:\n");
 52     scanf("%d", &var.day);
 53
 54     int s = is_run(var);
 55     date_export(s, var);
 56
 57     system("pause");
 58
 59     return 0;
 60 }
 61
 62 /**
 63  * 函数名称:闰年判断
 64  * 输入参数:
 65  * 输出参数:
 66  * 返 回 值:闰年返回真,平年返回假(闰年2月29天,平年2月28天)
 67  */
 68 int is_run(DATE var)
 69 {
 70     int temp = var.year;
 71
 72     if ((temp % 4 == 0 && temp % 100 != 0) || temp % 400 == 0)
 73     {
 74         return 1;
 75     }
 76     else
 77     {
 78         return 0;
 79     }
 80 }
 81
 82 /**
 83  * 函数名称:某天输出
 84  * 输入参数:
 85  * 输出参数:
 86  * 返 回 值:闰年返回真,平年返回假(闰年2月29天,平年2月28天)
 87  */
 88 void date_export(int s, DATE var)
 89 {
 90     int month = var.month;
 91     int day = var.day;
 92     int num;//定义天数
 93
 94     if (s)
 95     {
 96         switch(month)
 97         {
 98             case 1 ://31天
 99             num = day;
100             break;
101             case 2 ://29天
102             num = 31 + day;
103             break;
104             case 3 ://31天
105             num = 60 + day;
106             break;
107             case 4 ://30
108             num = 91 + day;
109             break;
110             case 5 ://31
111             num = 121 + day;
112             break;
113             case 6 ://30天
114             num = 152 + day;
115             break;
116             case 7 ://31天
117             num = 182 + day;
118             break;
119             case 8 ://31天
120             num = 213 + day;
121             break;
122             case 9 ://30
123             num = 244 + day;
124             break;
125             case 10 ://31
126             num = 274 + day;
127             break;
128             case 11 ://30
129             num = 305 + day;
130             break;
131             case 12 ://31
132             num = 335 + day;
133             break;
134         }
135     }
136     else
137     {
138         switch(month)
139         {
140             case 1 ://31天
141             num = day;
142             break;
143             case 2 ://28天
144             num = 31 + day;
145             break;
146             case 3 ://31天
147             num = 59 + day;
148             break;
149             case 4 ://30
150             num = 90 + day;
151             break;
152             case 5 ://31
153             num = 120 + day;
154             break;
155             case 6 ://30天
156             num = 151 + day;
157             break;
158             case 7 ://31天
159             num = 181 + day;
160             break;
161             case 8 ://31天
162             num = 212 + day;
163             break;
164             case 9 ://30
165             num = 243 + day;
166             break;
167             case 10 ://31
168             num = 273 + day;
169             break;
170             case 11 ://30
171             num = 304 + day;
172             break;
173             case 12 ://31
174             num = 334 + day;
175             break;
176         }
177     }
178
179     printf("你输入的日期是%d年中的第%d天\n", var.year,num);
180 }

欢迎大神,指教错误或者更简单的方法。

时间: 2024-12-16 21:29:56

计算某天是某年的第几天的相关文章

黑马程序员--Java基础学习笔记【正则表达式、常用API】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式 正则表达式的组成规则 java.util.regex.Pattern 常见组成规则 字符集合 [abc] a.b.c中任意一个字符 [^abc] 除了a.b.c的任意字符 [a-z] a-z中的任意一个字符 [a-zA-Z0-9] a-z.A-Z.0-9中任意一个字符 [a-z&&[^bc]] a-z中除了b和c以外的任意一个字符 预定义字符集 .任意一个字符 \d 任意一个

如何写出优美的代码——小体会1

1.不要把业务逻辑和非业务逻辑混合 多思考一下,尽量不要有错误的逻辑,和漏掉的情形 常见的逻辑: (1)字符串的为空判断 if(s == null || s.length() <= 0); 如果 String 类型为null, 而去进行 equals(String) 或 length() 等操作会抛出java.lang.NullPointerException. (2)对象是否为空判断 public static boolean isNullOrEmpty(Object obj) { if (o

Java-Class-C:cn.hutool.core.date.DateUtil

ylbtech-Java-Class-C:cn.hutool.core.date.DateUtil 1.返回顶部 2.返回顶部 1.1. import cn.hutool.core.date.DateUtil; 1.2. String dateStr = DateUtil.formatDateTime(new Date()): 1.3. 3.返回顶部 4.返回顶部 1. package cn.hutool.core.date; import java.text.DateFormat; impor

计算某年的第一天是周几

计算某年的第一天是周几 在最近做的一个项目中需要一个计算任意一天是周几的算法,而这个算法的难点在于计算这个月所在的这一年的第一天是周几,只要知道了这一年的第一天是周几,只要算出这天和这年第一天之间有多少天在对7做取模运算就可以轻易算出这一天是周几,这样问题就转换到了计算这一年的第一天是周几的问题. 这里先补充一个常识,就是公元1年第一天是周一.在知道这个之后我们只要计算出这一年第一天到公元一年第一天之间有多少天的问题. 设要求的年份为y,这一年第一天到公元一年第一天之间有n天: 假设没有闰年和平

C#关于日期 月 天数 和一年有多少周及根据某年某周获取时间段的计算

/// 当前月有多少天        /// </summary>        /// <param name="y"></param>        /// <param name="m"></param>        /// <returns></returns>        public static int HowMonthDay(int y, int m)      

计算某年各月的天数

只是小的进步,毕竟是自己想出来的,保留下来,以鼓励自己继续努力: #include <stdio.h> int isLeap(int y); int dofm(int m, int y); int main(void) { /* 测试月份的第一位和第四位,异或为1代表大月31天,反之30天  int a=0; for(a=1; a<=12; a++) printf("%x,%x,%x\n", (a & 8)>>3, a & 1, ((a &

Js获取当前日期时间+日期印证+判断闰年+日期的天数差+日期格式化+JS判断某年某月有多少天

Js获取当前日期时间+日期验证+判断闰年+日期的天数差+日期格式化+JS判断某年某月有多少天 字符串转日期型+Js当前日期时间+日期验证+判断闰年+日期的天数差+日期格式化+日期所在年的第几周 日期时间脚本库方法列表Date.prototype.isLeapYear 判断闰年Date.prototype.Format 日期格式化Date.prototype.DateAdd 日期计算Date.prototype.DateDiff 比较日期差Date.prototype.toString 日期转字符

c#经典题目-- 年、周、日期计算

/// /// 获取一年中指定的一周的开始日期和结束日期.开始日期为星期一. /// /// /// 年(1 到 9999) /// 周(1 到 53) /// 确定首周的规则 /// 当此方法返回时,则包含参数 year 和 weeks 指定的周的开始日期的 System.DateTime 值:如果失败,则为 System.DateTime.MinValue.如果参数 year 或 weeks 超出有效范围,则操作失败.该参数未经初始化即被传递. /// 当此方法返回时,则包含参数 year

08--MOOC--C/C++ 根据年月日计算星期几——蔡勒公式篇

C/C++ 根据年月日计算星期几——蔡勒公式篇 蔡勒公式  蔡勒(Zeller)公式:是一个计算星期的公式.随便给一个日期,就能用这个公式推算出是星期几.蔡勒公式如下:W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1或者是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下:w:星期: w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六c:世纪-1(前两