标题:初学者,救救孩子吧
只看楼主
卖报小宁
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-11-27
结帖率:0
 问题点数:0 回复次数:0 
初学者,救救孩子吧
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
#define ERROR 0
typedef struct
{
    char name[20];
    char sex;
}Person;
typedef struct
{
    Person m[20];
    Person *base;
    int front;
    int rear;
}SqQueue;
SqQueue *mdancers(SqQueue *mq)这一句可以改成 int InitQueue(SqQueue *mq)这样改完后就出现了上面的错误
{
    mq = (SqQueue *)malloc(sizeof(SqQueue));
    if(!mq -> base) exit(0);
    mq -> front = -1;
    mq -> rear = -1;
    return mq;
}
Inqueue(SqQueue *mq, Person p)
{
    if((mq -> rear + 1) % 20 == mq -> front)
    {
        printf("队满!");
    }
    else
    {
        mq -> rear++;
        mq -> m[mq->rear] = p;
    }
}
int Equeue(SqQueue *mq)
{
    if (mq -> front == mq -> rear)   return OK;
    else return ERROR;
}
dancers(Person p[20], int num, SqQueue *mq, SqQueue *fq)
{
    int i;
    Person q;
    printf("请输入参与者的姓名,性别\n");
    getchar();
    for(i = 0; i < num; i++)
    {
        printf("请输入第%d个舞者的名字:\n", i + 1);
        scanf("%s", &p[i].name);
        printf("请输入第%d个人的性别(f/m):\n", i + 1);
        scanf("%s", &p[i].sex);
        while(p[i].sex != 'f' && p[i].sex != 'm')
        {
            printf("输入错误,请重新输入第%d个人的性别(f/m):\n", i + 1);
            scanf("%s", &p[i].sex);
            break;
        }
    }
    for(i = 0; i < num; i++)
    {
        q = p[i];
        if (q.sex == 'm') Inqueue(mq, q);
        if(q.sex == 'f') Inqueue(fq, q);
    }
    printf("匹配结果:\n");
    while(!Equeue(mq) && !Equeue(fq))
    {
        mq -> front++;
        q = mq -> m[mq -> front];
        printf("%s\t", q.name );
        
        fq -> front++;
        q = fq -> m[fq -> front];
        printf("%s\n", q.name );
    }
    if(!Equeue(mq))
    {
        mq -> front++;
        q = mq -> m[mq -> front];
        printf("下一个等待匹配的人是:%s \n", q.name);
    }
    if(!Equeue(fq))
    {
        fq -> front++;
        q = fq -> m[fq -> front];
        printf("下一个等待匹配的人是:%s \n", q.name);
    }
}
int main()
{
    int num;
    Person p[20];
    SqQueue *mq;
    SqQueue *fq;
    mq = mdancers(mq);
    fq = mdancers(fq);
    printf("请输入跳舞的男士与女士的总人数:");
    scanf("%d", &num);
    if(num > 20)
        exit(0);
    while(num <= 0)//输入人数为负提示重新输入
    {
        printf("输入错误,请重新输入跳舞的人数:");
        scanf("%d", &num);
    }
    dancers(p, num, mq, fq);
}
搜索更多相关主题的帖子: num 输入 Person printf int 
2021-11-27 20:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507669-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.319320 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved