问题描述:三对新人参加婚礼,三位新郎A,B,C,三位新娘X,Y,Z。有人想知道谁与谁结婚,于是就问他们:A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。他们都在说谎。编程求谁与谁结婚。
算法思想:构建逻辑表达式 (a!=1 && c!=1 && c!=3 && a!=b && b!=c && a!=c)
注意字符输出
自己的算法有一点点问题,不会输出字符
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c;
for(a=1;a<=3;a++)
for(b=1;b<=3;b++)
for(c=1;c<=3;c++)
{
if(a!=1 && c!=1 && c!=3 && a!=b && b!=c && a!=c)
{
printf("A与%d结婚
",a);
printf("B与%d结婚
",b);
printf("C与%d结婚
",c);
}
}
return 0;
}
输出结果为:
标准答案可以输出字符:
#include<stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c; //a,b,c为三个男人
for(a=1;a<=3;a++) //给a,即第一个男人尝试匹配给每一个女人
for(b=1;b<=3;b++) //给a,即第一个男人尝试匹配给每一个女人
for(c=1;c<=3;c++) //给a,即第一个男人尝试匹配给每一个女人
if(a!=1 && c!=3 && c!=1 && a!=b && b!=c && a!=c) //根据他们说的话进行判断
{
//符合条件,即正确的情况下,输出正确答案
printf("%c将嫁给A
",'X'+a-1);
printf("%c将嫁给B
",'X'+b-1);
printf("%c将嫁给C
",'X'+c-1);
printf("
");
printf("%d将嫁给A
",a);
printf("%d将嫁给B
",b);
printf("%d将嫁给C
",c);
}
//程序计算结束。退出程序
system("pause");
return 0;
}
结果为: