使用結(jié)構(gòu)體來處理這個問題。本題并沒有完全按照題目要求做而是對他進行了一些擴展。
#include<stdio.h>
#include<string.h>
#define max 15
struct stu/*定義一個結(jié)構(gòu)體存放數(shù)組標志位看當前的地方是否被占用*/
{
int flag;
} ;
struct stc/*定義結(jié)構(gòu)體存放單位的名字和占用的場地*/
{
int flag1;
int begin;
int end;
char name[20];
};
struct stud/*c是存放公司的名字和場地的大小,a是存儲具體被占用的場地*/
{
struct stc c[max];
struct stu a[100];
};
check(struct stud *p,int m,int n,int s)/*檢查場地是否可以使用*/
{
int i=0;
for(i=m;i<=n;i++)
{
if((*p).a[i].flag==1)/*若不可用接返貨*/
return 0;
}
for(i=m;i<=n;i++)/*可用給對應的標志位賦1*/
{
(*p).a[i].flag=1;
(*p).c[s].flag1=1;
}
return 1;
}
void gui_huan(struct stud *p,char *name,int n)/*歸還相應場地*/
{
int i,k;
for(i=0;i<n;i++)/*通過輸入的公司名字來匹配相應的公司,并歸還相應的場地*/
{
if(!strcmp((*p).c[i].name,name))
{
(*p).c[i].flag1=0;/*公司存儲信息標志位清零*/
for(k=(*p).c[i].begin-1;k<=(*p).c[i].end-1;++k)
{
(*p).a[k].flag=0;/*場地標志位請0*/
}
}
}
}
void cha_kan(struct stud *p,int flag,int l)/*查看場地是否可用,或看被占用場地*/

{
int i;
if(flag)
{
printf("沒有用的場地號有n");
for(i=0;i!=100;i++)
{
if(!(*p).a[i].flag)/*輸出沒有被占用的場地*/
{
printf("%dt",i+1);
if(i%5==0)
printf("n");
}
}
}
else
{
int flag2;
for(i=0;i<max;i++)
{
if((*p).c[i].flag1)/*當公司位沒有被清0的進行比較*/
{
printf("租借單位為n");/*輸出相應的信息*/
printf("%sn",(*p).c[i].name);
printf("租借場地號為n");
for(int s=(*p).c[i].begin;s<=(*p).c[i].end;++s)
{
flag2=0;
printf("%dt",s);
if(s%5==0)
printf("n");
}
}
}
if(flag2)
printf("沒有租借單位租借n");
}
}
void main()
{
struct stud p;
int i=0,m,n;
char name[20],c;
for(i=0;i!=100;i++)
p.a[i].flag=0;
for(i=0;i<max;i++)
p.c[i].flag1=0;
printf("您是來租借場地還是來歸還場地,輸入y租借場地n輸入n歸還場地,輸入l來查看沒有租用場地,輸入m查看租用的場地,輸入x退出n");
i=0;
while((c=getchar())!='x')
{
if(c=='y'||c=='Y')
{
int k;
printf("請輸入您要租借的起始場地號和個數(shù)n");
scanf("%d%d",&m,&n);
getchar();
m--;
n--;
k=check(&p,m,m+n,i);
if(k==1)
{
p.c[i].begin=m+1;
p.c[i].end=m+n+1;
printf("場地可以租用,請輸入您的單位名稱n");
scanf("%s",p.c[i].name);
getchar();
while(p.c[i].flag1)
i++;
}
else
{
printf("場地已經(jīng)被其它單位占用n");
}
}
else if(c=='n'||c=='N')
{
printf("請輸入您的單位名稱n");
scanf("%s",&name);
getchar();
gui_huan(&p,name,i);
printf("已經(jīng)歸還成功n");
}
else if(c=='l'||c=='Y')
{
int fla=1;
cha_kan(&p,fla,i);
getchar();
}
else if(c=='m'||c=='M')
{
int fla=0;
cha_kan(&p,fla,i);
getchar();
}
else
;
if(i==max)
i=0;
printf("n您是來租借場地還是來歸還場地,輸入y租借場地,輸入n歸還場地,輸入l來查看場地,輸入x退出n");
}
printf("謝謝使用n");
}
愛華網(wǎng)



