文章目录
前言
大部分计算机语言的初学者都可能会遇到让求出日数的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,但是,我们应该有自己对计算机语句的真正理解,不断尝试,相信总能写出让自己满意的代码的。