c++初级菜鸟求助,程序没有出来结果,请大家赐教!

来源:百度知道 编辑:UC知道 时间:2024/06/15 07:40:01
#include<iostream>
using namespace std;

void rebuild();
void number();
int i,b,d,sum,psum;
int a[100];
int main(){

for(i=0;i<100;i++) a[i]=i+1;

for(i=99;i>=0;i--)
if((i+1)%3==0)
rebuild();
sum=100;
number();

for(int m=1;;m++){
if(a[1]=99) break;
for(i=d;i>=0;i--)
if((i+1+psum)%3==0)
rebuild();
number();}

cout<<a[0];

return 0;
}

void rebuild(){

for(i;(i+1)<100;i++)
a[i]=b;
a[i]=a[i+1];
a[i+1]=b;
}

void number(){
for(d=0;;d++)
if(a[d+1]==99) break;
psum=sum;
sum+=(d+1);
}

这个程序是求解:100个人围成一圈报数,报到3的倍数就退出圈子,问最后剩下的人.
但是运行了以后没有出来结果,请大家赐教!
这道题的正确答案是91,其实用向量做非常的方便....其实是应为这道题是一位学C的同学给我的,所以他让我用数组来做..

我的想法是从数列的末端把3的倍数挑出并排在数列的最后,99之前

已经改好了,请参考下面的//////////////Error部分:
#include<iostream>
using namespace std;

void rebuild();
void number();
int i,j,b,d,sum,psum;
int a[100];
int main(){

for(i=0;i<100;i++) a[i]=i+1;

for(i=99;i>=0;i--)
if((i+1)%3==0)
rebuild();
sum=100;
number();

for(int m=1;;m++){
// if(a[1]=99) break; /////////////////////Error1:应该是a[m]
if(a[m]==99) break;
for(i=d;i>=0;i--)
if((i+1+psum)%3==0)
rebuild();
number();}

cout<<a[0];

return 0;
}

void rebuild(){

for(j=i;(j+1)<100;j++) /////////////////////Error2:应该新定义一个变量j来计数
{ /////////////////////Error3:少一个花括号
// a[i]=b; /////////////////////Error4:应该是给b赋值
b=a[j];//用j作下标
a[j]=a[j+1]; //用j作下标
a[j+1]=b; //用j作下标
} /////////////////////Error5:少一个花括号
}