|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}
输入部分和比较部分我都写好了,运行也没发现错误,但是就是没有结果输出,希望各位大神帮我看看哪里错了,应该怎么改
|
|