C语言如何用for循环构建2*2矩阵

2*2矩阵:
1 2

3 4

很简单的矩阵
不过不用scanf输入
直接用for循环输出

我想的方法是定义一个变量x=1,然后在for循环里面,每一次x++存入数组
代码:

 #include<stdio.h> 
int main()
{
    int a[2][2];
    int i,j,x=1; 
    for(i=0;i<2;i++)
        for(j=0;j<2;j++)
        {       
                a[i][j]=x;
                x++;
        }
    printf("%d\n",a[i][j]);
    return 0;
}

输出结果只有1,实在不解

 for(i=0;i<2;i++)
{
        for(j=0;j<2;j++)
        {       
            printf("%d\t",a[i][j]);
        }
                printf("\n");
}
这样才能输出矩阵

for(i=0;i<2;i++)
for(j=0;j<2;j++)
{

a[i][j]=x;
x++;
}
printf("%d\n",a[i][j]);

            这种写法等效于 
            for(i=0;i<2;i++)
            {
                            for(j=0;j<2;j++)
                            {       
                                            a[i][j]=x;
                                            x++;
                            }
            }
            printf("%d\n",a[i][j]);

            楼上 caozhy 的写法能输出你想要的那种矩阵形式,你的问题在于代码根本就不对( printf("%d\n",a[i][j]);)  知道现在的i,j是多少吗,都是2,都数组越界了,能出来1 算你幸运.数组指针索引都是从1开始的,记住

是从0开始的,不过没法改评论啊

for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}

 for(i=0;i<2;i++)
{
        for(j=0;j<1;j++)
        {       
            printf("%d,",a[i][j]);
        }
                 printf("%d",a[i][j]);
                printf("\n");
}

你应该看看变量的作用域,i,j进入for循环后改变的只是临时值 退出for循环就变成了a[0][0]=x=1;

首先,输出语句应该在一个循环中,这样才能输出全部的元素;
其次,输出之前要先把i,j置为0,让它从最初的数组元素开始输出。

  #include<stdio.h> 
int main()
{
    int a[2][2];
    int i,j,x=1; 
    for(i=0;i<2;i++)
        for(j=0;j<2;j++)
        {       
                a[i][j]=x;
                x++;
        }
    for(i=0;i<2;i++)
        for(j=0;j<2;j++)
        {       
            printf("%d\n",a[i][j]);
        }

    return 0;
}