二维数组错误(元素总和)

时间:2014-01-12 19:11:09

标签: c++ arrays visual-studio

我正在尝试编写一个创建2D数组的简单程序,然后执行一个任务,该任务将该二维数组中的元素总和相加。到目前为止,这是我的代码:

#include <iostream>
#include <stdio.h>

int main()
{
    int array [20][20];
    int i, j;
    int num_elements;
    float sum;

    for (i=0; i<num_elements; i++)
    {
        sum = sum + array[i];
    }

   return(sum);

   // output each array element's value 
   for ( i = 0; i < 20; i++ )
   {
      for ( j = 0; j < 20; j++ )
      {
         printf("a[%d][%d] = %d\n", i,j, array[i][j] );
      }
   }

   system ("PAUSE");
   return 0;
}

我需要在开始下一个问题之前创建这个程序,即修改程序以便它使用函数来分解它。

我弹出一个错误说明如下:

error C2111: '+' : pointer addition requires integral operand

还有下面的代码

sum = sum + array[i];

这里的问题是表达式必须具有算术或未结合的枚举类型。

任何人都可以帮我吗?解释我哪里出错了。我已经在线研究了这个问题,但仍然无法修复它,因为我试图修复它,我得到更多的错误。 如果有人可以给我一个代码示例,非常感谢

新规范:工作。只需打印出总和

#include <iostream>
#include <stdio.h>

int main()
{
    int array [3][5] = 
    {
        { 1, 2, 3, 4, 5, }, // row 0
        { 6, 7, 8, 9, 10, }, // row 1
        { 11, 12, 13, 14, 15 } // row 2
    };

    int i, j=0;
    int num_elements=0;
    float sum=0;

    for (i=0; i<num_elements; i++)
    {
        sum = sum + array[i][j];
    }

    // output each array element's value 
    for ( i = 0; i < 3; i++ )
    {
      for ( j = 0; j < 5; j++ )
      {
         printf("a[%d][%d] = %d\n", i,j, array[i][j] );
      }
    }

    system("PAUSE");
    return(sum);
}

1 个答案:

答案 0 :(得分:1)

您将数组定义为二维。但是在循环中

for (i=0; i<num_elements; i++)
{
    sum = sum + array[i];
}

你将它用作一维。但事实上,你使用指向一维数组的指针进行操作。并且编译器报告了这个错误。

此外,初始化变量num_elements和变量sum。并且没有人知道输入数组的值的位置。:)

此返回语句也没有意义

return(sum);

您的行动计划如下:

1. Enter values for elements of the array
2. Print out the entered array
3. Calculate the sum of all elements
4. Print out the sum.