c高手继续帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/23 00:38:55
main()
{int n,k,i,count=0,num=0;
int a[100];
scanf("%d",&n);

for(i=1;i<=n;i++)a[i]=i;
for(k=1;k<=n;k++)
{if(k>n)k=1;
if(a[k]!=0)++count;
if(count%3==0){count=0;a[k]=0;};
for(i=1;i<=n;i++)
{if (a[i]!=0)++num;}
if (num==1)
{for(i=1;i<=n;i++)
if(a[i]!=0)printf("%d",a[i]);};
};

}这是一个很俗的事情,我写了一个小程序想玩玩,就是有n只小白兔,排成一排,一只狼,从头一只开始数数,数到三,就吃掉那个兔子,到队尾的时候返回队首,编程 算出最后一个剩下的兔子在那个位置
在大家的帮助下,我写的程序终于可以运行了,但是不能输出我要的结果,郁闷,不知道是那里错了,
高手哥哥姐姐们帮忙看下我的思路或者编程那里错了,
如果我的算法正确,那程序那里错了,为什么不输出呢、

已改好,不输出是因为有死循环。。。
算法没有问题

#include<stdio.h>
void main()
{int n,k,i,count=0,num=0;
int a[100];
scanf("%d",&n);

for(i=1;i<=n;i++)
a[i]=i;
for(k=1;k<=n+1;k++)
{
if(k>n)
k=1;

if(a[k]!=0)
++count;
if(count%3==0)a[k]=0;
for(i=1,num=0;i<=n;i++)
{
if (a[i]!=0)++num;}
if (num==1)
{
for(i=1;i<=n;i++)
if(a[i]!=0)

goto re;

}
}
re: printf("%d\n",a[i]);
}

你定义了数组,而数组里没有元素怎么会有输出的数呢?

这是josephus问题 源代码如下
你对照一下吧
#include <iostream.h>
void main()
{
const int num=10; //num值即为总共的数
int s,i,j;
int a[num];
for(i=0; i<num; i++)
{
a[i]=i+1;
}
cout <<"please input the interval: ";
cin>>s; //这里接受要除掉的数,按照你的要求接收一个3就可以了