码迷,mamicode.com
首页 > 编程语言 > 详细

c语言:2种方法:5位运动员参加跳水比赛,每位选手都说对一半,请确定比赛名次

时间:2015-12-17 07:01:31      阅读:374      评论:0      收藏:0      [点我收藏+]

标签:c语言:2种方法:5位运动员参加10米台跳水比赛   每位选手都说对一半   请确定比赛名次   

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

A选手说:B第一,我第三。

B选手说:我第二,E第四。

C选手说:我第一,D第二。

D选手说:C最后,我第三。

E选手说:我第四,A第一。

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

程序一:

#include<stdio.h>

int main()

{

int a = 1, b = 1,c = 1,d=1,e=1;

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++)

{

if ((b == 1) + (a == 3) == 1 && (b == 2) + (e == 4) == 1 && (c == 1) + (d == 2) == 1 && (c == 5) + (d == 3) == 1 && (e == 4) + (a == 1) == 1)

{

printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d\n",a,b,c,d,e);

return 0;

}

}

}

}

}

}

return 1;

}

程序二:

#include<stdio.h>

int main()

{

int a = 1, b = 1, c = 1, d = 1, e = 1;

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++)

{

if ((b == 1) + (a == 3) == 1 && (b == 2) + (e == 4) == 1 && (c == 1) + (d == 2) == 1 && (c == 5) + (d == 3) == 1 && (e == 4) + (a == 1) == 1)

{

int num = 0;

num |= (1 << (a - 1));//二进制连续置为1,11111分别表示1,2,3,4,5之间的数可以连续存放

num |= (1 << (b - 1));

num |= (1 << (c - 1));

num |= (1 << (d - 1));

num |= (1 << (e - 1));

while (num)

{

if (num % 2 == 0)//二进制中的1是连续的,不能被2整除,如果能整除,说明二进制中有0

{

break;

}

num = num / 2;

}

if (num == 0)

{

printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d\n", a, b, c, d, e);

}

}

}

}

}

}

}

return 0;

}

结果:

a=2

b=1

c=1

d=3

e=4

请按任意键继续. . .


本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1725457

c语言:2种方法:5位运动员参加跳水比赛,每位选手都说对一半,请确定比赛名次

标签:c语言:2种方法:5位运动员参加10米台跳水比赛   每位选手都说对一半   请确定比赛名次   

原文地址:http://yaoyaolx.blog.51cto.com/10732111/1725457

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!