您的位置:首页 > 其它

五位跳水高手参加跳水比赛,A选手说:B第二,我第三。B选手:我第二,E第四。C选手:我第一,D第二。D选手:C最后,我第三。E选手:我第四,A第一 。成绩公布之后,每位选手的预测都只说对一半,求名次?

2018-04-11 20:31 309 查看
#include<stdio.h>
int main()
int a,b,c,d,e,c1,c2,c3,c4,c5;
for(a=1;a<=5;a++)
{
for(b=1;b<=5;b++)
{
for(c=1;c<=5;c++)
{
for(d=1;d<=5;d++)
{
for(e=1;e<=5;e++)
{
c1=(b==2)+(a==3)==1;
c2=(b==2)+(e==4)==1;
c3=(c==1)+(d==2)==1;
c4=(c==5)+(d==3)==1;
c5=(e==4)+(a==1)==1;
if(c1+c2+c3+c4+c5==5&&a+b+c+d+e==15&&a*b*c*d*e==120)
{
printf("A:%d\nB:%d\nC:%d\nD:%d\nE:%d\n",a,b,c,d,e);
return 0;
}
}
}
}
}
}
}

运行结果:A:3                 B:1                 C:5                D:2                E:4

解析:五个人,每个人说的话都是对一半,故我们可以采用5*5的循坏结构,也就是for循坏这个结构。c1=(b==2)+(a==3)==1这个结构主要用来表示每个人说的话都是对一半,表示b假如为第二名,a就不是第三名,(b==2)的判断值为1,(a==3)的判断值为0,相加总是为为1.名次有1,2,3,4,5名,名次之和 为15,名次之积为120,这两个条件必不可少,没有这两个条件的话,程序无法对名次进行筛选,因此会造成有重复的排名。
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐