假设我们有一个自动售货机,它销售饮料和零食。购买逻辑如下: 1. 如果投入足够的金额,并且选择的商品有库存,那么售货机将发放商品。 2. 如果投入的金额不足,售货机将退回金额 3. 如果选择的商品无库存,售货机将显示“商品售罄”并退回金额 用c语言编一个程序
时间: 2024-09-07 19:05:21 浏览: 29
根据您的要求,下面是一个简单的C语言程序,用于模拟自动售货机的购买逻辑:
```c
#include <stdio.h>
// 商品结构体
typedef struct {
char name[30]; // 商品名称
float price; // 商品价格
int stock; // 商品库存
} Product;
// 显示商品信息
void showProducts(Product *products, int size) {
printf("可供选择的商品列表:\n");
for (int i = 0; i < size; i++) {
printf("%d. %s - 价格: %.2f, 库存: %d\n", i + 1, products[i].name, products[i].price, products[i].stock);
}
}
// 主函数
int main() {
// 初始化商品信息
Product products[] = {
{"可乐", 3.0, 10},
{"薯片", 2.5, 5},
{"果汁", 4.0, 7},
{"糖果", 1.5, 0}
};
int size = sizeof(products) / sizeof(products[0]);
int choice; // 用户选择的商品
float money; // 用户投入的金额
int productStock; // 商品库存
float change; // 找零金额
// 显示商品信息
showProducts(products, size);
// 获取用户选择的商品和投入的金额
printf("请选择商品编号(1-%d): ", size);
scanf("%d", &choice);
printf("请输入投入的金额: ");
scanf("%f", &money);
// 检查商品是否存在以及库存情况
if (choice < 1 || choice > size) {
printf("选择的商品不存在,请重新选择。\n");
} else if (products[choice - 1].stock <= 0) {
printf("商品售罄。\n");
} else if (money < products[choice - 1].price) {
// 投入金额不足
printf("投入的金额不足,商品价格为: %.2f\n", products[choice - 1].price);
} else {
// 发放商品并找零
productStock = products[choice - 1].stock;
products[choice - 1].stock--;
change = money - products[choice - 1].price;
printf("商品发放成功,找零: %.2f\n", change);
}
return 0;
}
```
这个程序首先定义了一个商品结构体,包含商品名称、价格和库存信息。然后通过`showProducts`函数显示所有可供选择的商品。在主函数中,程序会提示用户选择商品编号和投入的金额。根据用户的选择和投入金额,程序会检查商品是否存在、是否有库存,以及金额是否足够。如果一切条件都满足,程序会发放商品并计算找零。