这个程序应该接受输入,将其放入一个数组中,并输出项、库存项和数组中的项之和。代码如下:
#include <stdio.h>
#define MAX 20
void print_inventory(int inventory[], int numitems);
int input_inventory(int inventory[], int maxnum);
int sum_array(int inventory[], int numitems);
int main()
{
int inventory[MAX];
int num_items;
printf("Please enter the number of items in stock. ");
printf("Enter -1 when you are done.\n");
num_items = input_inventory(inventory, MAX);
print_inventory(inventory, num_items);
return 0;
}
int input_inventory(int inventory[], int maxnum)
{
int index=0;
scanf("%d", &inventory[index]);
while (index < maxnum-1 && inventory[index] != -1){
index++;
scanf("%d", &inventory[index]);
}
if (index == maxnum-1){
printf("No room for more items.\n");
return(index+1);
}
else
return (index);
}
void print_inventory(int inventory[], int numitems)
{
int index;
for (index = 0; index < numitems; index++){
printf("Item number %d:\t\t", index+1);
printf("Number on hand %5d\n", inventory[index]);
}
printf("The total number of items is %d.\n", sum_array(inventory, numitems));
}
int sum_array(int inventory[], int num)
{
int sum, index;
for(index=0; index < num; index++)
sum += inventory[index];
return (sum);
}
当我输入数字时:
7, 4, 6, 7, 9, -1
,输出是32767
。这完全不是真的。知道我的sum_array
函数有什么问题吗? 最佳答案
您需要将sum
初始化为零:
int sum_array(int inventory[], int num)
{
int sum = 0, index;
^^^^^^^^^^^
for(index=0; index < num; index++)
sum += inventory[index];
return (sum);
}
关于c - 在C:函数中,对数组中的项求和并返回奇怪的大数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33766800/