求c语言解决

jyn5577 2011-12-19 09:18:08
有n个人围成一圈,顺序排号从第一个人开始报数(从1-5报数),凡报道5的人退出圈子,问最后留下的是原来第几号的那位
#include<stdio.h>
main()
{
int a[10],i=0,count1=0,count2=0;
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
for(i=1;i<=10;i++)

if(a[i]!=-1)
{
count1++;
if(count1==5)
{
a[i]=-1;
count1=0;
}
count2++;
i=(i+1)%10;
if(count2==9) break;
}
for(i=1;i<=10;i++)
if(a[i]!=-1)
printf("%d",i);

}哪里出错了丫、、调了好多次结果还是错的
...全文
62 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
free_tend 2011-12-20
  • 打赏
  • 举报
回复
数组下标有问题 初始化为a[10] 那就是a[0]~a[9] 你是从1开始到10的
logicouter 2011-12-20
  • 打赏
  • 举报
回复
google一下约瑟夫问题
AnYidan 2011-12-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 keiy 的回复:]
C的下标从0开始(非从1开始)
a[10] 下标范围:a[0]~a[9]
[/Quote]
++
W170532934 2011-12-19
  • 打赏
  • 举报
回复

int _tmain(int argc, _TCHAR* argv[])
{
int a[10]={0},i=0,count1=0,count2=0;
while(count2<9)
{
if(a[i]==0)
{
count1++;
}
if(count1==5)
{
count1=0;
a[i]=-1;
++count2;
}
++i;
i%=10;

}
for (i=0;i<10;++i)
if(a[i]==0){
printf("%d\n",i);
}
return 0;
}
柯本 2011-12-19
  • 打赏
  • 举报
回复
C的下标从0开始(非从1开始)
a[10] 下标范围:a[0]~a[9]
xxj0828 2011-12-19
  • 打赏
  • 举报
回复
看你下面好像都是
数组越界了
xxj0828 2011-12-19
  • 打赏
  • 举报
回复
循环输入的地方,数组下标是从0开始的
for(i=0;i<10;i++)
scanf("%d",&a[i]);

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧