编程题
格雷码 ### 题目描述 **本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。** 格雷码是以 $n$ 位的二进制来表示数。与普通的二进制表示不同的是,它要求相邻两个数字只能有 1 个数位不同。首尾两个数字也要求只有 1 位之差。 有很多算法来生成格雷码。以下是较常见的一种: 从编码全 0 开始生成。 当产生第奇数个数时,只把当前数字最末位改变(0 变 1,1 变 0)。 当产生第偶数个数时,先找到最右边的一个 1,把它左边的数字改变。 用这个规则产生的 4 位格雷码序列如下: ```txt 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 ``` 以下是实现代码,仔细分析其中逻辑,并填写划线部分缺少的代码。 ### 源代码 **C** ```c #include void show(int a,int n) { int i; int msk = 1; for(i=0; i> 1; } printf("\n"); } void f(int n) { int i; int num = 1; for(i=0; i