c语言舞伴配对问题,要求将输入数据及结果数据保存到文件中,代码没问题,就是不知道为什么无法输出数据
#include<stdio.h>#include<malloc.h>#defineNULL0typedefstructQnode//定义链表的节点{intdata;st...
#include<stdio.h>
#include<malloc.h>
#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;
}
void DeleteQueue(LinkQueue *Q)
{QueuePtr p;
for(;Q.front!=NULL;free(p))
{ p=Q.front;
Q.front=Q.front->next;
}
}
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;
} 展开
#include<malloc.h>
#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;
}
void DeleteQueue(LinkQueue *Q)
{QueuePtr p;
for(;Q.front!=NULL;free(p))
{ p=Q.front;
Q.front=Q.front->next;
}
}
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;
} 展开
1个回答
展开全部
// 你的代码很多错误,我改了之后,可以正常运行
#include<stdio.h>
#include<malloc.h>
#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;
}
更多追问追答
追问
问一下你的文本文件在哪里找的?为什么我这里的打开来还是空白的
追答
在和你c文件同一个目录啊,另外你这个程序还是有漏洞的,只能处理正常输入的情况,对错误的情况是不能处理的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询