读书人

求帮助自己练习时遇到的一个有关问题

发布时间: 2012-09-27 11:11:17 作者: rapoo

求帮助,自己练习时遇到的一个问题,怎么也看不出哪里错了。。
//有12个人围坐一圈,编写程序,使从一号开始,到达k号时,淘汰这个人,直到剩下最后一个,输出那个人的序号
#include<iostream.h>
void main()
{
int n=12;
int a[n]={1,2,3,4,5,6,7,8,9,10,11,12},k;
cout<<"12人围坐一圈,被数到k的人出局,k=?";
cin>>k;
cout<<"init-Data: =>";
for(int i=0;i<n;i++)
cout<<a[i]<<" ";//输出a[i]
cout<<endl;
int x=0;
for(i=0;i<n-1;i++)
{
int j=1;
while(j<k)//循环k次
{
if(a[x]!=0)
{
j++;
x++;
}
else
x++;

if(x==12)
x=0;


}
cout<<"delidx="<<x<<", ";

cout<<"a[delidx]="<<a[x]<<"; =>";
a[x]=0;
for(j=0;j<12;j++)
cout<<a[j]<<" ";
cout<<endl;
}
i=0;
while(a[i]==0)
{
i++;
}
cout<<"lastOneIdx="<<i<<",a[lastOneIdx]="<<a[i]<<endl;
}

[解决办法]
改了下你的while循环。。。

C/C++ code
#include<iostream>using namespace std;int main(){    int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};    int k;    cout<<"12人围坐一圈,被数到k的人出局,k=?";    cin>>k;    cout<<"init-Data: =>";    for(int i=0;i<12;i++)    {        cout<<a[i]<<" ";//输出a[i]    }    cout<<endl;    int x=0;    for(int i=0;i<11;i++)    {        int j=1;        while(j<k||a[x]==0)//循环k次        {            if(a[x]!=0)            {                j++;                x++;            }            else            {                x++;            }            if(x==12)            {                x=0;            }        }        a[x]=0;        cout<<"delidx="<<x<<", ";        cout<<"a[delidx]="<<a[x]<<"; =>";        x++;        if(x==12)        {            x=0;        }        for(j=0;j<12;j++)        {            cout<<a[j]<<" ";        }        cout<<endl;    }    int i=0;    while(a[i]==0)    {        i++;    }    cout<<"lastOneIdx="<<i<<",a[lastOneIdx]="<<a[i]<<endl;} 

读书人网 >C++

热点推荐