c语言输入性别用字符吗(c语言新郎和新娘)
c语言输入性别用字符吗(c语言新郎和新娘)#include "stdio.h" main() { char husband[3] = {'A' 'B' 'C'} wife[3] = {'X' 'Y' 'Z'}; int i j k; for(i=0;i<3;i ) for(j=0;j<3;j ) for(k=0;k<3;k ) if(i!=j && j!=k && i!=k) /*不能1个新娘配2个新郎*/ { /*得到一种配对方式*/ if (match(i j k wife))
题目要求:
三对新婚夫妇参加婚礼,三个新郞为A、B、C,三个新娘为X、Y、Z。有人不知道谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是这样的:A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。这人听后知道他们在开玩笑,全是假话。请编程找出谁将和谁结婚。
题目分析:
如果“乱点鸳鸯谱”的话,三个新郎A、B、C和三个新娘X、Y、Z共有6种配对组合方式。这是因为不能出现两个新郎(新娘)和一个新娘(新郎)结婚的状况,所以只可能有3*2*1=6种配对方案。因此只要穷举出这6种配对方案,再应用问题中给出的约束条件就可以筛选出正确的答案来。
#include "stdio.h"
main()
{
char husband[3] = {'A' 'B' 'C'} wife[3] = {'X' 'Y' 'Z'};
int i j k;
for(i=0;i<3;i )
for(j=0;j<3;j )
for(k=0;k<3;k )
if(i!=j && j!=k && i!=k) /*不能1个新娘配2个新郎*/
{
/*得到一种配对方式*/
if (match(i j k wife))
{
printf("husband wife\n");
/*这种配对方式符合题目要求*/
printf("A---------%c\n" wife[i]);
printf("B---------%c\n" wife[j]);
printf("C---------%c\n" wife[k]);
}
}
getche();
}
int match(int i int j int k char wife[])
{
/*A不和X结婚*/
if(wife[i] == 'X') return 0;
/*X不和C结婚*/
if(wife[k] == 'X') return 0;
/*C不和Z结婚*/
if(wife[k] == 'Z') return 0;
return 1;
}
运行结果:
运行结果