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

C语言课程设计-保安值班系统支持任意输入保安值班时间相关推荐

  1. C语言课程设计:通讯录系统

    C语言课程设计:通讯录系统 [题目4]通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能.由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码.电话号码 ...

  2. 考勤管理系统c语言,C语言课程设计学生考勤系统最终版(范文1)

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文 ...

  3. c语言程序设计论文背单词系统,C语言课程设计-背单词系统(含程序)

    C语言课程设计-背单词系统(含程序) 综合性程序设计报告 设计题目: 背单词系统 指导教师: XXX 班 级: 学 号: 设 计 者: XXX 成 绩: _______________ 设计时间: 年 ...

  4. c语言写考勤系统,C语言课程设计学生考勤系统

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜 ...

  5. c语言作业制作仓库管理系统,C语言课程设计 仓库管理系统

    <C语言课程设计 仓库管理系统>由会员分享,可在线阅读,更多相关<C语言课程设计 仓库管理系统(22页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计实训报告实训题目: 仓 ...

  6. c语言程序设计学生考勤系统,C语言课程设计学生考勤系统最终版(样例3)

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文 ...

  7. c语言单词记忆软件源码,c语言课程设计背单词系统的程序代码

    c语言课程设计背单词系统的程序代码 1综合性程序设计报告设计题目:背单词系统指导教师:班 级:学 号:设 计 者:成 绩:设计时间:2010 年 5 月 27 日2目录1 题目描述---------- ...

  8. C语言课程设计 - 火车票预订系统

    C语言课程设计 - 火车票预订系统 文件介绍 代码 main.c(全) mymac.h(全) database.c(不全) mainWindow.c (全) user.c (不全) manager.c ...

  9. c语言课程设计报告停车系统,停车场管理系统C语言课程设计

    <停车场管理系统C语言课程设计>由会员分享,可在线阅读,更多相关<停车场管理系统C语言课程设计(27页珍藏版)>请在人人文库网上搜索. 1.计算机科学与技术系课程设计报告20 ...

最新文章

  1. c语言程序设计迷宫,C语言程序设计课程设计-迷宫.doc
  2. js路由在php上面使用,React中路由使用详解
  3. python文件读写用到的库_python 读写txt文件并用jieba库进行中文分词
  4. mysql5.7参数简单介绍
  5. 内购订单进行二次处理_更学教育:卖家在投诉异常订单的流程是怎么样的?
  6. OCEval-动态执行ObjectiveC的热修复方案
  7. kms激活win10
  8. 用批处理的方式解压文件
  9. Asp.Net Core 系列教程 (一)
  10. HashMap、ConcurrentHashMap(1.7、1.8)源码分析 + 红黑树
  11. 深度linux系统初始化,deepin官方论坛-深度科技官网旗下网站
  12. 支付宝小程序获取手机号和授权信息遇坑锦集
  13. 树莓派4B简单使用内容(以移植QT应用为例)
  14. VS:如何解决VS2015的30天试用期已过即VS2015许可证已过期的问题
  15. OA办公系统,推动企业管理革新
  16. VMware vSphere 5 HA详解 (part1)
  17. 从0开始一步一步安装walle
  18. 网易视频云CEO余利华:云服务的核心仍是用户体验
  19. 【已实现】如何一个小程序实现支付给不同主体的商户号?
  20. 安卓TextView文本框与自定义边框

热门文章

  1. 【Python】Python抽象类
  2. RK3399驱动开发 | 21 -Marvell交换机芯片88E6390X调试(基于linux主线5.4.32内核)
  3. 驻极体麦和MEMS麦
  4. VBS脚本修改部分系统默认路径
  5. android apk执行shell脚本
  6. java后台接收json map值
  7. 关系抽取SOTA之分区过滤网络(PFN)
  8. 数据库系统和文件系统的区别与联系
  9. 焊接电流检测仪TK6700电焊机电量参数综合校验仪
  10. 404页面跳转到其他页面的安全做法