指引网

当前位置: 主页 > 编程开发 > C >

约瑟夫环的C语言数组解决程序

来源:网络 作者:佚名 点击: 时间:2017-07-19 23:00
[摘要] 

编号为1,2,...,n的n个人按顺时针方向坐在圆桌边, 每人持有一密码(正整数),从第s人开始报数, 报到第m人出列, 再从下一人开始报,  直至所有的人都出列为止

下面是用数组的方法编的C语言源程序!仅供参考,欢迎多提宝贵意见!

#include <stdio.h>
main()
{
  int n,s,password;
  int a[100];
  int i,j,counter1=1,counter2=0;
  printf("please input the value of n:");
  scanf("%d",&n);
  printf("please input the number of the biginer:");
  scanf("%d",&s);
  if(s>n)
  {
    printf("please reinput the number less than %d:",n);
    scanf("%d",&s);
  }
  printf("please input the value of the password:");
  scanf("%d",&password);

  for(i=0;i<n;i++)
    a[i]=i+1;
  j=s-1;
  while(counter2!=n)
  {
    while(password==1)
    {
      printf("%4d",a[j]);
      counter2++;
      if(counter2==n)
        return;
      if(j<n-1)
        j++;
      else
        j=0;
     }
    while(password!=1&&counter1!=password)
    {
      if(j<n-1)
        j++;
      else
        j=0;
      while(a[j]==0)
      {
        if(j<n-1)
          j++;
        else
          j=0;
      }
      counter1++;
      if(counter1==password)
      {
    printf("%4d",a[j]);
    a[j]=0;
    if(j<n-1)
      j++;
    else
    &nb

------分隔线----------------------------