题解 | #获得月份天数#
获得月份天数
https://www.nowcoder.com/practice/13aeae34f8ed4697960f7cfc80f9f7f6
#include <stdio.h> #include <stdlib.h> // 引入用于标准库函数的头文件,比如exit函数 // 判断是否为闰年的函数,返回1表示是闰年,返回0表示不是闰年 int is_leap_year(int year) { return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); } int main() { int y, m; int n1[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int n2[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; while (scanf("%d %d", &y, &m) == 2) { // 更规范的写法判断scanf是否成功读取两个整数 if (m < 1 || m > 12) { fprintf(stderr, "输入的月份不合法,请重新输入1到12之间的整数作为月份!\n"); // 清空输入缓冲区,避免无效数据残留影响下一次输入读取 while (getchar() != '\n'); continue; } int* days = is_leap_year(y) ? n2 : n1; // 根据是否闰年选择对应的天数数组指针 printf("%d\n", days[m]); } return 0; }