m0_72810171 2022-10-06 21:24 采纳率: 77.8%
浏览 19

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

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

没有报错

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

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
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]);
    }
}

  • 写回答

3条回答 默认 最新

  • 叶落花枯 2022-10-06 21:38
    关注

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

    评论

报告相同问题?

问题事件

  • 创建了问题 10月6日