C语言 详解华为笔试试题 租借网球场地 场地租借合同
使用结构体来处理这个问题。本题并没有完全按照题目要求做而是对他进行了一些扩展。
#include<stdio.h>
#include<string.h>
#define max 15
struct stu/*定义一个结构体存放数组标志位看当前的地方是否被占用*/
{
int flag;
} ;
struct stc/*定义结构体存放单位的名字和占用的场地*/
{
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("请输入您要租借的起始场地号和个数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("场地已经被其它单位占用n");
}
}
else if(c=='n'||c=='N')
{
printf("请输入您的单位名称n");
scanf("%s",&name);
getchar();
gui_huan(&p,name,i);
printf("已经归还成功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");
}
更多阅读
ROOT助手一键ROOT华为C8815,免除解锁简单直接 给力助手一键root
免除解锁,一键ROOT华为C8815不需要苦等3个工作日获取华为解锁码,不需要再担心自己是小白而无从下手,今天给大家带来经验分享,一键ROOT华为C8815.【准备工作】1.华为C8815手机一
破解中国电信E8-c光纤猫华为HG8245 实现单猫WIFI上网 hg8245h 设置 e8c
之前小区的是ADSL上网,直接挂个无线路由直接wifi,可是昨天电信来换了光纤,换了个华为HG8245光纤猫后wifi居然使用不了,琢磨了半天解决了,很多教材查阅对比互联网!以下是具体过程:一.获得超级用户密码路由背面的用户名和密码是一个限制账
华为C8600实现无线局域网上网--详图 - 华为c8500 论坛 - 添翼圈| 添翼圈
wireless_tether_2_0_5-pre11.rar (323.67 KB) 下载次数: 172010-12-28 16:53下载消耗 贡献 1 前段时间入手一部华为C8500在智汇云里面有无线局域网共享软件,装上后手机可以当WIFI热点,IPAD、笔记本电脑可以通过手机实现无线上网。但
2012年高考语文试题及答案详解之一:全国大纲卷
2012年普通高等学校招生全国统一考试语文题(大纲版)详解井永战一、(12分,每小题3分)1.下列词语中加点的字,读音全都正确的一组是A.颀长(qí)悚然(sù)彰善瘅恶(dàn)韬光养晦(huì)b.人寰(huán)攫取(jué)寻瑕伺隙(xì)啮臂为盟(niè)C.抵牾(yǔ)横亘(gèn)造
华为笔试题面试题集总4 java开发笔试题面试题
华为最新笔试题及其分析1.printf的输出问题printf("%d",total);//this is right printf(total);//this is wrongprintf("hello");//but this is right2.整数类型的长度 char 1个子节,8位unsigned short [int] [signed] short int