引用百度百科的介绍:表驱动法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(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