一、问题描述
有5个人参加比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
二、问题分析
(1)设置A,B,C,D,E五个选手
定义五个变量A,B,C,D,E,分别代表五个选手的名次;
(2)循环嵌套递增
用5个for循环进行嵌套,让他们各个从1开始递增。
(3)判断条件输出
最内层for循环用一个if判断语句
当符合题目要求时,输出他们各个人的名次
三、普通代码实现
普通版代码块:
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0; //分析的第一部分实现,定义a,b,c,d,e来表示五个运动员的名次
for(a = 1; a<=5; a++)//分析的第二部分实现,运用五个for循环进行名次的变化
{
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)
) //分析的第三部分,用if条件语句判断是否满足条件并输出
{
printf("A=%d B=%d C=%d D=%d E=%d\n",a,b,c,d,e);
}
}
}
}
}
}
return 0;
}