这些值存储在" arr"正确但垃圾值存储在" str"中。我不懂为什么

时间:2017-08-20 08:18:28

标签: c++

这些值存储在" arr"正确但垃圾值存储在" str"中。我不懂为什么。我检查了很多次,这似乎对我来说。

#include <iostream>
using namespace std;

int main() {
    int test,n,arr[50],str[20][20],i,j,k;
    t = 0;
    j = 0;
    cin>>test; //test cases
    while(test>0){
        cin>>n; //number of elements in a test case 
        for(i=0;i<n;i++)
            cin>>arr[i]; //array of elements
        for(i=0;i<n;i++){
            cout<<"arr = "<<arr[i]<<"\n";
            str[i][j] = arr[i]; // storing arr in str
        }
        cout<<"\n";
        str[i+1][j] = 0;
        j++;
        test--;
    }
    for(i=0;i<j;i++){
        for(k=0;str[i][k]!=0;k++)
            cout<<<<str[i][k];  // printing str
        cout<<"\n";
    }
    return 0;
}

2 个答案:

答案 0 :(得分:1)

有很多错误但主要的错误是2d数组的索引

二维数组就像这样 arr [row] [column] ,你一直在使用它像 arr [column] [row]

 str[i][j] = arr[i];

看看你在做什么就是在每一行存储一个数字

也许这张图片可以解决问题

enter image description here

#include <iostream>
using std :: cin ;
using std :: cout ; 
using std :: endl ;

int main() {
    int test,n,arr[50],str[20][20],i,j,k;
    j = 0;
    cin>>test; //test cases
    int temp = test ;
    while(test>0)
    {
        cin>>n; //number of elements in a test case 

        for(i=0;i<n;i++)
            cin>>arr[i]; //array of elements

        for(i=0;i<n;i++)
        {
            cout<<"arr = "<<arr[i]<<"\n";
            str[j][i] = arr[i]; // storing arr in str
        }

        str[j][i] = '\0';
        cout<<"\n";

        j++;
        test--;
    }

    for ( int i = 0 ; i < temp ; i++ )
    {
        j=0 ;
    while ( str[i][j] != '\0')
       {
           cout<<str[i][j];  // printing str
            j++ ;
        }
        cout<<"\n";
    }
    cin.ignore(5) ;
    return 0;
}

答案 1 :(得分:0)

首先,你永远不会使用&#39;#,所以我删除了它。 我发现它实际上并没有输出垃圾值,它只是以错误的顺序输出值。如果你在最后交换k和i,它应该可以工作:

#include <iostream>
using namespace std;

int main() {
    int test,n,arr[50],str[20][20],j,i,k;
    j = 0;
    cin>>test; //test cases
    while(test>0){
        cin>>n; //number of elements in a test case 
        for(i=0;i<n;i++){
            cin>>arr[i]; //array of elements
        }
        for(i=0;i<n;i++){
            cout<<"arr = "<<arr[i]<<"\n";
            str[j][i] = arr[i]; // storing arr in str
        }
        cout<<"\n";
        str[j+1][i] = 0;
        j++;
        test--;
    }
    for(i=0;i<j;i++){
        for(k=0;str[k][i]!=0;k++){
            cout<<str[k][i]<< ' ';  // printing str
        }
        cout<<"\n";
    }
    return 0;
}