当前位置:首页 » 编程语言 » 轮休安排c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

轮休安排c语言

发布时间: 2023-03-17 11:50:59

c语言实现排班系统。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

structPerson
{
intcnDay;
intday[7];//开的足够大,假设某个人可能7天都忙--.
charpName[10];
};

charname[7][10];//7个人,每人名字不超过10
Personp[7];//7个人的信息
boolisEmpty[7]={false};//标记7天已占用情况

voidsetTable(inti)
{
if(i==7)
{
printf("星期一星期二星期三星期四星期五星期六星期日 ");
for(intk=0;k<7;++k)
{
printf("%s",name[k]);
}
printf(" ");
return;
}
intk=0;
for(;k<p[i].cnDay;++k)
{
if(isEmpty[p[i].day[k]]==false)
{
isEmpty[p[i].day[k]]=true;
strcpy(name[p[i].day[k]],p[i].pName);
setTable(i+1);
isEmpty[p[i].day[k]]=false;
}
}
}

intmain()
{
intday;
intcount;
for(inti=0;i<7;++i)
{
printf("输入第%d个人的名字,然后依次输入每个人的繁忙日,输入0结束此人信息录入! ",i+1);
count=0;
scanf("%s",p[i].pName);
scanf("%d",&day);
while(day!=0)
{
p[i].day[count]=day-1;
++count;
scanf("%d",&day);
}
p[i].cnDay=count;
}
setTable(0);
return0;
}

㈡ 帮我设计一个关于员工排班的C语言程序

给你个c++版本做参考:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
int main(int argc,char *argv[])
{
std::vector<int> arr[7];
std::vector<std::vector<int>> resolution;
for(int i=0;i!=7;++i)
{
int temp;
std::cout<<"please input number "<<i+1
<<" person's all rest days he wanted(1-7):\n";
while(std::cin.peek()!='\n')
{
std::cin>>temp;
arr[i].push_back(temp);
}
::getchar();
}
int arr1[]={1,2,3,4,5,6,7};
do
{
for(int i=0;i!=7;++i)
{
std::vector<int>::iterator iter=
std::find(arr[i].begin(),arr[i].end(),arr1[i]);
if(iter==arr[i].end())
{
break;
}
if(i==6)
{
std::vector<int> temp(arr1,arr1+7);
resolution.push_back(temp);
}
}
}while(std::next_permutation(arr1,arr1+7));
size_t cnt=resolution.size();
std::cout<<"可用的方案如下,按职员A-G的休息日排列:\n";
for(int i=0;i!=cnt;++i)
{
size_t temp=resolution[i].size();
std::cout<<"方案 "<<i+1<<":\n";
for(int j=0;j!=temp;++j)
std::cout<<resolution[i][j]<<" ";
std::cout<<"\n";
}
::system("pause");
return 0;
}

㈢ c语言编程,实验楼值班排班系统。

代码来自编程论坛http://bbs.bccn.net/thread-329752-1-1.html

structst
{
char*a[7];
charb[7][8];
intc;
};
voidpanan(structst*s);//函数声明

intmain(void)
{
structsts[7];
inti=0;
intj=0;
chark;
for(i=0;i<7;i++)
for(j;j<7;j++)
s[i].b[j][0]='';
//定义每个人的名
s[0].a[0]="赵";
s[1].a[1]="钱";
s[2].a[2]="孙";
s[3].a[3]="李";
s[4].a[4]="周";
s[5].a[5]="吴";
s[6].a[6]="陈";

printf("请输入每个人的轮休选择: ");
for(i=0;i<7;i++)//写一个循环,依次输入理想的休息时间
{
printf("%s: ",s[i].a[i]);
for(j=0;j<7;j++)
{
s[i].c=j;
printf("请输入:");
scanf("%s",s[i].b[j]);
printf("%s还有其他的理想的休息日期吗?输入N来完成此输入 >",s[i].a[i]);
fflush(stdin);
k=getchar();//获取键入的值
if(k=='N'||k=='n')
break;//跳出
fflush(stdin);//清空缓冲区(清屏)
}//...跳到了这
system("cls");//清屏
}
system("cls");//清屏
printf("开始判断! ");
panan(s);//判断!
return0;
}
voidpanan(structst*s)
{
inti,j,k,l,m,n,z;//循环用数!
//嵌套循环,寻找可能的解决方案
for(i=0;i<=s[0].c;i++)
{
for(j=0;j<=s[1].c;j++)
{

if(strcmp(s[1].b[j],s[0].b[i])==0)
//strcmp比较两个字符串
//设这两个字符串为str1,str2,
//若str1==str2,则返回零;
//若str1>str2,则返回正数;
//若str1<str2,则返回负数。
{
continue;
}
//如果无相同的,就继续执行
for(k=0;k<=s[2].c;k++)
{
if(strcmp(s[2].b[k],s[1].b[j])==0)
continue;
if(strcmp(s[2].b[k],s[0].b[i])==0)
continue;
//同理,继续执行
for(l=0;l<=s[3].c;l++)
{
if(strcmp(s[3].b[l],s[0].b[i])==0)
continue;
if(strcmp(s[3].b[l],s[1].b[j])==0)
continue;
if(strcmp(s[3].b[l],s[2].b[k])==0)
continue;
//循环套起来真的是很烧脑
for(m=0;m<=s[4].c;m++)
{
if(strcmp(s[4].b[m],s[0].b[i])==0)
continue;
if(strcmp(s[4].b[m],s[1].b[j])==0)
continue;
if(strcmp(s[4].b[m],s[2].b[k])==0)
continue;
if(strcmp(s[4].b[m],s[3].b[l])==0)
continue;
//同理,继续执行
for(n=0;n<=s[5].c;n++)
{
if(strcmp(s[5].b[n],s[0].b[i])==0)
continue;
if(strcmp(s[5].b[n],s[1].b[j])==0)
continue;
if(strcmp(s[5].b[n],s[2].b[k])==0)
continue;
if(strcmp(s[5].b[n],s[3].b[l])==0)
continue;
if(strcmp(s[5].b[n],s[4].b[m])==0)
continue;
//我猜你也想到了!写完上面的一部分可以粘到下面来嘛!
for(z=0;z<=s[6].c;z++)//最后一层判断。
{
if(strcmp(s[6].b[z],s[0].b[i])==0)
continue;
if(strcmp(s[6].b[z],s[1].b[j])==0)
continue;
if(strcmp(s[6].b[z],s[2].b[k])==0)
continue;
if(strcmp(s[6].b[z],s[3].b[l])==0)
continue;
if(strcmp(s[6].b[z],s[4].b[m])==0)
continue;
if(strcmp(s[6].b[z],s[5].b[n])==0)
continue;
//输出结果!!
printf("%-4s,%-4s,%-4s,%-4s,%-4s,%-4s,%-4s ",s[0].a[0],s[1].a[1],s[2].a[2],s[3].a[3],s[4].a[4],s[5].a[5],s[6].a[6]);
printf("============================================================= ");
printf("%s,%s,%s,%s,%s,%s,%s ",s[0].b[i],s[1].b[j],s[2].b[k],s[3].b[l],s[4].b[m],s[5].b[n],s[6].b[z]);
//千万千万千万不要漏了括号!!
//不然死不瞑目!╭( ̄m ̄*)╮
}//for(z=0;z<=s[6].c;z++)
}//for(n=0;n<=s[5].c;n++)
}//for(m=0;m<=s[4].c;m++)
}//for(l=0;l<=s[3].c;l++)
}//for(k=0;k<=s[2].c;k++)
}//for(j=0;j<=s[1].c;j++)
}//for(i=0;i<=s[0].c;i++)

}//voidpanan(structst*s)

㈣ 请问c语言vc6.0保安轮休问题应该怎么编程

方法/步骤
首先我们先去网上找到这个软件的安装包,然后安装到自己电脑上,在安装的过程中,W7系统可能会说软件与系统不兼容,这个没事的,继续安装就是

安装好后双击这个软件在桌面上的图标,打开软件后,我们需要建立c语言编写文件,点击文件新建一个C++source file,然后开始编写程序!

编写程序的过程中,要理清思路,先把头文件写上,该注释的地方还是要注释,这样以后看程序的时候不至于不懂!

把程序写好后,一定要保存,其实我们在写程序的时候就应该写一句保存一次,这是因为这个软件有时候运行不稳定!万一出现程序闪退,我们写的程序就没有了,这让人很抓狂的!

保存好程序后,我们可以开始编译执行链接程序了,如果一切无误的话,会生成一个exe文件,我们就可以实现编写的功能了,如果程序报错,那么我们需要找到错误的地方进行改正!

说了这么多,是时候自己动手验证了,这个软件使用起来很方便,功能也很强大,多练习几次就一定会使用的!