[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 red2020 于 2020-2-27 02:37 编辑

过于简单,不超过20行搞定
  1. #include <stdio.h>
  2. int main ()
  3. {
  4. unsigned char matrix[128];
  5. matrix['a'] = 0x07; //二进制 0111 ,a说不是我,相当于其他人都有可能,所以除一号位其他位都标记为二进制1
  6. matrix['b'] = 0x02; //二进制 0010 ,b说是c,把三号位标记为二进制1
  7. matrix['c'] = 0x01; //二进制 0001 ,c说是d,把四号位标记为二进制1
  8. matrix['d'] = (~matrix['c'])&0x0F; //二进制 1110 ,d说c瞎说,相当c的矩阵值取反,~matrix['c']表示
  9. for(int j = 'a'; j <= 'd'; j++)
  10. {
  11. unsigned char judgeMark = 0x0F; //只取一个字节的后4位标记abcd做的状态
  12. for(int i = 'a'; i <= 'd'; i++)
  13. judgeMark &= (i == j)?~matrix[i]:matrix[i];
  14. if(judgeMark)
  15. printf("It's '%c'. :[%d,%d,%d,%d]\n", j, (judgeMark>>3)&1, (judgeMark>>2)&1, (judgeMark>>1)&1, judgeMark&1);
  16. }
  17. return 0;
  18. }
复制代码
1

评分人数

TOP

回复 6# 老刘1号
取反后与已带有排除矛盾的运算成分,我的就是把你的代码翻译成布尔运算。那两层for已经假设了各种情况,我的1代表的是做了事,最后经过布尔运算只有c位是1,就是说是c做的。代码布尔逻辑上等价于你的代码,因为我就是按你的逻辑翻译成位运算而已。
1

评分人数

TOP

返回列表