在C语言中,查表程序通常涉及到使用数组来存储数据,并通过索引来快速查找和访问这些数据。以下是一个简单的查表程序示例,该程序根据用户输入的字符来查找并打印出对应的十六进制数值。
```c
include include int main() { int i; char st; int nn = 4; char str_tab[] = {"a", "d", "s", "f"}; unsigned int tab[] = { {0x16, 0x1a, 0x1a, 0x1e, 0x02}, {0x0c, 0x12, 0x32, 0x3e, 0x02}, {0x1a, 0x16, 0x16, 0x16, 0x00}, {0x00, 0x12, 0x3e, 0x32, 0x30} }; printf("Please enter a or d or s or f:\n"); scanf("%s", &st); for (i = 0; i < nn; i++) { if (strncmp(st, str_tab[i], 1) == 0) { printf("0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n", tab[i], tab[i], tab[i], tab[i], tab[i]); break; } } return 0; } ``` 解释 `str_tab` 是一个包含字符的二维数组,用于存储用户可能输入的字符。 `tab` 是一个包含十六进制数值的二维数组,用于存储与 `str_tab` 中字符对应的数值。 程序提示用户输入一个字符('a', 'd', 's', 'f')。 使用 `scanf` 函数读取用户输入的字符串,并存储在 `st` 数组中。 使用 `strncmp` 函数比较用户输入的字符与 `str_tab` 中的字符,如果匹配,则打印出对应的 `tab` 数组中的数值。 扩展应用 如果你需要处理更复杂的查表需求,例如根据温度查找溶解度,可以使用结构体数组来实现: ```c include struct data { int t; // 温度 float m; // 溶解度 }; int main() { int n, i; struct data a[] = { {0, 29.4}, {10, 33.3}, {20, 37.2}, {30, 41.4}, {40, 45.8}, {50, 50.4}, {60, 55.2}, {70, 60.2}, {80, 65.6} }; printf("请输入温度(0-80):"); scanf("%d", &n); if (n < 0 || n > 80) { printf("输入错误\n"); return 1; } for (i = 0; i < n; i++) { if (a[i].t == n) { printf("温度 %.1f 摄氏度的溶解度是:%.1f 克\n", a[i].t, a[i].m); break; } } return 0; } ``` 总结 查表程序的核心在于定义合适的数组结构,并通过索引快速访问数据。根据具体需求,可以选择使用一维或二维数组,甚至结构体数组来实现更复杂的数据存储和查找逻辑。数组定义
用户输入
查找与打印