用C语言生成组合

用C语言生成组合,c,xor,C,Xor,所以我要做的是从列表中获取每个字符与其他字符组合的XOR值。例如:c^e、b^a等 但是,我似乎无法让它与printf一起工作,因为它在使用倒逗号时输出字符串,在不使用倒逗号时输出错误。chars[I]^chars[j]不带引号将计算为char而不是字符串,所以请尝试 char chars[] = {'a', 'b', 'c', 'd', 'e', 'f'}; ... print("%c\n", chars[i] ^ chars[j]); 您给printf一个字符串,即chars[i]^c

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

但是,我似乎无法让它与printf一起工作,因为它在使用倒逗号时输出字符串,在不使用倒逗号时输出错误。

chars[I]^chars[j]不带引号将计算为char而不是字符串,所以请尝试

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

...

print("%c\n", chars[i] ^ chars[j]);
您给printf一个字符串,即chars[i]^chars[j]\n,这就是它输出字符串的原因

您需要的是字符数组,而不是字符串,因此使用单引号 而不是在数组的初始化中使用双1。 在for循环的条件中有一个额外的括号。 要打印XOR的值,请使用%d说明符 如BLUEPIXY所述的printf。 将所有评论放在一起,您将得到以下结果:

#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;
}
由于您需要所有的组合,您可以查看答案并重试


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

您给printf一个字符串,即chars[i]^chars[j]\n,这就是它输出字符串的原因!那么如何打印结果?printfchars[%d]^chars[%d]是%d\n,I,j,字符[I]^characters[j];常量字符*字符[6]->常量字符[6]真的是dwvaxaz吗?我一直都在回答@BLUEPIXY的问题。下次请多加小心。很高兴问题解决了。C:\Users\USER\Desktop\combo.C | 10 |错误:二进制^的无效操作数有“const char*”和“const char*”;这并不能真正回答问题。我需要输出数组中元素之间所有组合的XOR ed值。我不明白为什么会如此复杂。恐怕你误解了我的问题。你在@dwvaxaz发布了一些代码,我在其他用户的帮助下修复了它,我提供了两个查找组合的源代码。我不知道你还想要什么
#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;
}