【问题标题】:Generating combinations in C在 C 中生成组合
【发布时间】:2014-12-15 19:25:11
【问题描述】:

所以我要做的是从列表中获取每个字符与其他字符的 XOR 值。例如:c ^ eb ^ a

#include <stdio.h>

int main()
{
    int i, j;

    const char* characters[6] = {'a', 'b', 'c', 'd', 'e', 'f'};
    for (i = 0; i < sizeof(characters) - 1; i++){
        for (j = i + 1; j < sizeof(characters); j++){
            printf("%c\n", characters[i] ^ characters[j]);
        }
    }

    return 0;
}

但是我似乎无法让它与 printf() 一起使用,因为它在使用引号时输出字符串,而在不使用时输出错误。

【问题讨论】:

  • 你给printf()一个字符串,即“chars[i] ^ chars[j]\n”,这就是它输出字符串的原因!
  • 那么我该如何打印结果呢?
  • printf("chars[%d] ^ chars[%d] is %d\n", i, j, characters[i]^characters[j]);
  • const char* characters[6] --> const char characters[6]
  • 真的是 dwvaxaz 吗?我一直在我的回答中提到@BLUEPIXY。下次请多加小心。很高兴问题得到解决。

标签: c xor


【解决方案1】:

你给printf()一个字符串,即“chars[i] ^ chars[j]\n”,这就是它输出一个字符串的原因!

  1. 您需要一个字符数组,而不是字符串,因此使用单引号 而不是数组初始化中的双精度数。
  2. for 循环的条件中有一个额外的括号。
  3. 您想打印 XOR 的值,所以使用 %d 说明符 printf()(如 BLUEPIXY 所述)。

把所有的 cmets 放在一起,你会得到这个:

#include <stdio.h>

int main() {
  int i, j;

  char characters[6] = { 'a', 'b', 'c', 'd', 'e', 'f' };
  for (i = 0; i < sizeof(characters) - 1; i++) {
    for (j = i + 1; j < sizeof(characters); j++) {
      printf("chars[%d] ^ chars[%d] is %d\n", i, j,
             characters[i] ^ characters[j]);
    }
  }

  return 0;
}

既然你想要所有的组合,你可以看看this的答案,然后再试一次。 :)

这个link 提供了一个更简单和相关的答案。

【讨论】:

  • 这并不能真正回答问题。我需要输出数组中元素之间所有组合的异或值。
  • 我不明白为什么要这么复杂
  • 恐怕你误解了我的问题。
  • 好吧,你发布了一些代码@dwvaxaz,我修复了它(在其他用户的帮助下),我提供了两个查找组合的来源。我不知道你还想要什么。 :)
  • &lt;?php echo 'F' ^ 'a'; 例如,输出'
【解决方案2】:

chars[i] ^ chars[j](不带引号)将评估为 char 而不是字符串,所以请尝试

char chars[] = {'a', 'b', 'c', 'd', 'e', 'f'};

...

print("%c\n", chars[i] ^ chars[j]);

【讨论】:

  • C:\Users\USER\Desktop\combo.c|10|error: invalid operands to binary ^ (have 'const char *' and 'const char *')|
猜你喜欢
  • 2012-03-14
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多