如題:N個人圍成一圈報數,報到數位退出編號的人,退出,剩余人繼續,直至剩余最后一個人,代碼撰寫如下:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{ int a[100];
int i;
int call_no;
int end_no;
int leave_no;
int end_dig,leave_dig;
int cycl_total;
cout<<"請輸入總人數:";
cin>>end_no;
for(i=0;i<end_no;i++)a[i]=i+1; //對人員進行編號
cout<<endl;
cout<<"請輸入需要離開的編號:";
cin>>leave_no;
cout<<endl;
call_no=1;
cycl_total=end_no;
do //開始報數
{ end_dig=0; //報數計數器
while(call_no<=end_no)
{ if(a[call_no-1]!=0)
{ end_dig++; //報一個,計數器 +1
if(end_dig==leave_no)a[call_no-1]=0; //計數器為退出的編號時,此位置資料清零
}
if(call_no==end_no)call_no=1; //報數到最后一個時,從第一個接上
if(end_dig==end_no)break; //報數到原始總數時,報數完成一圈
}
cycl_total--;
}while(cycl_total>1); //每報數一圈離開一個人,最后剩余一個時,總共報數圈數為 end-1 圈
for(i=0;i<end_no;i++)cout<<setw(5)<<a[i];
cout<<endl;
return 0;
}
結果運行時,陷入死回圈,求大神幫忙指點,錯在哪呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269516.html
標籤:C++ 語言
下一篇:問個題
