1. 排班系统。c语言
我先说说思路:用一个7*7的二维数组pb存储一周中每天是谁休息,数组行标0-6表示人员(钱-陈),列标0-6表示星期(日-六),初始值存储为每人的休息日意愿,比如钱想休息周一、六,即置pb[0][1]和pb[0][6]为1,其余为0(表示不情愿休息),依次类推,初始化其他人员的休息意愿。接下来就对这个数组中为1的元素进行筛选修改,比如将pb[i][j]=1改为pb[i][j]=2,即表示让人员i在星期j休息,当然人员i不能又在其它天休息了,其他人员也不能在星期j这天休息了,也就是i行、j列都只能有一个为2的值,经过7次设置,即可得到一种方案。可以考虑用递归算法实现。
#include<stdio.h>
#include<conio.h>
#defineT7//排班周期
#defineN7//人员数目
#defineX1//每人每周期可以休息X天,X<T
#defineY1//每天最多可以有Y人休息,Y>=N*X/T
inttotal=0;
voidPrint(intpb[][T]){
inti,j;
printf(" XiuXiFangAn%d: ",++total);
for(i=0;i<N;++i){
printf("%d:",i);
for(j=0;j<T;++j){
if(pb[i][j]==2)printf("%d",j);
}
printf(" ");
}
getch();
}
intKeXing(intpb[][T],intk,intj){//检验k人员在j日期休息是否可行
ints=0,i;
for(i=0;i<T;++i)s+=(pb[k][i]==2);
if(s>X)return0;
for(s=0,i=0;i<N;++i)s+=(pb[i][j]==2);
if(s>Y)return0;
return1;
}
voidPaiBan(intpb[][T],intk){//给第k位人员安排休息日
inti,j;
for(j=0;j<T;++j){
if(pb[k][j]==1){//k人员愿意在j日期休息
pb[k][j]=2;
if(KeXing(pb,k,j)){
if(k==N-1){//找到一个方案
Print(pb);//输出休息方案
}else{
PaiBan(pb,k+1);
}
}
pb[k][j]=1;//准备更换下一个休息意愿日测试
}
}
}
intmain(){
inti,j,pb[N][T]={0};
printf("====PaiBanXiTong==== ");
printf("XiuXiYiYuani,j(RenYuani=0~%d,RiQij=0~%d,JieShu-1,-1): ",N-1,T-1);
do{
scanf("%d,%d",&i,&j);
if(i>=0&&i<N&&j>=0&&j<T){
pb[i][j]=1;
}else{
break;
}
}while(1);
PaiBan(pb,0);
printf(" GongYou%dZuFangAn.",total);
printf(" Finished! ");
getch();
return0;
}
根据你的休息意愿设置,可以得到4中方案。
2. 一种简单英文词典排版系统的实现 C语言编程
#include
"stdio.h"
#include
"stdlib.h"
#include
"string.h"
#include
"ctype.h"
#define
ROWS
256
#define
COLS
32
static
FILE
*fp;
static
char
a[ROWS][COLS];
char
get_option(void);
int
b(int
count);
void
c(char
*pt[],
int
count);
int
check(char
arr[],
int
count);
void
storage(char
*pt[],
int
count);
int
main(void)
{
int
i,count;
int
start;
char
*pt[ROWS];
char
ch,
len;
char
input;
if((fp=fopen("words.txt","a+"))==NULL)
{
fputs("不能打开或建立文件!\n",stderr);
exit(1);
}
fseek(fp,0L,SEEK_END);
start=(int)ftell(fp)/32;
count=start;
rewind(fp);
if(fread(a,32*sizeof(char),start,fp)==0)
{
i=0;
puts("请输入单词(每行一个),在新行输入END结束输入:");
while(i<ROWS&&scanf("%s",
a[i])==1)
{
fflush(stdin);
if(strncmp(a[i],"END",3)==0)
{
count+=i;
break;
}
if(check(a[i],
i))
continue;
i++;
}
}
puts("您要做些什么?");
puts("a.
显示已有的单词
b.
添加新单词");
puts("c.
对已有的单词进行排序
d.
退出");
while((input=get_option())!='d')
{
if(input=='a')
{
puts("已有的单词:");
for(i=0;i<count;i++)
{
printf("
");
puts(a[i]);
}
}
if(input=='b')
{
puts("请输入新的单词(每行一个),在新行输入END结束输入:
");
count=b(count);
}
if(input=='c')
{
puts("对单词进行排序:");
c(pt,
count);
for(i=0;i<count;i++)
{
printf("
");
puts(pt[i]);
}
}
puts("还要做些什么?");
}
storage(pt,count);
fclose(fp);
puts("再见!");
return
0;
}
char
get_option(void)
{
char
ch;
while((ch=getchar())<'a'||ch>'d')
{
while((ch=getchar())!='\n')
;
puts("请输入a,b,c或者d.");
}
fflush(stdin);
return
ch;
}
int
b(int
count)
{
int
i;
i=count;
while(i<ROWS&&scanf("%s",
a[i])==1)
{
fflush(stdin);
if(check(a[i],
i))
continue;
if(strncmp(a[i],"END",3)==0)
{
count=i;
break;
}
i++;
}
return
count;
}
void
c(char
*pt[],
int
count)
{
int
i,j;
char
*temp;
for(i=0;i<ROWS;i++)
pt[i]=a[i];
for(i=0;i<count;i++)
for(j=i+1;j<count;j++)
{
if(strcmp(pt[i],pt[j])>0)
{
temp=pt[i];
pt[i]=pt[j];
pt[j]=temp;
}
}
}
int
check(char
arr[],
int
count)
{
int
i;
int
flag=0;
for(i=0;i<strlen(arr);i++)
if(isalpha(arr[i])==0)
{
printf("%s不是一个单词.\n",arr);
flag=1;
break;
}
for(i=0;i<count;i++)
if(strncmp(a[i],a[count],strlen(a[count])+1)==0)
{
puts("重复的单词!");
flag=1;
}
return
flag;
}
void
storage(char
*pt[],
int
count)
{
int
i,j;
char
ptr[ROWS][COLS];
c(pt,
count);
for(i=0;i<count;i++)
for(j=0;pt[i][j]!='\0';j++)
ptr[i][j]=pt[i][j];
fp=fopen("words.txt","w+");
rewind(fp);
fwrite(ptr,32*sizeof(char),count,fp);
}
3. C语言~排版~要求运行时,显示的整齐些。
#include<stdio.h>
#include<math.h>
void main()
{
int m,i,k,h,leap;
h=0;
for(m=100;m<=200;m++)
{
k=sqrt(m);
leap = 1;
for(i=2;i<=k;i++)
{
if(m%i==0)
{
leap=0;
break;
}
}
if(leap)
{
printf("%-4d",m);
h++;
if(h%10==0)
{
printf("\n");
}
}
}
}
4. 关于c语言的理解。是否它的排版有规定,例如什么in 什么#include,然后{}这样的括号,
嗯....这不是最基础的吗,你随便看个入门书看几页就懂了,一点不懂这样说也说不清。
stdio.h是个有用的文件,里面有一些关于输入输出的函数定义,可以调用,如果要使用它里面的东西就要包含它:'#include<stdio.h>'
还有一下其他的什么,要用它里面的东西就要'#include<xxxx>'
main函数就是程序开始的时候调用的函数,隔空行不是必须的。
5. 在编写c语言时,语句排版比较乱,怎么办
建议楼主平常写程序时多注意下~毕竟自动排版之类的功能没有那么完善。
如果是排版的话,选中需要排版的区域,然后ALT+F8,可以自动调整缩进,楼主指的应该就是这个吧?~
6. C语言程序设计作业 简单排版
肯定是一个题一个报告,每个题的任务描述、设计内容、流程、结果都不一样。怎么能放在一个报告里边。流程图应该是你画出来的,不是写出来的吧。部分核心代码可以贴在实验结果里边。
7. C语言编程排班系统
#include <stdio.h>
int n = 0;
int rest[7][7];
void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}
void perm(int list[], int k, int m)
{
int i;
int j;
if(k > m)
{
for (i=0; i<7; i++)
{
for (j=0; j<7; j++)
{
if (rest[i][j] == 0)
return;
if (rest[i][j] != list[i])
continue;
if (rest[i][j] == list[i])
break;
}
}
n++;
printf("Solution: %d\n", n);
printf("赵 钱 孙 李 周 吴 陈\n");
printf("=============================================================\n");
for(i = 0; i <= m; i++)
{
switch (list[i])
{
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("星期日 ");
break;
default:
break;
}
}
printf("\n\n\n");
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}
int main()
{
printf("\n");
printf("注意:\n");
printf(" 1.请按钱、赵、孙、李、周、吴、陈的顺序输入休息每个人的时间。\n");
printf(" 2.输入星期时,请直接输入数字,如要输入'星期一',就用'1'代替,以此类推。\n");
printf(" 3.星期与星期之间用空格隔开,每输入完一个人的休息日,在其后输入0,再按回车继续下一人。\n");
printf("\n");
int list[] = {1, 2, 3, 4, 5, 6, 7};
int i, j;
for(i = 0; i < 7; i++)
{
printf("请输入第 %d 个人的休息时间:\n", i+1);
for(j = 0; j < 7; j++)
{
scanf("%d", &rest[i][j]);
if(rest[i][j] == 0)
break;
}
}
printf("\n\n\n");
perm(list, 0, 6);
getchar();
getchar();
printf("输出完毕,按回车键结束!\n");
return 0;
}
8. c++自动排版快捷键
c++自动排版快捷键:但是有 【工具】 【c/c++代码格式化】。
vs有一个自动格式化代码快捷键:Ctrl+K,Ctrl+F,就是先同时按下ctrl和K两个键,然后松开K(不松开ctrl),再按下F。
整理对齐代码快捷键是Alt+F8组合键。centOS 下webstorm 格式化代码的快捷键 Ctrl+Shift+l 。windows 下 webstorm 格式化代码的快键键 Ctrl+Alt+l。
支持数据封装和数据隐藏:
在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。
在面向对象的程序设计中,将数据和对该数据进行合法操作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。
每个给定类的对象包含这个类所规定的若干私有成员、公有成员及保护成员。完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。