题目内容:输入某年某月某日,判断这一天是这一年的第几天?【要求:用switch编程】
输入样例:2021 12 10
输出样例:2021年12月10日是这一年的第344天!
输入样例:2020 12 10
输出样例:2020年12月10日是这一年的第345天!
个人解法如下:
#define _CRT_SECURE_NO_WARNINGS //防报错 #include#include int Days_M(int year, int month) //该函数用于获得当月月份的对应天数 { int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; //默认2月份为平年28天(0号位占位元素为0不影响计算) if ((year % 100 != 0 && year % 4 == 0) || month % 400 == 2) days[2] += 1; //闰年2月天数加1天 return days[month]; } int Days_SUM(int year, int month, int day) //该函数用于获得总天数 { int SUM = 0; if (year < 1) //年数报错 return -1; if (month < 1 || month > 13) //月数报错 return -2; if (day < 1 || day > Days_M(year, month)) //天数报错 return -3; for (int i = 0; i < month; i++) //直到当月跳出循环(若int i=1会导致一月也进行一次循环) { SUM += Days_M(year, i); //获得本月以前的所有月份天数之和 } return SUM + day; //返回值中加上本月当前天数 } int main() { int year, month, day; int SUM = 0; printf("请输入年月日(用空格隔开):n"); scanf_s("%d %d %d", &year, &month, &day); SUM = Days_SUM(year, month, day); switch (SUM) { case -1: printf("年份输入错误"); break; case -2: printf("月份输入错误"); break; case -3: printf("日子输入错误"); break; default: printf("%d年%d月%d日是这一年的第%d天!", year, month, day, SUM); break; } return 0; }
本人拙作,请大佬们点评。



