所在年第几天

文章目录


前言

大部分计算机语言的初学者都可能会遇到让求出日数的oj题目,而一个好的思路往往能够利用简单的知识解决一些看起来复杂的问题

一、输入什么?

则首先应该输入三个整型的数,再进行进一步计算。 

二、思考过程

1.判断是否是闰年

可以由闰年的定义进行判断: 

如果是100的倍数则必须是400的倍数才是闰年,如果不是100的倍数则若是4的倍数则是闰年。

#include  <stdio.h>

int main(void)

{

int x;

scanf("%d",&x);

if(x%100==0)

{
if(x%400==0)

printf("闰年");

else

printf("不是闰年");

}

else

{

if(x%4==0)

printf("闰年");

else

printf("不是闰年");

}

return 0;

}

2.进行分析

每个月只有二月的天数是不确定的,其余的天数都是已知,只是需要按照次序进行相加即可,

可以利用switch语句的特点进行相加;

代码如下:

#include <stdio.h>
int a_(int x);
int main(void)
{
	int a,b,c,sum=0;
	scanf("%d%d%d",&a,&b,&c);//输入年。月。日
	b--;//月份减去一是完整地度过的每个月
	switch(b)
	{
		case 11:sum+=30;
		case 10:sum+=31;
		case 9 :sum+=30;
		case 8 :sum+=31;
		case 7 :sum+=31;
		case 6 :sum+=30;
		case 5 :sum+=31;
		case 4 :sum+=30;
		case 3 :sum+=31;
		case 2 :if(a_(a)==0)  sum+=28;  else sum+=29;//判断是否是闰年,并进行相加
		case 1 :sum+=31;  break;//直到加到一月为止
		 
	}
	printf("%d",sum+c);//并将这个月度过的天数加上
	
	
	return 0;
}
//作为函数进行使用判断是否是闰年
int a_(int x)
{
	if(x%100==0)//判断是否是100的倍数
	{
		if(x%400==0)//进一步进行判断是否能被400除尽
		{
			return 1;
		}
		else
		return 0;
	}
	else//如果不是100的倍数,则直接进行判断是否能被4除尽
	{
		if(x%4==0)
		{
			return 1;
		}
		else
		return 0;
	}
	
}

总结

switch语句若是平常使用应该在每一个语句后加上break,但是,我们应该有自己对计算机语句的真正理解,不断尝试,相信总能写出让自己满意的代码的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值