栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言:计算今年第几天

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言:计算今年第几天

题目:计算出 x 年 y月 z 日是 x 年的第几天。

           输入:一行三个整数,x,y和 z。(1583≤x≤2100)。数据保证输入合法。

           输出:一个整数,表示是第几天。

注意:要考虑闰年对答案的影响。

思考:首先应该思考如何判别是闰年还是平年,然后考虑每个月是多少天,最后怎么把所有的天数相加

(1)定义并输入问题中的年月日;

int  year, month, day;
	int  s=0;
	scanf("%d%d%d", &year,&month,&day);

(2)其次要知道每个月的天数,平年2月28天,闰年29天,用switch语句进行累加,要注意本月的天数需要占用一个分支,因此case12就是11月的天数,以此类推;

switch(month)
	{
		case12:  s+=30;      
		case 11:  s+=31;      
		case 10:  s+=30;   
		case  9:  s+=31; 
		case  8:  s+=31; 
		case  7:  s+=30;
		case  6:  s+=31; 
		case  5:  s+=30;
		case  4:  s+=31; 
		case  3:  s+=28;      
		case  2:  s+=31;     
		case  1:  s+=day;  
	}

(3)用if语句判别闰年还是平年,条件就是这一年除以400能除尽或者这一年除以4和除以100都能除尽,并进行累加完成输出

if((year%4==0 && year%100!=0 || year%400==0) && month>=3) 
         s++;
	printf("%dn",s);

完整代码:

#include 
int main()
{
	int  year, month, day;
	int  s=0;
	scanf("%d%d%d", &year,&month,&day);
	switch(month)
	{
		case12:  s+=30;      
		case 11:  s+=31;      
		case 10:  s+=30;   
		case  9:  s+=31; 
		case  8:  s+=31; 
		case  7:  s+=30;
		case  6:  s+=31; 
		case  5:  s+=30;
		case  4:  s+=31; 
		case  3:  s+=28;      
		case  2:  s+=31;     
		case  1:  s+=day;  
	}
	if((year%4==0 && year%100!=0 || year%400==0) && month>=3) 
         s++;
	printf("%dn",s);
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/510684.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号