C语言数组之表驱动法

引用百度百科的介绍:表驱动法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或Case)来把它们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富有吸引力了。

下面例子通过表驱动法判断每个月的天数,不需要使用很多的if判断。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <stdbool.h>

int days_of_month(int month, int year);
bool is_leap(int year);

int main() {
printf("本月共%d天\n", days_of_month(2, 2022));
return 0;
}

// 返回每个月的天数
int days_of_month(int month, int year) {
int is_leap_res = is_leap(year);
int day_array[12] = {31, is_leap(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
return day_array[month-1];
}

// 计算该年份是闰年者平年
bool is_leap(int year) {
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
return true;
} else {
return false;
}
}

文章参考C语言教程(全网最具有比喻形象的):持续更新ing_哔哩哔哩_bilibili

C语言数组之表驱动法

http://example.com/index/bee/

作者

WZJ

发布于

2021-11-03

许可协议

评论