一个小题目,高手做做
有一天,文藻外语学院里某单位的某个人神秘兮兮的说:“我们这个单位的所有工作人员 ,包括我在内,总共有16名教师和助理。而且无论有没有把我计算在内,以下的情况都不会改变:1,教师多于助理。
2,男助理多于男教师。
3,男教师多于女教师。
4,最少有一位女助理。
请问,文藻外语学院该单位所有教职员工的性别,职级以及人数各是多少?而讲这段话的人又是其中的什么人?
能用程序实现吗?请各位高手看看
2011-09-06 14:56

程序代码:#include<stdio.h>
void main()
{
int mt,ma,ft,fa;
int a[4],b[4];
for(mt=0;mt<=16;mt++)
for(ma=0;ma<=16;ma++)
for(ft=0;ft<=16;ft++)
for(fa=0;fa<=16;fa++)
if((mt+ft+ma+fa==16)&&(mt+ft>ma+fa)&&(ma>mt)&&(mt>ft)&&(fa>=1))
{
a[0]=mt;a[1]=ft;a[2]=ma;a[3]=fa;
printf("男教师:%d\t女教师:%d\t男助教:%d\t女助教:%d\n",mt,ft,ma,fa);
}
for(mt=0;mt<=15;mt++)
for(ma=0;ma<=15;ma++)
for(ft=0;ft<=15;ft++)
for(fa=0;fa<=15;fa++)
if((mt+ft+ma+fa==15)&&(mt+ft>ma+fa)&&(ma>mt)&&(mt>ft)&&(fa>=1))
{
b[0]=mt;b[1]=ft;b[2]=ma;b[3]=fa;
printf("男教师:%d\t女教师:%d\t男助教:%d\t女助教:%d\n",mt,ft,ma,fa);
}
if(a[0]>b[0])
printf("说这话的是男教师\n");
else if(a[1]>b[1])
printf("说这话的是女教师\n");
else if(a[2]>b[2])
printf("说这话的是男助教\n");
else
printf("说这话的是女助教\n");
}
2011-09-06 15:49

程序代码:# include <stdio.h>
int judge (int mt,int ma,int ft,int fa)
{
if ( (mt+ft)>(ma+fa) && ma>mt && mt>ft && fa>=1)
return 1;
else
return 0;
}
int main(void)
{
int mt,ma,ft,fa;
for (mt=0; mt<16; ++mt)
for (ma=0; ma<16; ++ma)
for (ft=0; ft<16; ++ft)
for (fa=0; fa<16; ++fa)
if ((mt+ma+ft+fa)==16 && judge(mt,ma,ft,fa))
if ( judge (mt-1,ma,ft,fa) )
printf("讲话的是男教师,男教师有%d,男助理有%d,女教师有%d,女助理有%d\n",mt,ma,ft,fa);
else if ( judge (mt,ma-1,ft,fa) )
printf("讲话的是男助理,男教师有%d,男助理有%d,女教师有%d,女助理有%d\n",mt,ma,ft,fa);
else if ( judge (mt,ma,ft-1,fa) )
printf("讲话的是女教师,男教师有%d,男助理有%d,女教师有%d,女助理有%d\n",mt,ma,ft,fa);
else if ( judge (mt,ma,ft,fa-1) )
printf("讲话的是女助理,男教师有%d,男助理有%d,女教师有%d,女助理有%d\n",mt,ma,ft,fa);
else
printf("本题无解\n");
return 0;
}
2011-09-06 16:38
2011-09-06 17:23
2011-09-07 16:02
2011-09-07 16:15
那个循环啊!
2011-09-07 20:02