帮忙看看代码为什么运行不了

qq_39251122 2018-02-10 09:15:17
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

struct Info
{
int n;
int k;
int acquire[100];
}info[5];

void read(); //读取文件
void choose(); //选座
void print(); //输出座位信息

void read()
{
int i,j;
FILE *fp;
fp=fopen("1.txt","r");
if(fp=NULL)
{
printf("文件打开失败\n");
exit(0);
}
while(!feof(fp))
{
for(i=0;i<5;i++)
{
fscanf(fp,"%d %d",&info[i].n,&info[i].k);
for(j=0;j<info[i].n;j++)
{
fscanf(fp,"%d",&info[i].acquire[j]);

}
j=0;
}
}
fclose(fp);
}



void choose(int k,int m)
{
int a[100][100];
int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<k;j++)
{
a[i][j]=1;
}
}
int x,y;
x=(k+1)/2;
y=x;
int l=0,r=m-1,p=0,q=0;
int I=0,M=0,N=0,L=0,max=k*k*k;
for(i=0;i<k;i++)
{
for(j=0;j<k-m+1;j++)
{
for(int h=l;h<r+1;)
{
if(a[i][h]!=1)
p=1;
}
if(p==0)
{
for(h=l;h<r+1;)
{
L+=abs(i-x)+abs(h-y);
}
L=L*(1/m);
if(max>L)
{
max=L;
I=i;
M=l;
N=r;
}
p=0;
q=1;
}
l++;
r++;
}
}
if(q==1)
printf("%d %d %d\n",I,M,N);
else
printf("-1\n");

}

void print(int n,struct Info info[],int i)
{
int j;
for(j=0;j<n;j++)
choose(info[i].k,info[i].acquire[j]);
}

void main()
{
read();
int i;
for(i=0;i<5;i++)
print(info[i].n,&info[i],i);
}
...全文
809 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-02-11
  • 打赏
  • 举报
回复
static int a[100][100]; 在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题。
qq_39251122 2018-02-11
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
for (h = l; h < r + 1;) 这里的h没有定义过
不是这个原因
qq_39251122 2018-02-11
  • 打赏
  • 举报
回复
呃,,,不是这个问题
paschen 2018-02-11
  • 打赏
  • 举报
回复
引用 3 楼 qq_39251122的回复:
引用 1 楼 paschen 的回复:
for (h = l; h < r + 1;) 这里的h没有定义过
不是这个原因
if(fp=NULL) 改成 if(fp==NULL)
donjin9 2018-02-11
  • 打赏
  • 举报
回复
if(fp=NULL) 少了一个等号
Vist_1 2018-02-11
  • 打赏
  • 举报
回复
64行和79行的for循环,for(int h=l;h<r+1;) 别再for循环里定义h,拿到循环外,gcc基于c89标准不予许在for循环内定义,换成C99标准就可以在for循环内定义h变量了
paschen 2018-02-10
  • 打赏
  • 举报
回复
for (h = l; h < r + 1;) 这里的h没有定义过

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧