计算数组之和

时间:2018-06-06 10:20:53

标签: c

#include <stdio.h>
#include <stdlib.h>

int main(void) {

int numOfMeal, items[50];//, sum;

 printf("Enter number of meals/snacks: ");
 scanf("%d",&numOfMeal);

 for(int i=1; i<=numOfMeal;i++)
 {
  printf("Enter kilojoules for item %d: ", i);
  scanf("%d", &items[numOfMeal]);

  }
  printf("Your total kilojoules are: %d", items[numOfMeal]);




 return EXIT_SUCCESS;
 }

关于如何计算数组总和的任何想法,当我运行这个程序时它只显示最后输入的千焦耳..

2 个答案:

答案 0 :(得分:1)

1

你应该运行从0到numOfMeal - 1的循环,因为数组索引从0开始,而不是1.如果你正在访问作为分段错误的第n个元素。

2

代码中的第二个问题是您没有获取数组中的输入值。你的循环一次又一次地覆盖items[numOfMeal],这是你数组中的最后一个元素。

编写如下代码:

 int numOfMeal, items[50],sum=0;

 printf("Enter number of meals/snacks: ");
 scanf("%d",&numOfMeal);

 for(int i=0; i<numOfMeal;i++) // run loop from 0 to numOfMeal-1
 {
      printf("Enter kilojoules for item %d: ", i);
      scanf("%d", &items[i]); // take the input at ith position in the array 
      sum+=items[i];  // sum them

 }
  printf("Your total kilojoules are: %d", sum);  // print the final result

这个的简短代码可以是

 int numOfMeal, item, sum=0;
 scanf("%d",&numOfMeal);
 for(int i=0; i<numOfMeal;i++){
      scanf("%d", &item);
      sum+=item;
 }
 printf("Your total kilojoules are: %d", sum);

在这段代码中,我没有将值存储在数组中,只是暂时将其保存在变量中并将其添加到sum变量中。

答案 1 :(得分:0)

1)更改for循环。数组的索引从0开始。将i = 1更改为i = 0,将i <= numOfMeal更改为i < numOfMeal

2)你必须计算循环

中数组元素的总和
...
int result = 0;
for (int i = 0; i < numOfMeal; i++)
{
    ...
    result += items[i];
}
printf("Your total kilojoules are: %d", result);
...