标题:一个小题目,高手做做
只看楼主
lin471306489
Rank: 4
等 级:业余侠客
帖 子:136
专家分:247
注 册:2011-8-16
结帖率:100%
已结贴  问题点数:20 回复次数:6 
一个小题目,高手做做
有一天,文藻外语学院里某单位的某个人神秘兮兮的说:“我们这个单位的所有工作人员 ,包括我在内,总共有16名教师和助理。而且无论有没有把我计算在内,以下的情况都不会改变:
 
1,教师多于助理。
 2,男助理多于男教师。
 3,男教师多于女教师。
 4,最少有一位女助理。
 
请问,文藻外语学院该单位所有教职员工的性别,职级以及人数各是多少?而讲这段话的人又是其中的什么人?

能用程序实现吗?请各位高手看看
搜索更多相关主题的帖子: 教师 助理 工作人员 
2011-09-06 14:56
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
得分:7 
我不是高手,就只会用最笨的方法了
程序代码:
#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
edwardflee
Rank: 4
等 级:业余侠客
帖 子:145
专家分:234
注 册:2011-7-27
得分:7 
我的好像更笨呢
程序代码:
# 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;
}



[ 本帖最后由 edwardflee 于 2011-9-6 16:42 编辑 ]

学C的秘诀=每天都来泡论坛
2011-09-06 16:38
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
得分:7 
#include <stdio.h>

int main(void)
{
    int fteacher,mteacher,fassistant,massistant,teacher,assistant;
    int a[4];
    for(teacher=9;teacher<16;teacher++)
    {
        for(mteacher=teacher/2+1;mteacher<teacher;mteacher++)
        {
            fteacher=teacher-mteacher;
            for(fassistant=1;fassistant<16-teacher;fassistant++)
            {
                massistant=16-teacher-fassistant;
                if(massistant<=mteacher)
                    break;
                a[0]=mteacher;
                a[1]=massistant;
                a[2]=fteacher;
                a[3]=fassistant;
                if(a[1]-1==a[0] || a[0]-1==a[2] || a[3]-1==0)
                {
                    printf("teacher:%d assistant:%d\nmteacher:%d fteacher:%d massistant:%d fassistant%d\n",mteacher+fteacher,massistant+fassistant,mteacher,fteacher,massistant,fassistant);
                    printf("\nis fteacher\n");
                }
                else
                {
                    printf("teacher:%d assistant:%d\nmteacher:%d fteacher:%d massistant:%d fassistant%d\n",mteacher+fteacher,massistant+fassistant,mteacher,fteacher,massistant,fassistant);
                    printf("is massistent or mteacher or fassistant");
                }
            }
        }
    }
}
2011-09-06 17:23
lin471306489
Rank: 4
等 级:业余侠客
帖 子:136
专家分:247
注 册:2011-8-16
得分:0 
神一般的多循环
2011-09-07 16:02
lin471306489
Rank: 4
等 级:业余侠客
帖 子:136
专家分:247
注 册:2011-8-16
得分:0 
大家赶紧发表意见啊,准备结贴了
2011-09-07 16:15
菜鸟7号
Rank: 2
等 级:论坛游民
帖 子:21
专家分:17
注 册:2011-8-29
得分:0 
回复 6楼 lin471306489
那个循环啊!
2011-09-07 20:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-349289-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.179307 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved