C++提取二维数组负数到新数组仅输出00000问题求助
问题分析与修复
核心错误
你写反了赋值语句的方向:
原本意图是把二维数组t中的负数存入新数组a,但代码里写成了t[i][j] = a[k];——这会把未初始化的a[k](默认值为0)覆盖掉t里的负数,之后你输出的是被覆盖后的t[i][j],所以结果全是0。
修复后的代码
#include "iostream" using namespace std; int main() { int t[3][12]={{-2,7,6,13},{48,-5,1,-7},{16,-9,2,-9}}; int i,j,k; k=0; int a[12]; for(i=0; i<=2; i++) { for(j=0; j<=3; j++) { if(t[i][j]<0) { a[k] = t[i][j]; // 正确赋值:把t的负数存入a cout << a[k]; // 输出存入a的负数 k++; } } } cout<<endl; // 可选:单独输出数组a中的所有负数 cout << "数组a的内容:"; for(int m=0; m<k; m++){ cout << a[m] << " "; } cout << endl; }
运行结果
会先输出所有负数的连续值:-2-5-7-9-9,然后换行输出数组a的内容:数组a的内容:-2 -5 -7 -9 -9
内容的提问来源于stack exchange,提问作者furkan özkan
相关产品推荐
相关产品推荐

