mengxingp 2019-10-19 22:55 采纳率: 0%
浏览 353

为什么我的运行后会无法运行,没显示错误,直接退出了?

#include<stdlib.h>
#include<string.h>
typedef struct sta
{
    char *base;
    char *top;
    int stacksize;
}stack;
stack InitStack (stack p,int n)
{ 
    p.stacksize =n+1;
    p.base = (char *)malloc(p.stacksize * sizeof(char));
    if (p.base== NULL)
    {
        printf("初始化栈失败\n");
        exit(0);
    }
    p.top = p.base;
    return p;
}
stack push(stack p,char e[20])
{
    if(p.top-p.base>=p.stacksize)
    {
        printf("社团人数已满,接下来输入学生将进入等待序列");
        return p;
    }
    *p.top=e[20];
    p.top++;
    return p;
}
int stackfull(stack p)
{
    if(p.top-p.base>=p.stacksize)
        return 0;
    else
        return p.top-p.base;
}
char Pop (stack p)
{
    if (p.base==p.top)
    {
        printf("栈为空栈,无法出栈 ");
        exit(0);
    }
    p.top--;
    return *p.top;
}
void DisplyStack (stack p)
{
    if (p.base==p.top)    
    {
        printf("栈为空栈,无法遍历\n");
         return;
     }
     printf("栈中元素为:");
     printf("顶端[");
     while (p.top != p.base)
     {
         p.top--;
         printf("%s-", *p.top);
     }
     printf("]底端\n");
 }

int main()
{
    stack p[20],q;int n,i,m,k;
    printf("输入社团总数\n");
    scanf("%d",&i);
    printf("输入每个社团的最大人数\n");
    scanf("%d",&n);
    p[20].stacksize=n+1;
    q.stacksize=1000;
    q=InitStack(q,1000);
    for(m=0;m<i;m++)
    {
        char name[20];int d,u;
        p[m]=InitStack(p[m],n);
        printf("输入第%d个社团名称",m);
        scanf("%s",name);
        p[m]=push(p[m],name);
        printf("输入拟加入第%d个社团的学生人数",m);
        scanf("%d",&u);
        printf("输入加入第%d个社团的学生名称",m);
        for(d=0;d<n;d++)
        {
            gets(name);
            p[m]=push(p[m],name);
        }
        if(u>n)
        {
            for(d=0;d<u-n;d++)
            {
                gets(name);
                q=push(q,name);
            }
        }
    }
    if(q.top-q.base>0)
    {
        int y,b;char s[20];
        printf("以下社团有空位");
        for(m=0;m<i;m++)
        {
            if(stackfull(p[m])>0)
            {
                printf("%d,",m);
                puts(p[m].base);
            }
        }
        for(y=0;y<q.top-q.base;y++)
        {
            printf("请选择新社团加入,输入社团前的数字");
            scanf("%d",&b);
            s[20]=Pop(q);
            p[b]=push(p[b],s);
        }
    }
    for(m=0;m<i;m++)
    {
        DisplyStack (p[m]);
    }

}

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-10-20 09:36
    关注

    应该是指针方面的问题,但是你代码没有贴对,for(m=0;m { 这都是什么鬼。
    没法帮你调试。你自己认真调试下吧。

    评论

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100