gpt4 book ai didi

c - 程序产生错误的输出

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:29 24 4
gpt4 key购买 nike

我写了一个关于队列和动态内存分配的程序。这就是我的程序需要做的——将值插入队列并将其从队列中删除;就这么简单。但我的问题是它只打印赋值的变量的名称,而程序没有响应。

这是我的程序:

#include <stdio.h>
#define MAX 180

struct cakes{
int spongecake;
int meringue;
int chocalate;
int red_velvet;
struct newcake *next;
};

struct Queue{
int front;
int rear;
int count;
int cake[10];
};

void init(struct Queue *);
int isFull(struct Queue *);
void insert(struct Queue *,int);
int isEmpty(struct Queue *);
int removes(struct Queue *);

void cake_order(struct cakes *);
void order_out(struct cakes *);

main()
{
struct cakes *head;

head=(struct cakes *)malloc(sizeof(struct cakes ));
cake_order(&head); //this is a seperate function and it works perfectly
head->next=(struct cakes *)malloc(sizeof(struct cakes));
order_out(&head->next);
}
void init(struct Queue *q)
{
q->front=0;
q->rear=10-1;
q->count=0;
}

int isFull(struct Queue *q)
{
if(q->count==10)
{
return 1;
}
else
{
return 0;
}
}

void insert(struct Queue *q,int x)
{
if(!isFull(q))
{
q->rear=(q->rear+1)%10;
q->cake[q->rear]=x;
q->count++;
}

}

int isEmpty(struct Queue *q)
{
if(q->count==0)
{
return 1;
}
else
{
return 0;
}
}

int removes(struct Queue *q)
{
int caked=NULL;

if(!isEmpty(q))
{
caked=q->cake[q->front];
q->front=(q->front+1)%10;
q->count--;
return caked;
}
}

void order_out(struct cakes *order)
{
struct Queue s;
int i;

order->spongecake=20;
order->meringue=75;
order->chocalate=40;
order->red_velvet=30;

init(&s);

for(i=0;i<10;i++)
{
insert(&s,order->chocalate);
insert(&s,order->spongecake);
insert(&s,order->meringue);
insert(&s,order->red_velvet);
}

while(!isEmpty(&s))
{
printf("%d",removes(&s));
}
}

这里似乎有什么问题?我是 C 语言的新手,所以用这种语言调试时有点慢。

感谢您的宝贵时间。

这是输出:

enter image description here

最佳答案

这里有很多问题,首先,如果 main 像在 int main() 中那样正确声明,然后它在最后返回一个值会更好,例如return 0; 比如:

int main()
{
.... // code

return 0; // normally 0 is returned if execution has been successful
}

代码似乎还有其他问题,因为我无法编译它,例如 order_out() 末尾没有右大括号(就在 while 循环之后)。

如果您提供 cake_order() 函数也很好。

它还缺少对 stdlib.h 的包含,以及第 45 行(head=(struct cakes *)malloc(sizeof(struct cakes ));)我注意到你转换了 malloc 的结果,which is not necessary .

如果我可以进一步补充,请不要记得 free() 您使用 malloc() 分配的内存。我在您的代码中没有看到一个 free() 语句。

关于c - 程序产生错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16784057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com