鱼C论坛

 找回密码
 立即注册
查看: 3767|回复: 2

课程设计代码求纠错

[复制链接]
发表于 2013-4-8 13:04:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:

排班系统:学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需
要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编
制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:
钱:星期一、星期六
赵:星期二、星期四     
孙:星期三、星期日
李:星期五
周:星期一、星期四、星期六
吴:星期二、星期五
陈:星期三、星期六、星期日
运行结果: 赵      钱     孙     李     周     吴     陈
Solution: 1星期四 星期六 星期三 星期五 星期一 星期二 星期日
Solution: 2星期四 星期六 星期日 星期五 星期一 星期二 星期三
Solution: 3星期四 星期一 星期三 星期五 星期六 星期二 星期日
Solution: 4星期四 星期一 星期日 星期五 星期六 星期二 星期三

下面是我的代码:
#include<stdio.h>
int fun(int M[]);
char ch[7][4]={"一","二", "三", "四", "五", "六", "日"};
int main()
{
int a[7][7],i,j,n,k=8,h,w,c,d,e,f,g;
int b[7]={0,1,2,3,4,5,6};
int A[7]={0};
for(i=0;i<7;i++)
{for(j=0;j<7;j++)
   a[i][j]=0;}
    printf("-------------------------------------------------\n");
printf("*请参与排班的各位按顺序输入数据,以-1为结束标志。\n");
    printf("-------------------------------------------------\n");
printf("\n");
for(n=1,i=0;n<8;n++,i++)
{   switch(n)
{
        case 1:printf("请 赵 输入希望的休息日: ");break;
        case 2:printf("请 钱 输入希望的休息日: ");break;
        case 3:printf("请 李 输入希望的休息日: ");break;
        case 4:printf("请 周 输入希望的休息日: ");break;
        case 5:printf("请 吴 输入希望的休息日: ");break;
        case 6:printf("请 陈 输入希望的休息日: ");break;
        case 7:printf("请 孙 输入希望的休息日: ");
}
  for(j=0;j<7;j++)
{ scanf("%d",&a[i][j]);
       if(a[i][j]==-1)
      break;
  if(a[i][j]<-1||a[i][j]>7)
  { printf("----------------------------\n");
      printf("*输入有误,请重新输入数据!\n");
         printf("-----------------------------\n");
      n=n-1;
   A[i]=0;
  }
else
  A[i]=j+1;
     printf("\n");
}
}//以上为数据输入部分,接下来是比较部分
if(a[0][0]==-1||a[1][0]==-1||a[2][0]==-1||a[3][0]==-1||a[4][0]==-1||a[5][0]==-1||a[6][0]==-1)
printf("有用户未输入数据,请退出系统,重新输入数据!");
for(h=0;h<A[0];h++)
for(w=0;w<A[1];w++)
  for(c=0;c<A[2];c++)
   for(d=0;d<A[3];d++)
    for(e=0;e<A[4];e++)
     for(f=0;f<A[5];f++)
      for(g=0;g<A[6];g++)
      {
       int M[]={a[0][h],a[0][w],a[0][c],a[0][d],a[0][e],a[0][f],a[0][g]};
       if(fun(M))
       {
       printf("%c",ch[a[0][h]-1]);
       printf("%c",ch[a[0][w]-1]);
       printf("%c",ch[a[0][c]-1]);
       printf("%c",ch[a[0][d]-1]);
       printf("%c",ch[a[0][e]-1]);
       printf("%c",ch[a[0][f]-1]);
       printf("%c",ch[a[0][g]-1]);
       }
}
}
int fun(int M[8])
{
int i,j;
for (i=0; i<6; i++)
  for (j= i+1; j<7; j++)
  {
   if (M[i]==M[j])
    return 0;
  }
return 1;
}

输入部分和比较部分我都写好了,运行也没发现错误,但是就是没有结果输出,希望各位大神帮我看看哪里错了,应该怎么改



小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-8 13:25:07 | 显示全部楼层
自己顶
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-8 14:21:50 | 显示全部楼层
for循环真心多啊。。。:dizzy:
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-4 10:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表