如何用C语言实现真值表所有输入测试用例的生成算法
生成n位二进制输入全量测试用例的C语言实现
核心思路
n个二值变量的全量测试用例总数为2n,刚好对应0到2n - 1范围内所有整数的n位二进制展开结果,每个整数的第k位就对应第k个输入变量的取值。
完整实现代码
#include <stdio.h> // 生成n个二值变量的所有测试用例 void generate_test_cases(int n) { // 边界判断:n过大时2^n会溢出且无法遍历,这里限制n<=20(2^20=1048576,可正常运行) if (n <= 0 || n > 20) { printf("n的取值范围为1~20\n"); return; } // 总用例数:2^n int total = 1 << n; // 遍历每个用例对应的整数 for (int i = 0; i < total; i++) { printf("用例%d: ", i+1); // 逐位读取当前整数的二进制位,作为每个变量的取值 for (int k = 0; k < n; k++) { // 这里取第k位的值,可自定义调整顺序 int val = (i >> k) & 1; printf("%d", val); if (k != n-1) printf(","); } printf("\n"); } } int main() { int n; printf("请输入变量个数n:"); scanf("%d", &n); generate_test_cases(n); return 0; }
运行说明
如果需要调整变量的输出顺序(把高位放在第一个变量的位置,匹配你示例中的输出顺序),只需要把内层循环的取值逻辑修改为int val = (i >> (n - 1 - k)) & 1;即可,修改后输入n=2的输出结果如下:
用例1: 0,0 用例2: 0,1 用例3: 1,0 用例4: 1,1
内容的提问来源于stack exchange,提问作者Alex Harris
相关产品推荐
相关产品推荐

