5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
这道题乍看起来不知道如何下手,但其实代码很简单,重要的是我们要会把实际问题用代码的形式写出来,这是至关重要的!
我们可以创建a、b、c、d、e五个整形变量,让每个变量从1~5循环,做成一个嵌套循环,在嵌套循环的最中心判断每次的循环是否符合题目要求,如果满足题目要求,那么这就是最终结果。需要注意的是,在嵌套循环中,可能有多种情况满足要求(存在同名次的情况),这就需要我们加以判别。
具体代码如下:
- #include <stdio.h>
- int main()
- {
- int a = 0;
- int b = 0;
- int c = 0;
- int d = 0;
- int e = 0;
- 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==2)+(a==3)==1) &&
- ((b==2) + (e==4) == 1)&&
- ((c==1) + (d==2) == 1)&&
- ((c == 5) + (d == 3) == 1) &&
- ((e == 4) + (a == 1) == 1))
- {
- if(a*b*c*d*e == 120)//要有这个判断条件,否则会出现同名次
- printf("a=%d b=%d c=%d d=%d e=%d\n",a,b,c,d,e);
- }
- }
- }
- }
- }
- }
-
- return 0;
- }