小编在网站上寻找这道题的答案的时候,发现有的人使用switch进行月份天数的赋值,结果就是代码好长,连看下去的欲望都没有了,小编在做这道题的时候觉得用数组对月份赋值会简单很多。
话不多说,直接上码
#include<stdio.h>
//定义一个判断闰年平年的函数
int leap(int b);
int main()
{
//先定义一个数组对月份的天数进行初步定义
int mouth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int x,y,z,sum=0;
scanf("%d%d%d",&x,&y,&z);
/*判断输入的年数是否为闰年,
如果是闰年,对mouth[1]重新赋值29,
否则赋值28*/
if(leap(x))
mouth[1]=29;
else
mouth[1]=28;
//用循环来对天数进行累加,对所输入的月份不累加
for(int i=0;i<y-1;i++)
sum+=mouth[i];
//对于所求月份用上边的sum加上输入的天数
sum+=z;
printf("您所输入的日期是本年的第%d天",sum);
return 0;
}
//对判断是否为闰年的函数说明
int leap(int b)
{
if((b%400==0)||((b%4==0)&&(b%100!=0)))
return (1);
else
return (0);
}
小编的代码不是很多,只是注释有些多哈!!!
小编在最开始做这道题的时候也是做错了,最后在PTA这个网站上跑了一下才发现存在了一些bug,不是打广告哈!!!大家可以去PTA这个网站上做一些题,单纯的说提交后它会对你做的程序跑一遍,和他已有的答案对比,就是通过大量数据判断程序是否存在bug,小编就是通过它的一些测试点答案错误才发现疏漏。