A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一。
决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错。请编程解出比赛的实际名次。
[此贴子已经被作者于2005-9-28 20:49:16编辑过]
附我自己编的程序,觉得有点冗长,不知道各位潜水的高手们有没有更好的方法,麻烦写出来供偶们新手学习学习,不胜感激! /*四运动员对自己的比赛成绩的预测 */
#include<stdio.h> #include<conio.h> void main() { int a,b,c,d,e; /*定义变量存储ABCDE的成绩*/ clrscr(); for(a=1;a<=5;a++) /* 枚举出ABCDE的名次 */ 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(a+b+c+d+e==15&&a*b*c*d*e==120) /*限定abcde的值互不相等*/ if((b==2&&a!=3)||(a==3&&b!=2)) /*A说话的内容*/ if((b==2&&e!=4)||(e==4&&b!=2)) /*B说话的内容*/ if((c==1&&d!=2)||(d==2&&c!=1)) /*C说话的内容*/ if((c==5&&d!=3)||(d==3&&c!=5)) /*D说话的内容*/ if((e==4&&a!=1)||(a==1&&e!=4)) /*E说话的内容*/ { printf("\nA is %d\nB is %d\nC is %d\nD is %d\nE is %d\n",a,b,c,d,e); break; } /*输出ABCDE的名次,跳出循环*/ }