用c语言编程一个值班表怎么

时间:2025-01-25 15:34:03 游戏攻略

在C语言中,可以使用多种方法来实现值班表。以下是两种常见的方法:

方法一:使用switch语句

这种方法通过用户输入的整数来表示星期几,并使用switch-case语句来匹配并打印值班人员信息。代码如下:

```c

include

int main() {

int day;

printf("请输入要查询的日期(1-7): ");

scanf("%d", &day);

switch (day) {

case 1:

printf("星期一值班的是张三。\n");

break;

case 2:

printf("星期二值班的是李四。\n");

break;

case 3:

printf("星期三值班的是王五。\n");

break;

case 4:

printf("星期四值班的是赵六。\n");

break;

case 5:

printf("星期五值班的是丁七。\n");

break;

case 6:

printf("星期六值班的是周小华。\n");

break;

case 7:

printf("星期日为休息日,无人值班。\n");

break;

default:

printf("输入错误,请输入1-7之间的整数。\n");

break;

}

return 0;

}

```

方法二:使用数组和条件判断

这种方法通过用户输入的条件来确定医生的值班顺序。代码如下:

```c

include

include

define MAX_DOCTORS 7

define MAX_CONDITIONS 10

typedef struct {

int day;

char doctor;

} Condition;

int main() {

int n;

printf("请输入医生数量: ");

scanf("%d", &n);

Condition conditions[MAX_CONDITIONS];

int condition_count = 0;

for (int i = 0; i < condition_count; i++) {

char op1, op2, op3;

int day1, day2, day3;

char doctor1, doctor2, doctor3;

printf("请输入条件 %d (编号 比较运算符 编号 天数): ", i + 1);

scanf(" %c %c %d %c %d %c", &op1, &op2, &day1, &op3, &day2, &doctor1);

conditions[condition_count].day = day1;

conditions[condition_count].doctor = doctor1;

if (op2 == '>') {

conditions[condition_count].doctor = doctor2;

} else if (op2 == '<') {

conditions[condition_count].doctor = doctor3;

}

condition_count++;

}

// 排序条件

for (int i = 0; i < condition_count - 1; i++) {

for (int j = 0; j < condition_count - 1 - i; j++) {

if (conditions[j].day > conditions[j + 1].day) {

Condition temp = conditions[j];

conditions[j] = conditions[j + 1];

conditions[j + 1] = temp;

}

}

}

// 输出值班表

printf("星期一至星期日的值班人员为:\n");

for (int i = 0; i < n; i++) {

printf("%c\n", conditions[i].doctor);

}

return 0;

}

```

这两种方法各有优缺点,方法一简单直观,适合快速查询特定日期的值班人员;方法二功能更强大,适合处理复杂的条件关系,但实现起来较为复杂。根据实际需求选择合适的方法即可。