问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用c语言程序编写“ABCDEFG七位医生排班”,怎么写?

发布网友 发布时间:2023-09-22 16:17

我来回答

1个回答

热心网友 时间:2024-10-23 22:29

#include <stdio.h>
#define NUM 26
#define DOCTOR_INIT -100
#define OBJECT_INIT -100
#define OFFSET_INIT -100

typedef struct Statement /*用来存储每一个语句object1存储第一个字母,2存储第二个,offset存储最后的数字*/
{
int object1;
int object2;
int offset;
};

void manage(struct Statement* statement,int* doctor,int n,int equal)
/*递归函数,处理刚才的输入*/
/*前三个参数是传递当前情况,第四个参数表示刚刚确定的那个doctor[],整次递归只处理刚刚确定的那一个*/
{
int i;
for(i=0;i<n;i++)
{
if(statement[i].object1==equal && doctor[statement[i].object2]==DOCTOR_INIT && statement[i].offset!=OFFSET_INIT)
{
doctor[statement[i].object2] = doctor[equal]+statement[i].offset;
manage(statement,doctor,n,statement[i].object2);
}
if(statement[i].object2==equal && doctor[statement[i].object1]==DOCTOR_INIT && statement[i].offset!=OFFSET_INIT)
{
doctor[statement[i].object1] = doctor[equal]-statement[i].offset;
manage(statement,doctor,n,statement[i].object1);
}
}
}
void main()
{
/*变量声明*/
int n;
struct Statement statement[NUM];
int doctor[NUM];

int i,k,l;
char c[5];

char oper;

/*变量初始化*/
for(i=0;i<NUM;i++)
{
statement[i].object1=OBJECT_INIT;
statement[i].object2=OBJECT_INIT;
statement[i].offset=OFFSET_INIT;
doctor[i]=DOCTOR_INIT;
}

/*读入语句*/
printf("请输入n:");
scanf("%d",&n);

for(i=0;i<n;i++)
{
printf("%d:",i+1);
scanf("%s",c);
statement[i].object1=c[0]-'A';
oper=c[1];
if(oper != '=')
{
statement[i].object2=c[2]-'A';
statement[i].offset=c[3]-'0';
}
else
statement[i].offset=c[2]-'0';

if(oper == '<')
statement[i].offset*=-1;

}

/*递归处理语句*/
for(i=0;i<n;i++)
{
if(statement[i].object2==OBJECT_INIT && doctor[statement[i].object1]==DOCTOR_INIT)
{
doctor[statement[i].object1]=statement[i].offset;
manage(statement,doctor,n,statement[i].object1);
}
}

/*输出*/
for(k=0;k<n;k++)
{
l=OBJECT_INIT;
for(i=0;i<n;i++)
if(doctor[i]!=DOCTOR_INIT)
if(l==OBJECT_INIT || doctor[l]>doctor[i])
l=i;
if(l==OBJECT_INIT)
break;
printf("%c ",l+'A');
doctor[l]=DOCTOR_INIT;
}
}
编译运行效果:
E:\>gcc 11.c
11.c:12: warning: useless storage class specifier in empty declaration

E:\>a.exe
请输入n:7
1:A<C1
2:D<E1
3:E>B2
4:B>G4
5:F<B1
6:F>C1
7:F=4
E D B F C A G
E:\>
写了我将近一个小时,程序没有问题,需要修改或者有什么问题可以留言。
用c语言程序编写“ABCDEFG七位医生排班”,怎么写?

printf("%d:",i+1);scanf("%s",c);statement[i].object1=c[0]-'A';oper=c[1];if(oper != '='){ statement[i].object2=c[2]-'A';statement[i].offset=c[3]-'0';} else statement[i].offset=c[2]-'0';if(oper == '&lt;')statement[i].offset*=-1;} /*递归处理语句*...

用c语言程序编写“ABCDEFG七位医生排班”,怎么写?

\x0d\x0a printf("%c ",l+'A');\x0d\x0a doctor[l]=DOCTOR_INIT;\x0d\x0a }\x0d\x0a}\x0d\x0a编译运行效果:\x0d\x0aE:\&gt;gcc 11.c\x0d\x0a11.c:12: warning: useless storage class specifier in empty declaration\x0d\x0a\x0d\x0aE:\&gt;a.exe\x0d\...

用c语言编制12人排班系统 c语言保安值班怎样实验第二次排班 保安排班系统c语言程序设计结构图 医院排班申请书怎么写 排班系统C语言课程设计 c语言编制12名员工排班系统 七名保安排班系统c语言 排班申请书怎么写 护士排班申请怎么写
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
现代家庭健康饮食宝典目录 食疗炸菜商品描述 家常菜烹饪宝典内容简介 ...啊?是一幅他特别喜欢的图片,他曾经还求我画一张,当 ...4年老桩砍头了没留叶子,这杆子还能爆侧芽小仔吗?这杆子生长点在哪里... 家庭食疗宝典软件介绍 有个女生同学下周过生日告诉我让我送她生日礼物。我问他他要什么他说... 我有一个女同学生日,我XH她,她叫我送她一张贺卡,内容怎么写 魅族手机下载那种视频播放器可以小屏播放 一个蛮好的女同学要过生日,不知道送生日报怎么样。。有网友送过没,他们... 批处理怎样跳出for的一层循环 批处理循环中如何处理for循环中跳转语句1 会计的目的是什么27 有关养殖黄粉虫的发展前景,销售出路,谢谢7 去韩国留学有什么要求?需要考什么证?2 梦幻西游59级可以把变身术学几级4 汗斑能治的好吗?严不严重?1 我的老师我的爱 作文 300字左右94 关于感谢老师的作文300字左右1226 我的老师作文300字(一定要写清外貌,神态,语言,动作)24 我的老师作文300字左右203 梦幻西游69级变身术可以学到六吗!2 我的老师作文300字616 我的老师作文300字左右1515 太原大学(外语师范学院)好不好 抖音用什么网名好 联想笔记本无线网络连接受限制怎么处理?14 c语言程序设计,排班问题6 联想笔记本wifi连接受限,怎么解决 联想笔记本电脑连的wifi老是受限2 笔记本连wifi受限是怎么回事38 笔记本无线网络连接受限25 梦幻西游69级能学到几级变化之术?2 梦幻西游我前50级学了4级仙灵店铺,从50到69我能点到多少... 老师说作文要写300字左右,我可以写500字吗1 未来我是一名教师作文300字左右42 实验室中,量取一定量的水时,需要用到的仪器是______和_... 京东没注册账号能收到e卡吗 批处理怎样跳出for并执行循环后的代码 批处理 goto会跳出所有循环吗3 ...现在申请京东店需要企业对公账号,这个对公账号能淘宝京东共用吗... 笔记本无线网络连接受限25 联想电脑的无线网络连接显示总是已禁用,为什么不能启用?59 联想笔记本连接无线网络显示&quot;有限的访问权限&quot;怎么解决?15 请把那个养殖黄粉虫的联系方式给我,谢谢? 我想养殖黄粉虫,宜宾有没有黄粉虫养殖基地或虫种卖?有的话在哪...8 你好!我是安徽一名工人!希望你能帮帮我!养殖大麦虫和黄粉虫的...3 会计主要做什么工作6306 dos批处理中如何跳出本次循环继续下次循环?2 批处理for循环怎么跳出高手帮忙看一下,马上结贴