题目:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:年要考虑到是不是闰年,是闰年2月份的天数要加一
注意:在VS2019中使用scanf函数要添加宏定义
下面是全部代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i, j, k;//年,月,日
int days=0;//天数
printf("请输入年月日:");
scanf("%d %d %d", &i, &j, &k);
switch (j)//前一个月有几天
{
case 1:days = 0;break;
case 2:days = 31;break;
case 3:days = 59;break;
case 4:days = 90;break;
case 5:days = 120;break;
case 6:days = 151;break;
case 7:days = 181;break;
case 8:days = 212;break;
case 9:days = 243;break;
case 10:days = 273;break;
case 11:days = 304;break;
case 12:days = 334;break;
default:printf("输入月份出错\n");break;
}
days = days + k;//前一个月的天数再加上本月的日数
int lag;//定义一个标签,若lag=1表示闰年,lag=0,表示不是闰年
if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0))//判断是不是闰年
lag = 1;
else
lag = 0;
if (lag == 1 && j > 2)
days = days + 1;//是闰年且月份大于2,天数加一
printf("这一天是这一年的第%d天", days);
return 0;
}