白天看书的时候遇到这么一个C题目:
报数游戏。A、B、C、D、E、F、G、H共8人站成一排,按下图所示的方法从1开始报数,问谁最先报到123456?
A B C D E F G H
1→→2→→3→→4→→5→→6→→7→→8↓
↓←14←←13←12←←11←10←←9←←
15→16→→17→18→→19→20→→21→22↓
↓←28←←27←26←←25←24←←23←←
29→30→……
想了会,解答方法是想出来了,不过总感觉很复杂,一直在想更简单的方法!
下面的是我的答案:
| #include"stdio.h" main() { int a,b,c,d,e,f,g,h,i; i=1; while(i<=123456) { a=i++;b=i++;c=i++;d=i++;e=i++;f=i++;g=i++;h=i++; if(a==123456){printf("A先报到123456\n");break;} else if(b==123456) { printf("B先报到123456\n");break; } else if(c==123456) { printf("C先报到123456\n");break; } else if(d==123456) { printf("D先报到123456\n");break; } else if(e==123456) { printf("E先报到123456\n");break; } else if(f==123456) { printf("F先报到123456\n");break; } else if(g==123456) { printf("G先报到123456\n");break; } else if(h==123456) { printf("H先报到123456\n");break; } else { g=i++;f=i++;e=i++;d=i++;c=i++;b=i++; if(g==123456) { printf("G先报到123456\n");break; } else if(f==123456) { printf("F先报到123456\n");break; } else if(e==123456) { printf("E先报到123456\n");break; } else if(d==123456) { printf("D先报到123456\n");break; } else if(c==123456) { printf("C先报到123456\n");break; } else if(b==123456) { printf("B先报到123456\n");break; } } } } |
结果是D最先报到123456!