一道C语言程序设计题,明天就要考试了,复习时突然碰见一个没碰过的题型,求解答。
根据已知条件,F为星期四是可以知道的,可以将星期一至星期日分别看成1-7,然后通过多重循环,先将A从1开始,B,C,D,E,F,G也都是这样,然后通过条件判定来得出医生的分别值班数值,注意该条件中每个医生的数值不能相等,即可算出。(还是大一新生,写的有点麻烦,不知道有没有更好的方法)
#include <stdio.h>
int main(void)
{
int A=1,B=1,C=1,D=1,E=1,F=4,G=1;
for(A=1;A<=7;A++){
for(B=1;B<=7;B++){
for(C=1;C<=7;C++){
for(D=1;D<=7;D++){
for(E=1;E<=7;E++){
for(G=1;G<=7;G++){
if(A==C+1 && D==E+2 && B==G-3 && B+C==2*F && A!=B && A!=D && A!=E && A!=F && A!=G && B!=C && B!=D && B!=E && B!=F && C!=D && C!=E && C!=F && C!=G && D!=F && D!=G && E!=F && E!=G && F!=G){
printf("A在星期%d值班\nB在星期%d值班\nC在星期%d值班\nD在星期%d值班\nE在星期%d值班\nF在星期%d值班\nG在星期%d值班\n",A,B,C,D,E,F,G);
}
}
}
}
}
}
}
return 0;
}
该回答引用ChatGPT
上述代码首先定义了一个包含所有医生名字的字符串数组 doctors,以及一个长度为 7 的字符串数组 duty,用于存储一周中每天的医生值班情况。
然后,根据已知条件确定了周一至周日每天的医生值班情况,并将其存储到 duty 数组中。最后,使用 for 循环遍历 duty 数组,输出每天的值班情况。
using System;
public class Program {
public static void Main() {
// 定义医生名字数组
string[] doctors = { "A", "B", "C", "D", "E", "F", "G" };
// 定义医生值班数组
string[] duty = new string[7];
// 根据已知条件确定医生值班情况
duty[0] = "B"; // 周一
duty[1] = "C"; // 周二
duty[2] = "F"; // 周三
duty[3] = "D"; // 周四
duty[4] = "E"; // 周五
duty[5] = "G"; // 周六
duty[6] = "A"; // 周日
// 输出每天的值班情况
for (int i = 0; i < 7; i++) {
Console.WriteLine("周{0}: {1}", i + 1, duty[i]);
}
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话: