我是一個(gè)大一新生,有一個(gè)c++程序的問題我編出來了,可是有邏輯錯(cuò)誤,算不出正確的結(jié)果。請(qǐng)教高手。問題:有100個(gè)人圍成一圈,順序排號(hào),從第一個(gè)人開始報(bào)數(shù)(1到2報(bào)數(shù)),凡是報(bào)到1的人退出圈子,問最后留下的是原來的幾號(hào)。我編的程序如下:#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; //把所有符合條件的數(shù)都設(shè)成101 } if (m%2==0) jo=1; //判斷下一輪排序是取偶數(shù)還是奇數(shù) else jo=0;bubblesort(a,size); //排序把是101的數(shù)都放在后面}cout<<a[1]; //數(shù)組中的第一個(gè)數(shù)就是最后剩下的所求的數(shù)}
熱心網(wǎng)友
你定義的size=102錯(cuò)了,應(yīng)該是101。