不是,我是造了什么孽啊!!,为什么错!!!!!!!!!!!!!!

liujiayu 2024-05-19 20:52:34 2024-05-26 17:03:13 13

为什么错为什么错为什么错为什么错为什么错!!! int m,n; cin>>n>>m; int a[n][m],b[n][m]; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>b[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cout<<a[i][j]+b[i][j]<<" "; if(j%3==0){ cout<<endl; } } }

{{ vote && vote.total.up }}

共 4 条回复

root 站长

一般输出换行是在 for 循环结束后,比如

for (int i = 1; i <= n; i ++ ) 
{
    for (int j = 1; j <= m; j ++ )
    {
        cout << a[i] + b[j] << " ";
    }
    cout << endl; //这里换行!!!
} 
root 站长
   if (j % m == 0) {
                cout << endl;
   }

你这个输出换行有点帅

liujiayu

#include<bits/stdc++.h> using namespace std; int a[110][110], b[110][110]; int main(){ int m,n; cin>>n>>m;

for(int i=1;i<=n;i++){
	for(int j=1;j<=m;j++){
		cin>>a[i][j];
	}
}
for(int i=1;i<=n;i++){
	for(int j=1;j<=m;j++){
		cin>>b[i][j];
	}
}
for(int i=1;i<=n;i++){
	for(int j=1;j<=m;j++){
		cout<<a[i][j]+b[i][j]<<" ";
		if(j%3==0){
			cout<<endl;
		}
	}
}
return 0;

} 还是错了

root 站长
cin>>n>>m;
int a[n][m],b[n][m];

这样子定义的数组下标从 0 开始最大的下标只能到 a[n-1][m-1],改正 int a[n+1][m+1],b[n+1][m+1]; 即可。

推荐把二维数组定义在 main 函数外面,提前规划好数组大小, int a[110][110], b[110][110];