c - c 中的二维数组的输出方式不正确

标签 c multidimensional-array scanf

c中的二维数组 我遇到了一个小错误,这把我搞砸了.. 你能发现任何错误吗,而我应该得到操作

1 2 3
4 5 6 
7 8 9

但是我正在做

1 2 4
4 5 7
7 8 9
#include <stdio.h>

int main(int argc,char* argv[])
{
    int m;
    scanf("%d",&m);
    int a[m][m],i,j;
    for(i=0;i<=m;i++){
        for(j=0;j<=m;j++){
            scanf("%d",&(a[i][j]));
            printf("%d",a[i][j]);

        }

    }

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

最佳答案

声明:

int a[m][m];

意味着你有一个带有 m 的数组行和 m列,编号自 0m-1 。由于 <=m,您正在尝试访问不属于您的数组的元素。条件。

将两个循环更改为:

for(i=0;i<=m;i++){
    for(j=0;j<=m;j++){
        scanf("%d",&(a[i][j]));
        printf("%d",a[i][j]);
    }
}

您现在拥有的:

for(i = 0; i < m; i++){
    for(j = 0; j < m; j++){
        scanf("%d",&(a[i][j]));
        printf("%d",a[i][j]);
    }
}

您可以阅读有关索引和数组的更多信息 here .

关于c - c 中的二维数组的输出方式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42277057/

相关文章:

c++ - 使用 C 而不是 C++ 编译头文件

c - 无法从数组输出正确的最大值和最小值

c++ - 初始化 3d 数组的快速方法 (C++)

c - 读取逗号分隔的输入 `scanf()`

objective-c - 内存在指针上增长?

c++ - 在 C/C++ 中以正确的方式在文件中写入字节 [Endianness]

c++ - 在 2d C 数组上使用 std::transform 到 1d C 数组

multidimensional-array - 关系数据库中的多维索引结构是什么?

c - 为什么 getchar() 不停止读取 C 中的字符串?

c - 为什么不能在 C 中将 scanf() 用于不同类型的多个输入参数?