作业帮 > 综合 > 作业

C语言程序设计 值班问题 求找出错误。

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/01 12:58:36
C语言程序设计 值班问题 求找出错误。

医院有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 的 百度说 违反什么东西 烦!
C语言程序设计 值班问题 求找出错误。
//程序修改处做了注释。#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;
 }
  运行结果: