- 论坛徽章:
- 0
|
下面这道逻辑题,我写了一部分。
主席台的一排座位上坐着六个不同职业的男人
他们穿着不同颜色的礼服,用不同品牌的手机
开不同的小汽车,有不同的爱好。已知:
1、高老庭是老师
2、牛老麟是足球员,他不爱打排球
3、穿灰色礼服的人开保时捷
4、用摩托罗拉手机的人开奥迪,他旁边的人用三星手机
5、靓仔胜用诺基亚手机,开奔驰跑车
6、用索爱手机的人爱上网
7、作家爱看书
8、肥老朱坐在四眼金的右边
9、牛老麟坐在第二位
10、商人坐在宿老俊旁边,他开的是劳斯莱斯
11、用NEC手机的男士旁边的人不穿灰色礼服
12、歌手爱跳舞
13、坐最右边的人穿紫色礼服
14、开法拉利的人坐在穿白色礼服的人旁边
15、蓝色礼服旁边的市长正用飞利浦手机打电话
16、肥老朱穿黑色礼服,他爱打桌球
17、歌手旁边的人既不爱上网,又不爱看书
18、穿红礼服的人不坐在作家旁边
19、坐第四位的人爱下象棋
20、靓仔胜不是歌手
请问谁开宝马?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SUCCESS 0
#define FAILURE 1
typedef enum enName
{
NAME_GAO = 0,
NAME_NIU,
NAME_SHENG,
NAME_ZHU,
NAME_JIN,
NAME_SU,
NAME_MAX
}EN_NAME;
typedef enum enVocation
{
VOCATION_TEACHER = 0,
VOCATION_FOOTBALLER,
VOCATION_WRITER,
VOCATION_SINGER,
VOCATION_MERCHANT,
VOCATION_MAYOR,
VOCATION_MAX
}EN_VOCATION;
typedef enum enColor
{
COLOR_RED = 0,
COLOR_GRAY,
COLOR_PURPLE,
COLOR_BLACK,
COLOR_WHITE,
COLOR_BLUE,
COLOR_MAX
}EN_COLOR;
typedef enum enPhone
{
PHNOE_MOTO = 0,
PHNOE_SAMSUNG,
PHNOE_NEC,
PHNOE_SONY,
PHNOE_NOKIA,
PHNOE_PHILLIPS,
PHNOE_MAX
}EN_PHONE;
typedef enum enCar
{
CAR_BENZ = 0,
CAR_AUDI,
CAR_ROLLSROYCE,
CAR_BMW,
CAR_PORSHCE,
CAR_FERRARI,
CAR_MAX
}EN_CAR;
typedef enum enInterest
{
INTEREST_VOLLYBALL = 0,
INTEREST_WEB,
INTEREST_READING,
INTEREST_SNOOKER,
INTEREST_CHESS,
INTEREST_DANCING,
INTEREST_MAX
}EN_INTEREST;
typedef enum enSeat
{
SEAT_ONE = 0,
SEAT_TWO,
SEAT_THREE,
SEAT_FOUR,
SEAT_FIVE,
SEAT_SIX,
SEAT_MAX
}EN_SEAT;
typedef struct tagPerson
{
int name;
int vocation;
int color;
int phone;
int car;
int interest;
int seat;
}PERSON;
extern int SixMenName(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf);
extern int SixMenVocation(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf);
extern int SixMenColor(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf);
extern int SixMenPhone(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf);
extern int SixMenCar(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf);
extern int SixMenInterest(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf);
extern int SixMenSeat(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf);
int main(int argc, char* argv[])
{
PERSON pa = {0};
PERSON pb = {0};
PERSON pc = {0};
PERSON pd = {0};
PERSON pe = {0};
PERSON pf = {0};
SixMenName(&pa, &pb, &pc, &pd, &pe, &pf);
return SUCCESS;
}
int SixMenName(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf)
{
pa->name = NAME_GAO;
pb->name = NAME_NIU;
pc->name = NAME_SHENG;
pd->name = NAME_ZHU;
pe->name = NAME_JIN;
pf->name = NAME_SU;
SixMenVocation(pa, pb, pc, pd, pe, pf);
return SUCCESS;
}
int SixMenVocation(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf)
{
/*高老庭是老师 */
pa->vocation = VOCATION_TEACHER;
/*牛老麟是足球员*/
pb->vocation = VOCATION_FOOTBALLER;
/*c语言的弱点就在这里,排列组合还要程序员自己来实现
而java, python都有序列类型的数据结构,不需要程序员来实现
排列组合
总之,c的枚举类型远远不如python,java的序列好用*/
for (pc->vocation = VOCATION_TEACHER, pc->vocation < VOCATION_MAX, (pc->vocation)++)
{
if ((pc->vocation == pa->vocation) || (pc->vocation == pb->vocation))
{
break;
}
/*靓仔胜不是歌手*/
if (pc->vocation == VOCATION_SINGER)
{
break;
}
for (pd->vocation = VOCATION_TEACHER, pd->vocation < VOCATION_MAX, (pd->vocation)++)
{
if ((pd->vocation == pa->vocation) || (pd->vocation == pb->vocation) || (pd->vocation == pc->vocation))
{
break;
}
for (pe->vocation = VOCATION_TEACHER, pe->vocation < VOCATION_MAX, (pe->vocation)++)
{
if ((pe->vocation == pa->vocation) || (pe->vocation == pb->vocation)
|| (pe->vocation == pc->vocation) || (pe->vocation == pd->vocation))
{
break;
}
for (pf->vocation = VOCATION_TEACHER, pf->vocation < VOCATION_MAX, (pf->vocation)++)
{
if ((pf->vocation == pa->vocation) || (pf->vocation == pb->vocation)
|| (pf->vocation == pc->vocation) || (pf->vocation == pd->vocation)
|| (pf->vocation == pe->vocation))
{
break;
}
SixMenColor(pa, pb, pc, pd, pe, pf);
}
}
}
}
return SUCCESS;
}
int SixMenColor(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf)
{
return SUCCESS;
}
int SixMenPhone(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf)
{
return SUCCESS;
}
int SixMenCar(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf)
{
return SUCCESS;
}
int SixMenInterest(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf)
{
return SUCCESS;
}
int SixMenSeat(PERSON *pa, PERSON *pb, PERSON *pc, PERSON *pd, PERSON *pe, PERSON *pf)
{
return SUCCESS;
} |
|