求帮助,自己练习时遇到的一个有关问题,如何也看不出错哪了。
求帮助,自己练习时遇到的一个问题,怎么也看不出哪里错了。。
//有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循环。。。
//有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; }