对10个数组元素依次赋值0-9并且对应输出如何用while循环解决

今天看到这个问题大部分都是用for循环解决的,想问一下怎么用while解决
{
    int a[10];
    int i = 0;
    while (i < 10)
    {
        i++;
        a[i] = i;

    }
    while (i < 10)
    {
        i++;
        printf("%d\n", a[i]);
    }

}

提示我引发异常
Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.

求解答

1.i++应该放到a[i]=i的下一行,否则i不变成从1开始了,最后一个数是10,越界了
你也可以直接写a[i]=i++
2.第二个while循环之前,应该将i归零,否则循环根本进不去
-=-==-
for(a;b;c)
a在初始化时执行一次,b每次循环之前执行,c每次循环之后执行
那么你要用while代替for(i=0;i<10;i++),就应该把i=0放到while前面,i++放到循环的最后一行,才是等价的

5、6行交换顺序

    int a[10];
    int i = 0;
    while (i < 10)
    {
        a[i] = i;
        i++;
    }
    i = 0;
    while (i < 10)
    {
        printf("%d\n", a[i]);
        i++;
    }
 
}

你需要先赋值再下标+1,所以i++;需要放在循环中的最末尾一行。
你现在的情况就是先i++;,就会导致缺少第一个元素0,从第二个元素1开始了