gpt4 book ai didi

c - 从 scanf 输入值但打印不同的值

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:50 24 4
gpt4 key购买 nike

我从 scanf 输入值,但是当我打印它们时,所有列都有最后一行的值。

#include <stdio.h>
int main(){
int N, M;
int A[N][M];
int T[N][M];
int i,j;

printf("Insert number of rows and columns: ");
scanf("%d %d",&N,&M);

printf("\nInsert the matrix\n");

for(i=0; i<N; i++){
for(j=0; j<M; j++){
scanf("%d", &A[i][j]);
}
}


printf("\nInserted matrix:\n");
for(i=0; i<N; i++){

for(j=0; j<M; j++){
printf("%d ",A[i][j]);

}
printf("\n");
}
return 0;
}

我试过检查它是否是索引问题并打印每个元素及其坐标,但这似乎没问题,问题一定出在 scanf 的某个地方。输入:

Insert number of rows and columns: 3 3

Insert the matrix
1 2 3
4 5 6
7 8 9

输出:

Inserted matrix:
7 8 9
7 8 9
7 8 9

最佳答案

打开编译器警告。任何体面的编译器都会警告你:

int N, M;
int A[N][M];

NM 未初始化。因为它们没有被初始化,所以你不知道 int A[N][M]; 会做什么。到达声明时,数组维度必须已知。

您可以将 int A[N][M];int T[N][M]; 移动到 scanf 之后读取 NM

请注意,声明具有可变长度的数组不适用于通用代码。它可用于简单的学校作业,但您最终应该会使用 malloc 和其他技术。 (可变长度数组也可以用于已知大小在一定范围内的地方。)

关于c - 从 scanf 输入值但打印不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57228002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com