int main()
{
int yyyy,mm,dd,a,b
scanf("%d/%d/%d",&yyyy,&mm,&dd)
a=31*(mm>1)+28*(mm>2)+31*(mm>3)+30*(mm>4)+31*(mm>5)+30*(mm>6)+31*(mm>7)+31*(mm>8)+30*(mm>9)+31*(mm>10)+30*(mm>11)+dd
b=((yyyy%4==0)*(yyyy%100!=0)+(yyyy%400==0))*(mm>2)
printf("%d\n",a+b)
return 0
}
假设输入日期格式为:yyyy-mm-dd,如2022-1-1,C语言代码如下:
#include <stdio.h>
int main() {
int y, m, d, i
scanf("%d-%d-%d", &y, &m, &d)// 要求输入日期格式为yyyy-mm-dd
int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
if ((y % 4 == 0 &&y % 100 != 0) || (y % 400 == 0)) // 闰年
month[2] = 29// 闰年2月为29天
if (m <= 0 || m >12) {
printf("月份%d不属于[1,12],程序退出\n", m)
return -1
}
int days = month[m] - d// 距当月月底的天数
if (days <0) {
printf("%d年%d月最多%d天,程序退出\n", y, m, month[m])
return -1
}
for (i = m + 1i <= 12i++)
days += month[i]// 下月开始距年底的天数
printf("%d\n", days)
return 0
}
运行结果如下:
输入2022-1-1,2022年为平年,一年共365天,所以2022年第一天距年底还有364天
输出为364,符合题意,望采纳~