计算数组中的整数之和

时间:2011-11-28 19:03:41

标签: c arrays

我不知道我是不是一个完全傻瓜,我很可能是,这是漫长的一天,但这不是我想要的工作,而且,我看不到为什么。

它应该能够输入11个数字,每行上有一个新数字,将它们添加到数组中,然后总计它们,但它只是不起作用。即使我正在增加i,它也不会停止退出循环。

有什么想法吗?

int main(void) {
 int array[10];
 int i;
 int sum = 0;
  for ( i = 0; i < 11; i++){
   scanf("%d", &array[i]);
  }
  for (i = 0; i < 11; i++) {
   sum += array[i];
  }
printf("%d", sum);

return 0;

}

9 个答案:

答案 0 :(得分:5)

数组中有10个元素,编号为0 - 9.您正在溢出缓冲区,因此所有投注均已关闭。这是未定义的行为。

答案 1 :(得分:3)

您不能将十一个条目添加到十元素数组中。

答案 2 :(得分:3)

我的猜测是缓冲区溢出,因为for循环读取11个数字,第11个数字存储在数组外部,可能会覆盖i。

尝试在for循环中将11更改为10。

答案 3 :(得分:2)

您将11个数字存储到大小为10的数组中。因此,您将最后一个元素存储在边界之外,这会调用未定义的行为。

这种未定义的行为在您的情况下表现为无限循环的原因可能是i存储在系统内存array之后以及当您将数字写入array[10]时(正如我所说,这是超出范围的),你正在覆盖i。因此,如果您输入的数字小于11,这将导致循环继续并再次请求输入。

答案 4 :(得分:1)

如果一个数组是[10],那么每个数组都从它的索引号0开始,所以这里它将有10个元素;鉴于他们的位置将从0开始到9,计数给出10个元素。

你可以试试这个:

main()         
{        
    int a[10], i, n, sum=0;    

    printf("enter no. of elements");
    scanf("%d",&n); 
    printf("enter the elements");   

    for(i=0;i<n;i++)    
        scanf("%d",&a[i]);

    for (i=0;i<n;i++)
        sum=sum+a[i];

    for(i=0;i<n;i++)
        printf("\n a[%d] = %d", i, a[i]);

    printf("\n sum = %d",sum);
    getch();

}

答案 5 :(得分:0)

您的阵列声明存在问题。您正在定义一个大小为10 array[10]的数组,并说该程序计算导致内存溢出的 11 元素的总和。

要更正程序,只需将数组大小增加为array[11]。如果您愿意,也可以查看recursive approach to find sum of array elements

答案 6 :(得分:0)

试试这个:

void main() {
 int array[10];
 int i;
 int sum = 0;

  for ( i = 0; i < 11; i++){
   scanf("%d", &array[i]);
  }
  for (i = 0; i < 11; i++) {
   sum = sum + array[i] ;
  }
printf("%d", sum);

return 0;
}

答案 7 :(得分:0)

int main()
{
    //this the sum of integers in an array
    int array[] = { 22,2,2,1,5,4,5,7,9,54,4,5,4 },x,sum=0;
    int cout_elements = sizeof(array) / sizeof(int);
    for (x = 0; x < cout_elements; x++) {
        
        sum += array[x];

    }
    printf("%d",sum);
    return 0;
}

答案 8 :(得分:-1)

int main()
{
    int a[10];
    int i,j;
    int x=0;
    printf("Enter no of arrays:");
    scanf("%d",&j);
    printf("Enter nos:");
    for(i=0;i<j;i++)
    {
        scanf("%d",&a[i]);
    }
    for (i=0;i<j;i++)
    {
        x=x+a[i];
    }
    printf("Sum of Array=%d",x);
    return 0;
}