我是一个大一新生,有一个c++程序的问题我编出来了,可是有逻辑错误,算不出正确的结果。请教高手。问题:有100个人围成一圈,顺序排号,从第一个人开始报数(1到2报数),凡是报到1的人退出圈子,问最后留下的是原来的几号。我编的程序如下:#include <iostream.h>void bubblesort(int a[],int size) //冒泡排序{int hold;for (int j=1;j<size-1;j++) for (int k=1;k<size-1;k++) if (a[k]>a[k+1]) {hold=a[k];a[k]=a[k+1];a[k+1]=hold;}}void main (){const int size=102;int a[size];for (int i=1;i<size;i++) a[i]=i;int jo=1; //奇偶判别while(a[2]!=101){ for (int m=1;m<size;m++) { if (a[m]==101) break; if (m%2==jo) a[m]=101; //把所有符合条件的数都设成101 } if (m%2==0) jo=1; //判断下一轮排序是取偶数还是奇数 else jo=0;bubblesort(a,size); //排序把是101的数都放在后面}cout<<a[1]; //数组中的第一个数就是最后剩下的所求的数}

热心网友

你定义的size=102错了,应该是101。