这个程序应该接受输入,将其放入一个数组中,并输出项、库存项和数组中的项之和。代码如下:

#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/

10-13 05:34