C语言程序设计 值班问题 求找出错误。
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/01 12:58:36
C语言程序设计 值班问题 求找出错误。
没悬赏了 刚刚拿了一次100 的 百度说 违反什么东西 烦!
医院有A、B、C、D、E、F、G 7位大夫,在一星期内(星期一至星期天)每人要轮流值班一天,如果已知:
(1)A大夫比C大夫晚1天值班;
(2)D大夫比E大夫晚1天值班;
(3)E大夫比B大夫早2天值班
(4)B大夫比G大夫早4天值班;
(5)F大夫比B大夫晚1天值班;
(6)F大夫比C大夫早1天值班;
(7)F大夫星期四值班。
就可以确定周一至周日的值班人员分别为:E、D、B、F、C、A、G。
编写程序,根据输入的条件,输出星期一至星期天的值班人员。
输入数据时,先输入一个整数n,再输入n组条件,要求能够根据输入的条件确定唯一的值班表,且输入的n组条件中能够直接或间接得到任意两位大夫的关联关系,例如上面的条件(2)直接显示了D与E间的关系,而通过条件(1)、(6)、(5)可以间接得到A与B的关系。
条件的输入格式有2种:
格式1:编号 比较运算符 编号 天数
其中比较运算符有2种:> 或 < ,分别表示"早"或"晚"
例如:A<C1 表示:A大夫比C大夫晚1天值班
格式2:编号 = 数值
例如:F=4 表示:F大夫在星期四值班
输入输出示例
7
A<C1
D<E1
E>B2
B>G4
F<B1
F>C1
F=4
EDBFCAG
没悬赏了 刚刚拿了一次100 的 百度说 违反什么东西 烦!
//程序修改处做了注释。#include<stdio.h>
#include<string.h>
int main()
{
char a[9];
int i,j,n,k,m,cha,p,count=0;
char t[15];
char tiaojian[20][4],chushi[20][4];
printf("请输入一个n\n");
scanf("%d",&n);
printf("请输入%d组数据\n",n);
for(i=0;i<n;i++)
{
scanf("%s",chushi[i]);
}
for(i=0;i<9;i++)
a[i]=NULL;
for(i=0;i<15;i++)
t[i]=NULL;
m=0;
for(i=0;i<n;i++)
{
if(chushi[i][1]=='=')
{
k=chushi[i][2]-'0';
a[k]=chushi[i][0];
}
else
{
strcpy(tiaojian[m],chushi[i]);
m++;
}
}
if(m<n)
{
while(count<7-n+m)//一遍不能完成,要多遍,下同。
for(i=0;i<m;i++)
{
if(i==4)
printf("");
if(tiaojian[i][0]!=NULL&&tiaojian[i][2]!=NULL)
for(j=1;j<8;j++)
{
if(a[j]==tiaojian[i][0])
{
cha=tiaojian[i][3]-'0';
if(tiaojian[i][1]=='<')
{
k=j-cha;
}
else
k=j+cha;
a[k]=tiaojian[i][2];
tiaojian[i][0]=NULL;
tiaojian[i][2]=NULL;
count++;
break;//加上这条语句,下同。
}
else if(a[j]==tiaojian[i][2])
{
cha=tiaojian[i][3]-'0';
if(tiaojian[i][1]=='<')
{
k=j+cha;
}
else
k=j-cha;
a[k]=tiaojian[i][0];
tiaojian[i][0]=NULL;
tiaojian[i][2]=NULL;
count++;
break;
}
else;
}
}
}
else
{
t[7]=tiaojian[0][0];
cha=tiaojian[0][3]-'0';
if(tiaojian[0][1]=='<')
k=7+cha;
else
k=7-cha;
t[k]=tiaojian[0][2];
while(count<5)
for(i=1;i<n;i++)
{
if(tiaojian[i][0]!=NULL&&tiaojian[i][2]!=NULL)
{
for(j=0;j<15;j++)
{
if(t[j]!=NULL)
{
if(tiaojian[i][0]==t[j])
{
cha=tiaojian[i][3]-'0';
if(tiaojian[i][1]=='<')
k=j-cha;
else
k=j+cha;
t[k]=tiaojian[i][2];
tiaojian[i][0]=NULL;
tiaojian[i][2]=NULL;
count++;
break;
}
else if(tiaojian[i][2]==t[j])
{
cha=tiaojian[i][3]-'0';
if(tiaojian[i][1]=='<')
k=j+cha;
else
k=j-cha;
t[k]=tiaojian[i][0];
tiaojian[i][0]=NULL;
tiaojian[i][2]=NULL;
count++;
break;
}
else;
}
}
}
}
for(i=1;i<8;i++)
{
if(a[i]==NULL)
{
for(p=0;p<15;p++)
if(t[p]!=NULL)
{
a[i]=t[p];
t[p]=NULL;
break;
}
}
}
}
a[9]=0;
for(i=1;a[i]!=0;i++)
printf("%c",a[i]);
printf("\n");
return 0;
}
运行结果:
#include<string.h>
int main()
{
char a[9];
int i,j,n,k,m,cha,p,count=0;
char t[15];
char tiaojian[20][4],chushi[20][4];
printf("请输入一个n\n");
scanf("%d",&n);
printf("请输入%d组数据\n",n);
for(i=0;i<n;i++)
{
scanf("%s",chushi[i]);
}
for(i=0;i<9;i++)
a[i]=NULL;
for(i=0;i<15;i++)
t[i]=NULL;
m=0;
for(i=0;i<n;i++)
{
if(chushi[i][1]=='=')
{
k=chushi[i][2]-'0';
a[k]=chushi[i][0];
}
else
{
strcpy(tiaojian[m],chushi[i]);
m++;
}
}
if(m<n)
{
while(count<7-n+m)//一遍不能完成,要多遍,下同。
for(i=0;i<m;i++)
{
if(i==4)
printf("");
if(tiaojian[i][0]!=NULL&&tiaojian[i][2]!=NULL)
for(j=1;j<8;j++)
{
if(a[j]==tiaojian[i][0])
{
cha=tiaojian[i][3]-'0';
if(tiaojian[i][1]=='<')
{
k=j-cha;
}
else
k=j+cha;
a[k]=tiaojian[i][2];
tiaojian[i][0]=NULL;
tiaojian[i][2]=NULL;
count++;
break;//加上这条语句,下同。
}
else if(a[j]==tiaojian[i][2])
{
cha=tiaojian[i][3]-'0';
if(tiaojian[i][1]=='<')
{
k=j+cha;
}
else
k=j-cha;
a[k]=tiaojian[i][0];
tiaojian[i][0]=NULL;
tiaojian[i][2]=NULL;
count++;
break;
}
else;
}
}
}
else
{
t[7]=tiaojian[0][0];
cha=tiaojian[0][3]-'0';
if(tiaojian[0][1]=='<')
k=7+cha;
else
k=7-cha;
t[k]=tiaojian[0][2];
while(count<5)
for(i=1;i<n;i++)
{
if(tiaojian[i][0]!=NULL&&tiaojian[i][2]!=NULL)
{
for(j=0;j<15;j++)
{
if(t[j]!=NULL)
{
if(tiaojian[i][0]==t[j])
{
cha=tiaojian[i][3]-'0';
if(tiaojian[i][1]=='<')
k=j-cha;
else
k=j+cha;
t[k]=tiaojian[i][2];
tiaojian[i][0]=NULL;
tiaojian[i][2]=NULL;
count++;
break;
}
else if(tiaojian[i][2]==t[j])
{
cha=tiaojian[i][3]-'0';
if(tiaojian[i][1]=='<')
k=j+cha;
else
k=j-cha;
t[k]=tiaojian[i][0];
tiaojian[i][0]=NULL;
tiaojian[i][2]=NULL;
count++;
break;
}
else;
}
}
}
}
for(i=1;i<8;i++)
{
if(a[i]==NULL)
{
for(p=0;p<15;p++)
if(t[p]!=NULL)
{
a[i]=t[p];
t[p]=NULL;
break;
}
}
}
}
a[9]=0;
for(i=1;a[i]!=0;i++)
printf("%c",a[i]);
printf("\n");
return 0;
}
运行结果: