You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:15:02