随机洗牌,能运行但是什么也不输出

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容

没有报错

我的解答思路和尝试过的方法

#include
#include
#include

#include
#include
#include
void wash(int a[54]);
int main()
{
    int a[54];
    for(int i=0;i++;i<54)
    {
        a[i]=i+1;
    }
    wash(a);
}
void wash(int a[54])
{
    srand(time(NULL));
    for(int i=0;i<54;i++)
    {
        int x;
        int flag=1;
        srand(time(NULL));
        while(flag)
        {
             
            x=rand()%10;
            if(x<55&&x>i)
        {
            a[x]=a[i]+a[x];
            a[i]=a[x]-a[i];
            a[x]=a[x]-a[i];
            flag=0;
        }
        }
    }
    for(int i=0;i<55;i++)
    {
        printf("%d",a[i]);
    }
}

while 死循环出不来了,x=rand()%10 得出 x 的值范围是 0 ~ 9,而当 i > 9 后,26行的 x<55 && x>i 条件永远无法满足,flag 变不为0,无法退出 while 循环。

我改成了%100,程序能输出了,但是输出不对,请您帮我看看什么原因,应该是数组第一次遍历的时候出了问题

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^