gpt4 book ai didi

c - 数组无法与 C 中的函数一起正常工作?

转载 作者:行者123 更新时间:2023-11-30 21:01:57 25 4
gpt4 key购买 nike

我正在为大学研讨会创建一个程序。我快完成了,但是当我编译程序并运行它时,它没有按预期的方式工作:这是我的代码:

#include <stdio.h>

int calulation(long long int barcode[100], double price[100], int quantity[100], int i);

int main(void) {
long long int barcode[100];
double price[100];
int quantity[100];
int i;

printf("Grocery Store Inventory \n");
printf("======================= \n");

printf("Barcode: ");
scanf("%lld", &barcode[0]);
printf("Price: ");
scanf("%f", &price[0]);
printf("Quantity: ");
scanf("%d", &quantity[0]);


for (i = 0;i < 99; i++) {

printf("Barcode: ");
scanf("%lld", &barcode[i]);
if (barcode[i] == 0) {
break;
}
printf("Price: ");
scanf("%f", &price[i]);
printf("Quantity: ");
scanf("%d", &quantity[i]);

}
calculation(barcode, price, quantity, i);
}

int calculation(long long int barcode[], double price[], int quantity[], int i) {

double totalAmount;
int j;

printf("Goods in Stock \n");
printf("===============\n");

//j count and display entered value as long as it is less than i

for (j=0;j<i+1;j++) {

printf(" %lld, %.2f, %d, %.2f \n", barcode[j], price[j], quantity[j]);
}

//All prices are added for totalamount
for(j = 0; j < i+1; j++) {

totalAmount = price[j] + price[j];
}

//totalamount is multiplied by quantity for the final price
for (j = 0; j < i+1; j++) {

totalAmount = totalAmount * quantity[j];
}

printf("Total value goods in stock: %.2f \n", totalAmount);
}

问题是当我运行程序并输入所有数据时,输出不正确。输出是这样的:

Grocery Store Inventory
=======================
Barcode: 123
Price: 1.24
Quantity: 4
Barcode: 1234
Price: 2.24
Quantity: 8
Barcode: 12345
Price: 0.40
Quantity: 20
Barcode: 0
Goods in Stock
===============
1234, 2.24, 8, -0.00
12345, 0.40, 20, -0.00
0, -0.00, 0, -0.00
Total value goods in stock: -0.00

我们输入条形码、价格和数量,当条形码为 0 时程序结束。

最佳答案

  1. "scanf("%f", &price[0])"
    价格是 double 组。您应该将 %lf 与 scanf 一起使用。

  2. for 循环中,您将覆盖条形码[0]、数量[0]、价格[0]。

  3. 在您的计算函数中,在第一个循环中您不需要最后一个 %.2f,因为您只有三个变量。这就是您得到 -0.00 的原因。

  4. 在计算函数的第二个 for 循环中,您将产品的价格相加并乘以 2。

然后在第三个 for 循环中,将所有产品的总价格乘以每种产品的数量。这没有任何意义。

您可能想这样做:

double sum = 0;

将此行放入第二个 for 循环中并删除第三个 for 循环:

sum += price[j]*quantity[j];

关于c - 数组无法与 C 中的函数一起正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33681698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com