C 为什么此代码的输出为空
我正在尝试打印字符串的幂集 代码编译成功,但执行时,屏幕上不会打印任何内容 我无法理解这背后的原因 代码如下:C 为什么此代码的输出为空,c,string,bit-manipulation,C,String,Bit Manipulation,我正在尝试打印字符串的幂集 代码编译成功,但执行时,屏幕上不会打印任何内容 我无法理解这背后的原因 代码如下: #include<stdio.h> #include<string.h> #include<math.h> void main() { char s[]="abcd"; int i,j,k=1; int y=strlen(s); int z=pow(2,y); for(i=0;i<z;i++) {
#include<stdio.h>
#include<string.h>
#include<math.h>
void main()
{
char s[]="abcd";
int i,j,k=1;
int y=strlen(s);
int z=pow(2,y);
for(i=0;i<z;i++)
{
k=1;
for(j=0;j<y;j++)
{
if(j & k)
printf(" %c",s[j]);
k=k<<1;
}
printf("\n");
}
}
#包括
#包括
#包括
void main()
{
字符s[]=“abcd”;
int i,j,k=1;
int y=strlen(s);
int z=功率(2,y);
对于(i=0;ij&k
而言,计算结果总是0
j = 0, k = 1 ==> j & K = 0
j = 1, k = 10 ==> j & K = 0
j = 10, k = 100 ==> j & K = 0
j = 11, k = 1000 ==> j & K = 0
此代码按您的需要工作:
#include <stdio.h>
#include <string.h>
int main()
{
char s[] = "abcd";
int i,j;
int y = strlen(s);
int z = 1 << y;
for(i = 0; i < z; i++)
{
for(j = 0; j < y; j++)
{
if(i & 1 << j)
printf(" %c",s[j]);
}
putchar('\n');
}
return 0;
}
#包括
#包括
int main()
{
字符s[]=“abcd”;
int i,j;
int y=strlen(s);
int z=1您应该在if(j&k)
之前打印j
和k
的值,我想您会看到问题所在。或者学习使用调试器,这样您就可以逐步完成代码并查看发生了什么。谢谢。我把逻辑放在代码中是错误的。现在没事了