标题:保安值班系统
取消只看楼主
Angelhood
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-6-13
 问题点数:0 回复次数:0 
保安值班系统
具体题目:学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。
#include<stdio.h>
int main(void)
{
int j,k,h,n=0,flag=1;//用于判断的变量
int a,b,c,d,e,f,g;
int achoice,bchoice,cchoice,dchoice,echoice,fchoice,gchoice;//用于确定员工选择个数的变量
int q[7][7];//用于员工存储所选择的休假日的变量
int A[7];
printf("*******************欢迎进入值班系统********************\n");
printf("#\t\t提示说明!\t\t\t#\n");
printf("#\t  1.请各位保安人员输入自己想要选择的休假日:\t#\n");
printf("#\t  2.请先选择你要选择的次数\t\t\t#\n");
printf("#\t  3.再选择你要轮休的日期\t\t\t#\n");
printf("#\t\t\t\t\t\t#\n");
printf("#\t\t\t\t\t\t#\n");
printf("#\t\t\t\t\t\t#\n");
printf("****************欢迎进入值班系统*****************\n");//欢迎界面
printf("请钱输入你想选择的次数\n");
scanf("%d",&achoice);
printf("请钱输入选择的休假日\n:      ");
for(j=0;j<achoice;j++){
scanf("%d",&q[j][0]);     //a录入休假日
}
printf("请赵输入你想选择的次数\n");
scanf("%d",&bchoice);
printf("请赵输入选择的休假日\n:      ");
for(j=0;j<bchoice;j++){
scanf("%d",&q[j][1]);    //b录入休假日
}
printf("请孙输入你想选择的次数\n");
scanf("%d",&cchoice);
printf("请孙输入选择的休假日\n:      ");
for(j=0;j<cchoice;j++)
{
scanf("%d",&q[j][2]);           //c录入休假日
}
printf("请李输入你想选择的次数\n");
scanf("%d",&dchoice);
printf("请李输入选择的休假日\n:      ");
for(j=0;j<dchoice;j++)
{
scanf("%d",&q[j][3]);            //d录入休假日
}
printf("请周输入你想选择的次数\n");
scanf("%d",&echoice);
printf("请周输入选择的休假日\n:      ");
for(j=0;j<echoice;j++)
{
scanf("%d",&q[j][4]);
}                                   //e录入休假日
printf("请吴输入你想选择的次数\n");
scanf("%d",&fchoice);
printf("请吴输入选择的休假日\n:      ");
for(j=0;j<fchoice;j++)
{
scanf("%d",&q[j][5]);
}                                  //f录入休假日
printf("请陈输入你想选择的次数\n");
scanf("%d",&gchoice);
printf("请陈输入选择的休假日\n:      ");
for(j=0;j<gchoice;j++)
{
scanf("%d",&q[j][6]);
}                                         //g录入休假日
for(a=0;a<achoice&&q[a][0]!=0;a++)
{
for(b=0;b<bchoice&&q[b][1]!=0;b++)
{
for(c=0;c<cchoice&&q[c][2]!=0;c++)
{
for(d=0;d<dchoice&&q[d][3]!=0;d++)
{
for(e=0;e<echoice&&q[e][4]!=0;e++)
{
for(f=0;f<fchoice&&q[f][5]!=0;f++)
{
for(g=0;g<gchoice&&q[g][6]!=0;g++)
{            
 //7个循环实现遍历
A[0]=q[a][0];
A[1]=q[b][1];
A[2]=q[c][2];
A[3]=q[d][3];
A[4]=q[e][4];
A[5]=q[f][5];
A[6]=q[g][6];
flag=1;
for(k=0;k<6;k++)
{
for(h=k+1;h<7;h++)
{
if(A[k]==A[h]) flag=0;               
 //比较任意两个数是否相等
}
}
if(flag==1)
{                                       
 //如果不等则输出结果
printf("得到以下组合:\n");
printf("钱:  ");
 printf("星期%d \n",A[0]);
printf("赵:  ");
printf("星期%d \n",A[1]);
printf("孙:  ");
printf("星期%d \n",A[2]);
printf("李:  ");
 printf("星期%d \n",A[3]);
printf("周:  ");
 printf("星期%d \n",A[4]);
printf("吴:  ");
printf("星期%d \n",A[5]);
printf("陈:  ");
printf("星期%d \n",A[6]);
printf("   \n  ");
n++;
}
}
}
}
}
}
}
}
if(n==0)
{
printf("对不起,你们的选择不能实现排班,请重新选择!!\n");
}
return 0;
}
请哪位大佬帮忙添加点功能,这是我们的作业,老师说输出0种方案的话,就要输出显示一周中哪天没人选,然后让输入重叠的人的重新输入一下,在输出合理的方案
搜索更多相关主题的帖子: 选择 printf 输入 scanf for 
2019-06-15 18:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495275-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.870226 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved