c语言。编程实现用户输入年月日,求该日期是所在年的第几天。
输入:2021-3-5 输出:第64天
解释:经历了1月31天,2月28天,和3月的5天,一共是31+28+5=64天
程序中已定义了days数组,该数组保存了12个月的天数,其中2月份的天数,你需要根据用户输入的年份来进行修改。
提示:某一年year是闰年的条件是满足下列二者之一:
输入格式:"%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);