c语言舞伴配对问题,要求将输入数据及结果数据保存到文件中,代码没问题,就是不知道为什么无法输出数据

2025-05-05 18:10:22
推荐回答(1个)
回答1:

// 你的代码很多错误,我改了之后,可以正常运行
#include
#include
#define NULL 0

typedef struct Qnode  //定义链表的节点
{
int  data;
struct Qnode *next;
}Qnode,*Queueptr;
typedef struct  //定义链表整体
{
Queueptr front;
Queueptr rear;
}Linkqueue;
void Initqueue(Linkqueue &Q)  //初始化队列
{
Q.front=Q.rear=(Queueptr)malloc(sizeof(Qnode)); //申请动态内存空间
if(Q.front)
Q.front->next=NULL;
}

void Enqueue(Linkqueue &Q,int m) //入队
{
    Queueptr p;
p=(Queueptr)malloc(sizeof(Qnode));
if(p)
{
p->data=m;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
else
    {
        printf("error");
    }
}
int Dequeue(Linkqueue &Q)  //出列
{
int m;
Queueptr p;
if(Q.rear!=Q.front)
{
p=Q.front->next;
m=p->data;
Q.front->next=p->next;
}
if(Q.front==p)
Q.rear=Q.front;
free(p);
return m;
}
int DeleteQueue(Linkqueue *Q)
{Queueptr p;
  for(;Q->front!=NULL;free(p))
  {  p=Q->front;
  Q->front=Q->front->next;
}
   return 0;
}

void Dance(Linkqueue M,Linkqueue W)
{
    FILE *fp;
    fp=fopen("ytj.txt","w");
int i,m,n,k,a,b,c,d,num=0,r=0;
printf("请输入男生的数量:");
fprintf(fp,"请输入男生的数量:");
scanf("%d",&n);
fprintf(fp,"%d",n);
printf("请输入女生的数量:");
fprintf(fp,"请输入女生的数量:");
scanf("%d",&m);
fprintf(fp,"%d",m);
printf("请输入曲子的数量:");
fprintf(fp,"请输入曲子的数量:");
scanf("%d",&k);
fprintf(fp,"%d",k);
printf("请输入您要查找的男生编号:");
fprintf(fp,"请输入您要查找的男生编号:");
scanf("%d",&a);
fprintf(fp,"%d",a);
printf("请输入您要查找的女生编号:");
fprintf(fp,"请输入您要查找的女生编号:");
scanf("%d",&b);
fprintf(fp,"%d",b);
for(i=1;i<=m;i++)
Enqueue(W,i);
for(i=1;i<=n;i++)
Enqueue(M,i);
    for(i=1;i<=k;i++)
{
printf("\n\n现在正在播放第%d首曲子!\n",i);
fprintf(fp,"\n\n现在正在播放第%d首曲子!\n",i);
c=Dequeue(M);
d=Dequeue(W);
printf("现在正在跳舞的是第%d号男生和第%d号女生!\n",c,d);
fprintf(fp,"现在正在跳舞的是第%d号男生和第%d号女生!\n",c,d);
if(c==a&&b==d)
{
r=1;
num++;
printf("第%d号男生和%d号女生在第%d号曲子一起跳舞!\n",a,b,i);
fprintf(fp,"第%d号男生和%d号女生在第%d号曲子一起跳舞!\n",a,b,i);
}
Enqueue(M,c);
Enqueue(W,d);
}
if(r==0)
printf("\n您要查找的%d号男生和%d号女生没有在一起搭配跳舞!\n",a,b);
fprintf(fp,"\n您要查找的%d号男生和%d号女生没有在一起搭配跳舞!\n",a,b);
if(r==1)
printf("\n您要查找的%d号男生和%d号女生一起跳舞的次数为:%d次!\n",a,b,num);
fprintf(fp,"\n您要查找的%d号男生和%d号女生一起跳舞的次数为:%d次!\n",a,b,num);
    if(fp)
    {
        fclose(fp);
    }
    fp=NULL;
}
int main()
{
Linkqueue M,W;
printf("学生搭配问题!\n\n");
Initqueue(M);
Initqueue(W);
Dance(M,W);
return 0;
}