#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;
}
关于如何计算数组总和的任何想法,当我运行这个程序时它只显示最后输入的千焦耳..
答案 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);
...