下面程序怎样改程序运行的结果才能输出到文件呢?
#include <stdio.h>#include <stdlib.h>
int same_state=0; //包含状态位
void findout(int a[],int n,int m,int r,int q[],int **BB,int bb);
void main()
{
int n,r;int *p,*q;
int b,bb;int **B; //存储要删除的数组
printf("要找的不同的整数个数:");
scanf("%d",&n);
p=(int*)malloc(n*sizeof(int));
printf("输入%d个不同的整数:",n);
for(int i=0;i<n;i++)
{
scanf("%d",&p[i]);
}
printf("输入要找元素组合的个数:");
scanf("%d",&r);
q=(int *)malloc(r*sizeof(int));
printf("\n输入你将要输入的数组个数:"); //根据你的例子有两个数组,这里应该输入2
scanf("%d",&bb);
B=(int **)malloc(bb*sizeof(int*));
for( i=0;i<bb;i++)
{
B[i]=(int *)malloc(sizeof(int));
B[i][0]=0;
printf("请输入第%d个数组:",i+1);
for(int j=2;1;j++)
{
scanf("%d",&b);
if(b==0) break; //每输入一个数组后请输入一个0来结束输入
else
{
B[i]=(int *)realloc(B[i],j*sizeof(int));
B[i][j-1]=b;
B[i][0]++;
}
}
}
findout(p,n,r,r,q,B,bb);
}
void findout(int a[],int n,int m,int r,int q[],int **BB,int bb)
{
for(int i=n;i>=m;i--)
{
q[m-1]=a[i-1];
if(m>1)
findout(a,i-1,m-1,r,q,BB,bb);
else
{
/*---这段是比较,如果输出数组中包含了其中一项要删除的数组,same_state将变为b,否则仍然是0---*/
same_state=0;
for(int x=0;x<bb;x++)
{
for(int y=0;y<BB[x][0];y++)
{
if(same_state!=y) break;
for(int z=0;z<r;z++)
{
if(q[z]==BB[x][y+1])
{
same_state++;
}
}
}
if(same_state==BB[x][0]) break;
else same_state=0;
}
/*---------------------------------------------------------------------------------*/
if(same_state==0)
{
for(int j=r-1;j>=0;j--)
printf("%d ",q[j]);
putchar('\n');
}
}
}
}