gpt4 book ai didi

c++ - 二维数组元素未被正确读取

转载 作者:行者123 更新时间:2023-11-30 01:38:56 24 4
gpt4 key购买 nike

输出是整行/列的一串数字,而不是单个数字。有人可以帮我解决这个问题吗?

int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int t;
cin>>t;
while(t--){
int n,m,cnt=0;
cin>>n>>m;
for(int i=0;i<=n+1;i++){
for(int j=0;j<=m+1;j++){
if(i==0||i==n+1||j==m+1||j==0) G[i][j]=0;
cin>>G[i][j];
}
}
cout<<G[1][2]<<endl;//this gives wrong o/p

返回0;

最佳答案

很可能由于 i <= n + 1 导致您越界读取和 j <= m + 1你的条件for循环从而调用 undefined behavior导致堆栈损坏,这解释了您看到的输出。修改边界为: i < nj < m .数组在 C++ 中是零索引的。通过 somearray[0] 访问第一个数组元素最后一个元素是 somearray[n-1]不是somearray[n]这就是您要在代码中访问的内容。多维数组也是如此。声明:

cout << G[i][j] << endl; 

错误地放置在 for 之外循环。应该在里面for环形。该数组应定义为 while 中的第二条语句循环:

int G[n][m]; // Avoid VLAs

据说可变长度数组不是 C++ 标准的一部分,您应该更喜欢 std::vectorstd::array到原始数组。

关于c++ - 二维数组元素未被正确读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46885676/

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