# include<iostream>
using namespace std;
int const rows=3; //rows are kept constant
int const cols=3; //columns are kept constant
void display(int arr[][cols],int rows,int cols); //function prototype
int rowsum(int arr[][cols],int rows,int cols); //function prototype
int main()
{
int z [rows][cols]; //2-D array declaration
int r,c;
for(r=0;r<rows;r++)
{
for(c=0;c<cols;c++)
{
cout<<"Enter elements of array["<<r<<"]["<<c<<"]:";
cin>>z[r][c];
}
}
display(z,rows,cols); //Function call
rowsum(z,rows,cols); //Function call
return 0;
}
void display(int arr[][cols],int rows,int cols) //function to display input
{
int r,c;
for(r=0;r<rows;r++)
{
for(c=0;c<cols;c++)
{
cout<<"Elements of array["<<r<<"]["<<c<<"]="<<arr[r][c]<<endl;
}
}
}
int rowsum(int arr[][cols],int rows,int cols) //Function to perform rowsum
{
int c,sum=0,r=0;
for(c=0;c<cols;c++)
{
sum=sum+arr[r][c];
cout<<"the sum of rows is:"<<sum<<endl;
}
return sum;
}
上面是一个使用 2-D 数组的C++代码。它接受用户的输入,并使用显示功能显示该输入。输入后,我想对行求和,为此我编写了一个名为rowsum的函数,但它无法正常工作。它不提供所需的输出。
代码的问题在于您在这里使用了单个循环,而不是所需的两个 for 循环。因此,您的代码所做的只是简单地计算第 0 行的总和(自 r=0
年以来(。
您实际需要做的是计算一行的总和(即 for(c=0;c<cols;c++)
(,row
次数。嗷!!
for(r=0;r<rows;r++)
{
sum = 0;
for(c=0;c<cols;c++) //calculates sum of rth row
{
sum += arr[r][c];
}
cout<<"Sum of row " << i <<" is " << sum ;
}
这是因为您打印出了第一行的部分总和。
您应该有两个循环,一个用于行,一个用于列,并且仅在遍历所有列后打印出结果。
或者,如果您只需要设置行的总和,则至少将 print 语句移出循环,以便只获得最终总和,而不是中间结果。