sinat_pyw
2016-12-09 14:31
采纳率: 16.7%
浏览 900
已采纳

求解答错误原因

答案输不出 我也不知道原因 图片图片

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • sinat_pyw 2016-12-09 14:40
    最佳回答

    我的程序:
    #include
    #include
    void sort(int a[500], int b[500],int n)//换一次
    {

    int i, j = 0, flag = 1;
    for (i = 0; i < n; i++)
    {

    if (i % 2 == 0)

    { b[j++] = a[n / 2 + i/2]; }

    else

    { b[j++] = a[i/2]; }

    }
    }
    void change(int a[500], int b[500],int n)
    {
    int i; for (i = 0; i < n; i++)
    { a[i] = b[i]; b[i] = 0; }
    }
    int main()
    {

    int i, n,a[500],b[500],flag=1,c=0;

    scanf("%d", &n);
    for (i = 0; i < 2 * n; i++)
    { a[i] = i + 1; b[i] = 0; }

    flag = 1;
    while(flag==1)
    { sort(a, b, 2 * n);

    flag = 0; c++;

    for (i = 0; i < 2 * n; i++) //若两个数组都不相同 那么flag=1 继续循环

    { if (a[i] != b[i])

    { flag = 1;

    change(a, b, 2 * n);

    }

    }
    }

    printf("经%d次洗牌回到初始位置\n", c);
    return 0;}

    已采纳该答案
    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题