楼主的代码
搞了两个多小时,发现直接写代码真不是个好习惯。。。。
先思考,想明白 ,再去实现。。。
#include<stdio.h>
int main()
{ int b[4],c[4]={0},a[19]={0,20,4,10,6,10,4,0,0,20,5,3,0,5,8,3,4,3,10};
int i,j,m,n[4],p,q;
printf("请按顺序输入每组家庭的人数:\n");
for(i=0;i<4;i++)
{scanf("%d",&b[i]);
}
for(i=0;i<4;i++)//下面需要一个最初的值进行比较
{for(j=18;j>0;j--)
{if(a[j]>=b[i])
{n[i]=a[j]+1;
break;
}
}
}
for(i=0;i<4;i++)
{for(j=18;j>0;j--)
{if(a[j]>=b[i])
{if(a[j]==b[i]) //如果包厢的大小和家庭人数恰好相等时
{c[i]=j;
a[j]=0;
break;}
if(a[j]<n[i])//寻找与家庭人数最接近的包厢
{n[i]=a[j];
c[i]=j;
}
}
}
a[c[i]]=0; //把已经分配的包厢赋值为零
}
for(i=0;i<4;i++)
{if(c[i]==0)
{printf("第%d组家庭没有合适的包厢\n",i+1);
}
else
{printf("第%d组家庭在%d号包厢就餐\n",i+1,c[i]);
}
}
return 0;
}
运行结果
可惜考试时没答出来 (虽然是网课,但还是很伤心?)