关于#c++#写入位置发生冲突的问题,请各位专家解答!

请各位专家们帮我看一下这段代码问题出在哪里,运行后系统停在i=2时并且报错:

img


#include 
using namespace std;
int main()
{
    /*编写一个程序,输出一张表,内容是1~256范围内每个十进制数对应的二进制数、八进制数和十六进制数形式。
    第1行是标题,用制表符整齐格式(根据输出情况调整)显示数值表。提示,八进制数和十六进制数可以直接输出。*/
    cout << "decimal" << "\t\t" << "binary" << "\t\t" << "octal" << "\t\t" << "hexadecimal" << "\t\t" << endl;
    int i, j;
    

    
    for (i = 1; i <= 256; i++)
    {
        int a[12];
        int n = 1;
        cout << i << "\t\t";
        for (j = 0; n > 0; j++)
        {
            a[j] = i % 2;
            n = i / 2;
        }
        for (j--; j >= 0; j--)
        {
            cout << a[j];
        }

        cout << "\t\t" << oct << i << "\t\t" << hex << i << "\t\t" << endl;
    }
    system("pause");
    return 0;

}
//注释处是修改的地方

#include <iostream>
using namespace std;
int main()
{
    /*编写一个程序,输出一张表,内容是1~256范围内每个十进制数对应的二进制数、八进制数和十六进制数形式。
    第1行是标题,用制表符整齐格式(根据输出情况调整)显示数值表。提示,八进制数和十六进制数可以直接输出。*/
    cout << "decimal"
         << "\t\t"
         << "binary"
         << "\t\t"
         << "octal"
         << "\t\t"
         << "hexadecimal"
         << "\t\t" << endl;
    int i, j;

    for (i = 1; i <= 256; i++)
    {
        int a[12];
        int n = i; // int n = 1;
        cout << dec << i << "\t\t"; //改回dec输出
        for (j = 0; n > 0; j++)
        {
            a[j] = n % 2; //
            n = n / 2;      //
        }
        for (j--; j >= 0; j--)
        {
            cout << a[j];
        }

        cout << "\t\t" << oct << i << "\t\t" << hex << i << "\t\t" << endl;
    }
    system("pause");
    return 0;
}