这些值存储在" 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;
}
答案 0 :(得分:1)
有很多错误但主要的错误是2d数组的索引
二维数组就像这样 arr [row] [column] ,你一直在使用它像 arr [column] [row]
str[i][j] = arr[i];
看看你在做什么就是在每一行存储一个数字
也许这张图片可以解决问题
#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;
}