请检查我的代码。不会返回正确的价值

时间:2014-09-18 08:02:43

标签: c

#include <stdio.h>

int f_totprice(int,int,int,int);

int main()

{
    int menu_1;
    int menu_2;
    int menu_3;
    int menu_4;
    int totprice;
    int received_money;

    while (1){
        printf("what do you want to order?\n");
        printf("pizza: ");
        scanf("%d",&menu_1);
        printf("cheese: ");
        scanf("%d",&menu_2);
        printf("curry: ");
        scanf("%d",&menu_3);
        printf("soup: ");
        scanf("%d",&menu_4);


        printf("======================================\n");

        totprice=f_totprice(menu_1,menu_2,menu_3,menu_4);
        printf("total price is %d\n",totprice); /* this part returns a wrong value */
        printf("received ");
        scanf("%d",&received_money);
        printf("Your change is %d",received_money-totprice);

    }

}

int f_totprice (int a, int b, int c, int d)
{
    int total;

    char price[]={500,1000,1500,2000};

    total=a*price[0]+b*price[1]+c*price[2]+d*price[3];

    return total;
}

所以,我只是写了一个代码来制作一个简单的菜单,价格部分不会返回我的函数的总值。它一直说“总值是-600,-300,-190”等而不是整数。在我眼里,它没有任何问题。请帮忙? :(

3 个答案:

答案 0 :(得分:3)

    char price[]={500,1000,1500,2000};

你能弄明白为什么这不起作用吗? 您应该了解如何在编译器上打开警告。

答案 1 :(得分:-1)

你的问题就在这里

int f_totprice (int a, int b, int c, int d)
{
    int total;

    char price[]={500,1000,1500,2000};

    total=a*price[0]+b*price[1]+c*price[2]+d*price[3];

    return total;
}

为什么使用char数组

使用int数组

答案 2 :(得分:-1)

您正在使用char数组而不是interger数组,并以整数类型(%d)打印输出,因此它打印相当于总和的ASCII,请将字符数组更改为整数数组。

int price [] = {500,1000,1500,2000};