#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”等而不是整数。在我眼里,它没有任何问题。请帮忙? :(
答案 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};