- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序:给出年、月、日,计算该日是该年的第几天。
用户从键盘中输入年、月、日,在屏幕上输出显示该日期是该年的第几天。
思路:
1、判断输入的年份是否是闰年。闰年的判别条件是能被4整除,但不能被100整除;或者能被400整除。
2、求此日期是该年的第几天。这里将12个月每个月的天数存在数组中,并且采用两个数组分别保存平年和闰年的每个月的天数。计算日期是第几天时,只需要累计月份之前每个月的天数,再加上输入的日数。
代码:
int leap(int a) /*自定义函数leap用来指定年份是否为闰年*/
{
if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) /*闰年判定条件*/
{
return 1; /*是闰年返回1*/
}
return 0; /*不是闰年返回0*/
}
int number(int year, int m, int d) /*自定义函数number计算输入日期为该年第几天*/
{
int sum = 0, i;
int a[12] =
{
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
}; /*数组a存放平年每月的天数*/
int b[12] =
{
31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
}; /*数组b存放闰年每月的天数*/
if (leap(year) == 1) /*判断是否为闰年*/
{
for (i = 0; i < m - 1; i++)
{
sum += b[i]; /*是闰年,累加数组b前m-1个月份天数*/
}
}
else
{
for (i = 0; i < m - 1; i++)
{
sum += a[i]; /*不是闰年,累加数组a钱m-1个月份天数*/
}
}
sum += d; /*将前面累加的结果加上日期,求出总天数*/
return sum; /*将计算的天数返回*/
}
int main(){
int year, month, day, n; /*定义变量为基本整型*/
cout << "请输入年月日:";
cin >> year;
cin >> month;
cin >> day; /*输入年月日*/
n = number(year, month, day); /*调用函数number*/
cout << "第" << n << "天" << endl2;
return 0;
}
计算某日在本年中的第几天问题
前言:这是C语言程序设计第五版【谭浩强】章节对应的习题,从第十章开始,逆序回写。力求程序思路简明,会比参考答案更加通俗易懂且易上手,代码更加规范的同时也会标上相关注释。若有纰漏,请指正。本文为第九章课后习题(9.1-9.2)。本系列累计已完成代码行数:678
9.1 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
解题思路:
正常年份每个月中的天数是已知的,只要给出日期,算出该日在本年中是第几天是不困难的。
用一个日期数组保存每一月的天数,二月的天数记为28天,后面根据输入的时间确定是否是闰年的二月,如果是,天数在加1。
判断闰年还是平年:能被4或400整除但不能被100整除的都是闰年,其余的年份均为平年。例如2000年是闰年,2100年不是闰年。
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
struct Date
{
int year;
int month;
int day;
};
int main(int argc,char *argv[])
{
fun9_1();
return 0;
}
void fun9_1(void)
{
struct Date data;
int i =0;
int days =0;//统计的天数
int Days[13]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
/*
用一个日期数组保存每一月的天数,二月的天数记为28天
1月份:Days[1] = 31
2月份:Days[2] = 28
3月份:Days[3] = 31
4月份:Days[4] = 30
以此类推
*/
printf("please input data(eg:2022/04/
计算机三级持证人
从事多年企业管理、在团队建设、员工培训、营销提升、组织架构有多自己的经验,希望在这个平台分享及帮助更多的公司或企业!
1亿VIP精品文档
相关文档
最近下载
- 新《水利工程施工技术》考试题库(500题).pdf
- 2023《基于2018-2022年数据的格力电器公司盈利能力分析报告》11000字.doc
- 16-实变函数论与泛函分析(上册·第二版修订版)-夏道行--2010.pdf VIP
- 1110《工程地质》国家开放大学期末考试题库(最新)[笔试+机考+一网一].pdf VIP
- 申纪兰先进事迹学习PPT申纪兰的故事学习PPT课件(带内容).pptx
- 江苏省苏州市2022年中考物理试卷解析版.docx VIP
- 五年级上册数学教案-组合图形的面积 北师大版 (3).doc VIP
- 16BJZ58 BM轻集料连 锁砌块.pdf
- GB∕T 43500-2023安全管理体系 要求.docx
- 电影《长安三万里》PPT课件.ppt VIP
文档评论(0)