//.cpp : Defines the entry point for the console application.
//
#include "string.h"
#include <stdio.h>
char *WEEK[] = { "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; struct demand
{
char name[];
int day[];
} man[]; int main()
{
int IsChecked(int p[]);
int t = , j, ren[];
long i, k;
printf("****************保安值班系统****************\n");
printf("请各位分别输入各自合适的休假日\n");
printf("如赵保安选择星期二和星期三,就输入2 3 然后回车\n");
printf("数字0 1 2 3 4 5 6分别代表\n星期天 星期一 星期二 星期三 星期四 星期五 星期六\n");
printf("注意要输入星期天请输入数字0 \n");
for (i = ; i<; i++)
{
printf("请第%d个人输入\n", i + );
for (k = ; k<; k++)
{
//scanf("%d",&man[i].day[k]);
char c;
scanf("%c", &c);
if (c == '\n')
{
break;//读取到换行符,即回车,退出循环。
}
else if (c >= && c <= )
{
man[i].day[k] = (int)(c - '');
//printf("%d %c\n", k, c);
}
else if (c == ' ')
{
k--;
}
} // printf("你输入的day是:");
// for(k=0;k<7;k++)
// {
// printf("%d ",man[i].day[k]);
// }
// printf("\n"); printf("你输入的day是:");
for (int m = ; m < k; m++)
{
printf("%d ", man[i].day[m]);
}
for (int m = k; m < ; ++m)
{
man[i].day[m] = ;
printf("%d ", man[i].day[m]);
}
printf("\n");
} printf("**********************************************");
printf("\n* 赵, 钱, 孙, 李, 周 , 吴, 陈 , *\n");
printf("*--------------------------------------------*\n");
printf("");
for (i = ; i < ; ++i)
{
for (j = ; j<; ++j)
{
ren[j] = (i >> ( * j)) & ; //*通过这个循环,穷尽0-7在数组中所有的排列组合方式*//
} if (!(ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[]))
continue;//*如果赵保安不是休周二或周四,就不用循环了。*//
else if (!(ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[]))
continue; //*如果钱保安不是休周一或周六,就不用循环了。*//
else if (!(ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[]))
continue; //*如果孙保安不是休周三或周日,就不用循环了。*//
else if (!(ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[]))
continue; //*如果李保安不是休周五,就不用循环了。*//
else if (!(ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[]))
continue; //*如果周保安不是休周一或周四或周六,就不用循环了。*//
else if (!(ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[]))
continue; //*如果吴保安不是休周二或周五,就不用循环了。*//
else if (!(ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[] || ren[] == man[].day[]))
continue; //*如果陈保安不是休周三或周六或周日,就不用循环了。*//
else if (!IsChecked(ren))
continue; //*至此,所有的保安可按他们的愿望休假,但是此时的方案可能有两个人同休一天的*//
//*情况发生,因此用这个函数排除,如果0-6这七个数字(一周七天)任何一个包含在数组中则此次匹配失败。*//
for (j = ; j<; ++j)
{
printf("%s ", WEEK[ren[j]]);
} printf(" *");
printf("\n"); //*输出成功匹配方案*//
++t; //*记录成功匹配个数*//
} printf("*--------------------------------------------*");
printf("\n* %d 种 情 况! *", t); //*输出成功匹配方案个数*//
printf("\n**********************************************");
getchar();
return ;
} int IsChecked(int p[])
{
int i, j;
for (i = ; i<; ++i)
{
for (j = ; j< && p[j] != i; ++j); /*从0到6循环,如果数组中缺少0-6的任何一位数字,则返回0,如果0-6都有,则返回。*/
if (j == )
return ;
}
return ; //*这个函数的作用是确保0-6这7个数字均包含在该数组中*//
}

C语言课程设计-保安值班系统支持任意输入保安值班时间的更多相关文章

  1. 学生管理系统-火车订票系统 c语言课程设计

    概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...

  2. Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)

    #Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...

  3. C语言课程设计

    目录 实现目的 游戏玩法介绍 实现流程与作品架构 任务列表及贡献度 总结感想 作品源码与仓库地址(附页) 资料引用与出处(附页) 实现目的 2048,作为一款极其经典的游戏,从发行到现在,已经有了极多 ...

  4. C语言课程设计—图书管理系统

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...

  5. C语言课程设计(成绩管理系统)

    C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...

  6. C语言课程设计——电影院订票系统

    1. 课题简介 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户登录系统后,实现电影放映厅信息管理和电 ...

  7. C++ 课程设计——电梯调度系统

    这是我在本学期C++课程最后的课程设计报告,源代码将会上传到GitHub上. 一.背景 随着经济的不断发展,越来越多的摩天大楼拔地而起,而电梯作为高层建筑物种的运送人员货物的设备也越来越被广泛使用.电 ...

  8. 大一C语言课程设计——班级档案管理系统

    记录我在大一第二学期期末做的C语言课程毕业设计 1. 班级档案管理系统运用到的主要结构体 typedef struct birthday //出生日期{int year;int month;int d ...

  9. C语言课程设计大整数运算

    该大整数运算系统用于对有符号的位数不超过500位的大整数进行加.减.乘.除四则运算和计算N(0<=N<=10000)的阶乘.注意事项 :    1.操作期间,进行四则运算时若大整数为正数请 ...

随机推荐

  1. 【Unity】3.4 将现有的3ds Max模型导入到Unity

    分类:Unity.C#.VS2015 创建日期:2016-04-05 一.简介 这一节我们用一个带有"装子弹和上膛"动画的"枪"模型,介绍在3ds Max 20 ...

  2. 基于node-webkit的web项目打包方案

    下载node-webkit https://github.com/rogerwang/node-webkit 找到Downloads这一小节,然后下载对应平台的node-webkit预编译包.(为了介 ...

  3. Window 分布式学习-好文收藏

    概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...

  4. ubuntu下安装vmTools, 和共享文件

    如果没有需要下载一个vmTools,我是下载的 然后加载到光驱,然后在ubuntu下面可以找到光驱 解压里面的文件, 我解压到 Documents下面 然后ctrl + alt + t进入控制台 cd ...

  5. 【web技术】html特效代码(一)

    小续 还记得当初和八哥一起制作百家成员chm电子书的时候,各种特效啊,这里收集了一些个人比较喜欢的html特效,看个人喜欢了,不喜勿喷啊 html特效代码(一) html特效代码(二) 3D相册代码 ...

  6. Docker 构建网络服务后本机不能访问

    Docker 构建网络服务后本机不能访问 起因 使用tornado构建了一个服务,测试都没有问题 使用docker构建镜像,使用docker run image_name启动服务 使用浏览器访问 12 ...

  7. 【php】https请求

    /** * 模拟提交参数,支持https提交 可用于各类api请求 * @param string $url : 提交的地址 * @param array $data :POST数组 * @param ...

  8. new、delete、以及queue类

    本来以为很容易的,结果还是写了我两个小时. 用指针模拟queue类,再加上类,各种错误,总算是解决掉了-- #include<iostream> #include<cstdlib&g ...

  9. ios 根据scrollview滑动的偏移计算滑动到第几页算法(不同需求不同计算)

    第一种: CGFloat pageWidth = self.scrollView.frame.size.width; int page = floor((self.scrollView.content ...

  10. Bootstrap Popover 隐藏的Javasript方法

    Bootstrap Popover是Bootstrap的弹出提示控件.我们可以通过data属性或者Javascript来调用该控件.data属性调用定制性较差这里就不细说了,我们讲一下Javascri ...