编程输入年月日求该日期是所在年的第几天。(标签-c语言)

c语言。编程实现用户输入年月日,求该日期是所在年的第几天。

输入:2021-3-5 输出:第64天

解释:经历了1月31天,2月28天,和3月的5天,一共是31+28+5=64天
程序中已定义了days数组,该数组保存了12个月的天数,其中2月份的天数,你需要根据用户输入的年份来进行修改。

提示:某一年year是闰年的条件是满足下列二者之一:

  1. year能被4整除,但不能被100整除; 2. year能被400整除

输入格式:"%d-%d-%d"
输出格式:"第%d天"

程序运行示例:
输入:2020-12-31
输出:第366天

【编程要求】 以下给出两段代码,请自行选择复制其中一段代码, 补充完成。 请勿修改已有代码!

//A
#include  
#define MONTHS 12 
int main() 
{ 
  int days[MONTHS] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; 
  int year, month, day; 
  int sum = 0; 

  //****请补充代码**** 

  return 0; 
}


//B
#include  
#define MONTHS 13 
int main() 
{ int days[MONTHS] = { 0, 31,28,31,30,31,30,31,31,30,31,30,31 }; 
  int year, month, day; 
  int sum = 0; 

  //****请补充代码**** 

  return 0; }


请问这两段代码在for语句中的判断条件有哪些不同?为什么?请详细解答一下。

望采纳!!!点击回答右侧采纳即可!!
A段代码中的for语句判断条件为i<MONTHS,即i的值小于12;
B段代码中的for语句判断条件为i<MONTHS,即i的值小于13。
因为A段代码中的days数组长度为12,而B段代码中的days数组长度为13,所以A段代码中的for语句判断条件为i<MONTHS,即i的值小于12,而B段代码中的for语句判断条件为i<MONTHS,即i的值小于13。
不知道我解答清楚没有

补充A的


scanf("%d-%d-%d", &year, &month, &day);

if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
    days[1] = 29; //将2月天数改为29天
else 
    days[1] = 28;
for(int i = 0; i < month-1; i++)
    sum += days[i];
sum += day;
printf("第%d天", sum);