求1~n的幂集的代码编译的时候没法输出结果?
#include<stdio.h>#define Maxn 10 //最大的n值
#define MaxSize 1000 //最大的子集个数
typedef struct{
int data[MaxSize][Maxn];
int n;
}PSetType;
void copy(int a[], int b[], int m)
{
int i;
for (i = 0; i <= m; i++)
b[i] = a[i];
}
void pset(int n, PSetType &p)
{
int i, j, m;
int a[Maxn]; //a用于保存一个子集
p.data[0][0] = 0;
p.n = 0;
for (i = 1; i <= n; i++) //循环添加1~n
{
m = p.n;
for (j = 0; j<m; j++)
{
copy(p.data[j], a, p.data[j][0]);
a[0]++;
a[a[0]]++;
copy(a, p.data[p.n], a[0]);
p.n++;
}
}
}
void disp(PSetType p)
{
int i, j;
for (i = 0; i<p.n; i++)
{
printf("{");
for (j = 1; j <= p.data[i][0]; j++)
printf("%d", p.data[i][j]);
printf("}");
}
}
int main()
{
int n = 3;
PSetType p;
pset(n, p);
printf("1~%d的幂集如下:", n);
disp(p);
printf("\n");
return 0;
}
————————————————
我自己觉得是调用函数传引用的时候没有修改p的值,
怎么修改好?
基本逻辑是没问题的。