论坛: 编程破解 标题: 单循环问题,C的! 复制本贴地址    
作者: top [top]    论坛用户   登录
有13个人,每人一个序号(1-13)从1开始报数,报到5就离开一个!下一个(就是这个后面的那个)再以1开始!依次报,直到13个都出圈,要求顺序输出出圈人序号!


[此贴被 偃月狂刀(top) 在 5月21日13时24分 编辑过]

地主 发表时间: 5/21 13:1

回复: dizi0774 [dizi0774]   论坛用户   登录
很有意思的一个问题,用turbo c2.0解法如下:
main()
{int a[13],num,i,j,k;
 i=0;
 for(num=13;num!=0;num--)
 { for(j=0;j<5;j++)
     {i=(i==13)?1:i+1;
      comp:
      for(k=13-num;k>0;k--)
{if(a[k-1]==i)
   {i=(i==13)?1:i+1;
    goto comp;
   }
}
      }
   a[13-num]=i;
  }
 for(i=0;i<13;i++)
   {if(i%5==0)printf("\n");
    printf("a[%2d]=%-5d",i,a[i]);
   }
}
turbo c2.0下调试通过。

B1层 发表时间: 05/21 02:45

回复: top [top]   论坛用户   登录
谢谢!!!


其实下一个是指删除后的那个的下一个,比如5过后的6就是5 的下一个!
你的程序是56789-----直到4
你的算法是怎么的?两个i=(i==13)?1:i+1是什么意思?

若按现在的说法又该在没做呢?答案是5。10。2――――――――到完!


B2层 发表时间: 05/21 12:13

回复: tucd [tucd]   论坛用户   登录
判断I是否等于13,如果是就返回1,否则就返回I+1。

B3层 发表时间: 05/21 23:22

回复: top [top]   论坛用户   登录
两句的作用一样?

还有,这题怎么做?数到5的时候,是以5的下一个为1再数,一值到完

B4层 发表时间: 05/22 10:19

回复: wxy6285 [wxy6285]   论坛用户   登录
main()
{
int j=0,i,a[13],b[13];
for(i=0;i<13;i++)a[i]=++i;
i=0;
while(j==13)
 {
  for(num=0;num<5;)  
   {
    if(a[i]!=0) num++;
    if(num==5) { b[j++]=a[i];a[i]=0;}
    if(++i==13)i=0;
    }
   }
for(i=0;i<13;i++) printf("%d",b[i]);
return;
}
此程序是刚编的 还没有调试
意思是每数到第五个就把它记0直到所有数都为0      

B5层 发表时间: 05/24 03:57

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号