如何从用户(即控制台)提供数组元素,以及如何将数组元素作为参数传递给函数
How to feed array elements from user (i.e., the console) and how to pass array elements to a function as arguments
这是Visual c++的原始代码,我已经尝试了一天多的操作。这是正确运行的最简单的无错误程序。我要做的是插入两个函数:一个用于从用户获取输入,另一个用于显示输出。
#include<iostream>
#include<iomanip>
using namespace std;
void main()
{
int i, j,r,c;
int arr[5][5];
cout<< "enter r and c";
cin>> i>> j;
for(r=1;r<=i;r++)
{
for(c=1;c<=j;c++)
{
cout<< "enter elements";
cin>> arr[r][c];
}
}
cout<< " elements are"<< endl;
for(r=1;r<=i;r++)
{
for(c=1;c<=j;c++)
{
cout<<setw(4) <<arr[r][c];
}
cout<< endl<< endl;
}
cin.ignore();
getchar();
}
这是我尝试做的,但它给出错误。
#include<iostream>
#include<iomanip>
using namespace std;
int input(int i, int j, int arr)
{
int r,c;
for(r=1;r<=i;r++)
{
for(c=1;c<=j;c++)
{
cout<< "enter elements";
cin>> arr[r][c];
}
}
return arr[r][c];
}
void output(int i, int j, int arr)
{
int r,c;
for(r=1;r<=i;r++)
{
for(c=1;c<=j;c++)
{
cout<<setw(4) <<arr[r][c];
}
cout<< endl<< endl;
}
}
void main()
{
int i, j,r,c;
int arr[5][5];
cout<< "enter r and c";
cin>> i>> j;
input(i,j,arr);
cout<< " elements are"<< endl;
output(i,j,arr);
cin.ignore();
getchar();
}
您确实需要对c++、指针和函数有更深入的了解。以下是你正在寻找的(排序),然而,你肯定需要对c++有更深入的了解:
#include<iostream>
using namespace std;
void output(int ** array)
{
for (int i= 0;i<5;++i)
{
for (int a= 0;a<5;++a)
{
cout << "Array[" << i << "][" << a << "] = " << array[a][i] << endl;
}
}
}
void input(int ** array)
{
for (int i= 0;i<5;++i)
{
for (int a= 0;a<5;++a)
{
cout << "Array[" << i << "][" << a << "] = " << endl;
cin >> array[i][a];
}
}
}
int main()
{
int** array;
array = new int*[5];
for (int i=0;i<5;++i)
array[i] = new int[5];
input(array);
output (array);
delete []array;
cin.ignore();
getchar();
return 0;
}
问题是,解释这一点就像从头开始教你c++。无论你用什么方法学习c++,都要坚持下去。你会成功的,只是你还没准备好。有一件事你会发现,把事情带到下一个层次并不总是那么容易。在学习的过程中,事情的发展和停止是有原因的。虽然,采取额外的步骤,或者尝试这样做,并不是坏事,你只需要知道什么时候还不是时候。
编辑:为了完成,这里是一个没有指针的例子:
#include<iostream>
using namespace std;
void output(int array[5][5])
{
for (int i= 0;i<5;++i)
{
for (int a= 0;a<5;++a)
{
cout << "Array[" << i << "][" << a << "] = " << array[a][i] << endl;
}
}
}
void input(int array[5][5])
{
for (int i= 0;i<5;++i)
{
for (int a= 0;a<5;++a)
{
array[i][a] = i*a;
}
}
}
int main()
{
int array[5][5];
input(array);
output (array);
cin.ignore();
getchar();
return 0;
}
首先,从你的输入函数中返回一个值,使循环停止并返回到主函数。
因此,如果要将输入矩阵的cin
改为a维,则应将输入函数的返回类型更改为void,并删除返回的arr[r][c];
。
其次,你在主循环中定义了arr[5][5]
,这是不能从其他函数访问的,你甚至没有传递一个指针变量。您应该向输入函数传递一个双指针,以便这样做,或者您可以在主函数之外定义arr[5][5]
。
最后,你正在分配矩阵的大小,但你不是动态地分配它的大小。
我建议对C/c++中的函数和变量有更多的了解。
正如大家所指出的那样,你需要加强你的编程基础。
- 首先,main的返回类型应该是int。记住这一点。
- 输入的签名应该是这样的
void input(int i, int j, int arr[][5])
-
output
也一样 - 同样,在数组中迭代读/写时,偏移量从0开始而不是1,并在
SIZE - 1
结束。所以改变for(r=1;r<=i;r++)
到for(r=0;r<i;r++)
- 数组总是通过引用传递,所以函数内部的变化会反映在调用函数内部,所以你不需要返回数组。
为什么输入和输出顺序不同…是打错了吗?
void output(int array[5][5])
cout << "Array[" << i << "][" << a << "] = " << array[a][i] << endl; // typo may be
cout << "Array[" << i << "][" << a << "] = " << array[i][a] << endl; // correction
相关文章:
- C++函数,它将数组、谓词和运算符作为参数,并将运算符应用于满足谓词的数组元素
- 如何在类中制作 2D 数组元素,然后在其构造函数中指定其维度?
- 创建一个函数来转换数组元素的类型并返回数组的地址
- Getter 函数,用于在 2d 数组是类的数据成员时检索 2d 数组元素
- 将函数分配给C 中的数组元素
- 覆盖数组元素时如何调用构造函数
- 将特定数组元素的地址传递到函数
- 避免在函数调用中计算数组元素
- 没有可行的构造函数复制类型 'MyString' 的数组元素
- 在数组计数函数中插入多个元素
- 默认构造函数自动创建的数组元素?
- OpenCV函数来计算类似于MATLAB产品的数组元素的乘积?
- 如何在 c++ 中将 char 数组元素传递给函数
- 需要帮助将数组元素/信息传递给函数C++
- 用于移动不起作用的数组元素的函数
- 函数调用后对多维数组元素进行计数
- 在函数中定义一个动态数组,然后返回数组元素。如何释放阵列的内存?
- 如何从用户(即控制台)提供数组元素,以及如何将数组元素作为参数传递给函数
- 使用多态基类(包含虚函数)访问数组元素时的类型
- 通过memset函数设置2D int数组元素为1