首页 > 解决方案 > 计算数组的总和

问题描述

#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;
 }

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

标签: c

解决方案


1.

您应该从 0 到 -1 运行循环,numOfMeal因为数组索引从 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 变量中。


推荐阅读