请问为什么用dev-c++运行不等输入就直接exit了?
#include<stdio.h>
#include<stdlib.h>
struct Pointer
{
int num;
struct Pointer *next;
};
typedef struct Pointer Node;
void Move(int i,int a[],int x,int y,Node *head,int n);
void Moveleft(int i,int a[],int x,int y,Node *head,int n);
void Moveright(int i,int a[],int x,int y,Node *head,int n);
void Moveup(int i,int a[],int x,int y,Node *head,int n);
void Movedown(int i,int a[],int x,int y,Node *head,int n);
void Moveleft(int i,int a[],int x,int y,Node *head,int n)
{
Node *node;
x--;
a=1;
i++;
if(x-1>=0)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
head->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveleft(i,a,x,y,head,n);
}
}
if(y-1>=0)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Movedown(i,a,x,y,head,n);
}
}
if(y+1<n)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveup(i,a,x,y,head,n);
}
}
}
void Moveright(int i,int a[],int x,int y,Node *head,int n)
{
Node *node;
x++;
a=1;
i++;
if(x+1<n)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveright(i,a,x,y,head,n);
}
}
if(y-1>=0)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Movedown(i,a,x,y,head,n);
}
}
if(y+1<n)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveup(i,a,x,y,head,n);
}
}
}
void Moveup(int i,int a[],int x,int y,Node *head,int n)
{
Node *node;
y++;
a=1;
i++;
if(y+1<n)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveup(i,a,x,y,head,n);
}
}
if(x-1>=0)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveleft(i,a,x,y,head,n);
}
}
if(x+1<n)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveright(i,a,x,y,head,n);
}
}
}
void Movedown(int i,int a[],int x,int y,Node *head,int n)
{
Node *node;
y--;
a=1;
i++;
if(y-1>=0)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Movedown(i,a,x,y,head,n);
}
}
if(x-1>=0)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveleft(i,a,x,y,head,n);
}
}
if(x+1<n)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveright(i,a,x,y,head,n);
}
}
}
void Move(int i,int a[],int x,int y,Node *head,int n)
{
Node *node;
if(x-1>=0)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveleft(i,a,x,y,head,n);
}
}
if(x+1<n)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveright(i,a,x,y,head,n);
}
}
if(y-1>=0)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Movedown(i,a,x,y,head,n);
}
}
if(y+1<n)
{
if(a==2)
{
i++;
node=(Node *)malloc(sizeof(Node));
node->num=i;
node->next=head->next;
head->next=node;
}
else if(a==0)
{
Moveup(i,a,x,y,head,n);
}
}
}
int main()
{
int n,m,k,d,i,j,minx,a={0},x,y,food,sum=0;
Node *head,*p;
fflush(stdin);
scanf("%d %d %d %d",&n,&m,&k,&d);
for(i=0;i<m;i++)
{
scanf("%d %d",&x,&y);
a=2;
}
for(i=0;i<k;i++)
{
scanf("%d %d %d",&x,&y,&food);
}
for(i=0;i<d;i++)
{
scanf("%d %d",&x,&y);
a=100;
}
head=(Node *)malloc(sizeof(Node));
head->next=NULL;
head->num=0;
for(i=0;i<k;i++)
{
Move(0,a,x,y,head,n);
minx=head->next->num;
for(p=head->next->next;p->next!=NULL;p=p->next);
{
if(p->num<minx)
minx=p->num;
}
sum+=minx*food;
}
printf("%d\n",sum);
return 0;
} 本帖最后由 superbe 于 2019-9-14 18:53 编辑
main函数定义的数组a太大了,可能超过了栈的空间大小。
把a改成这样试下:
int main()
{
int n,m,k,d,i,j,minx,**a,x,y,food,sum=0;
Node *head,*p;
a=(int **)malloc(sizeof(int)*1005);
for(i=0;i<1005;i++)
{
a=(int *)malloc(sizeof(int)*1005);
}
谢谢你,不过还是不行{:10_277:}
页:
[1]