解题思路:1、定义结构体,并定义结构体变量

               2、闰年:

普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。

世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)

               3、用if嵌套,看看是否闰年,用循环相加日数.



参考代码:

#include <stdio.h>

#include <string.h>

#include<math.h>

#define PI 3.1415

int main()

{

  int i,d=0;

    struct date

    {

      int year;

      int mouth;

      int day;

    }date1;

    scanf("%d %d %d",&date1.year,&date1.mouth,&date1.day);

      for ( i = 1; i <date1.mouth; i++)

      {

        if (i==1||i==3||i==5||i==7||i==8||i==10||i==12)

        d=d+31;

        if (i==2)

        if(date1.year%4==0&&date1.year%4!=0)

        d=d+29;

        else if(date1.year%400==0)

        d=d+29;

        else

        d=d+28;

        if (i==4||i==6||i==9||i==11)

        d=d+30;

      }

      d=d+date1.day;

       printf("%d",d);

   

    return 0;

}


点赞(0)
 

0.0分

8 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 8 条评论

嘿嘿Ja 5月前 回复TA
@凌辰 所以他的标题是“好磨”“可刀”。
c语言加油 9月前 回复TA
逆天标题
yao 10月前 回复TA
闰年判断if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
落叶 10月前 回复TA
其实可以用一个数组把每个月的天数存起来,2月记为28天,n月m日,累加前(n-1)月的天数再加m,最后再考虑要不要加润年29号那天就行了。
mmmm 11月前 回复TA
@mmmm #include <stdio.h> struct date { 	int year; 	int m; 	int day;	 }y1;  int main() { 	int rd,t=0; 	scanf("%d%d%d",&y1.year,&y1.m,&y1.day); 	 	if(y1.m==1) 	{ 		rd=y1.day; 	} 	else if(y1.m==2) 	{ 		rd=31+y1.day; 	}else if(y1.year%4==0&&y1.year%100!=0||y1.year%400==0) 	{ 		for(t=1;t<y1.m;t++) 		{ 			switch(t) 			{ 				case 1:case 3:case 5:case 7:case 8:case 10:case 12: 					rd+=31;break; 			} 			switch(t) 			{ 				case 4:case 6:case 9:case 11: 					rd+=30;break; 			} 			 		} 		rd=rd+29+y1.day; 	}else  	{ 		for(t=1;t<y1.m;t++) 		{ 			switch(t) 			{ 				case 1:case 3:case 5:case 7:case 8:case 10:case 12: 					rd+=31; 			} 			switch(t) 			{ 				case 4:case 6:case 9:case 11: 					rd+=30; 			} 			 		} 		rd=rd+28+y1.day; 	} 	printf("%d",rd); 	return 0; }
mmmm 11月前 回复TA
@mmmm 我tm错哪了
mmmm 11月前 回复TA
#include <stdio.h>
struct date
{
	int year;
	int m;
	int day;	
}y1;

int main()
{
	int rd,t=0;
	scanf("%d%d%d",&y1.year,&y1.m,&y1.day);
	
	if(y1.m==1)
	{
		rd=y1.day;
	}
	else if(y1.m==2)
	{
		rd=31+y1.day;
	}else if(y1.year%4==0&&y1.year%100!=0||y1.year%400==0)
	{
		for(t=1;t<y1.m;t++)
		{
			switch(t)
			{
				case 1:case 3:case 5:case 7:case 8:case 10:case 12:
					rd+=31;break;
			}
			switch(t)
			{
				case 4:case 6:case 9:case 11:
					rd+=30;break;
			}
			
		}
		rd=rd+29+y1.day;
	}else 
	{
		for(t=1;t<y1.m;t++)
		{
			switch(t)
			{
				case 1:case 3:case 5:case 7:case 8:case 10:case
凌辰 1年前 回复TA
if(date1.year%4==0&&date1.year%4!=0)
这个写的是不是有问题????