售卖机c语言

41 篇文章 0 订阅

步骤

  1. 输入商品总价格是多少
  2. 输入你有几张1元,2元,5元,10元,20元,50元,100元
  3. 买完后显示你的消费情况
  4. 显示余额
  • 解释:在客户端能够模拟实现在线购物。在客户端首先输入商品总价格是多少?然后输入你有几张1元,2元,5元,10元,20元,50元,100元的纸币,此时将这些数据通过定义一个结构体指针用套接字描述符发送到服务器中,在服务器端先声明一个购物函数consume(),当服务器接收到客户端传来的数据时,调用consume()函数进行扣费,最后,买完后显示你的购物信息和消费情况,并且显示余额。在此过程中服务器和客户端加入一个while循环,是为了能够多次购物,当客户端提示是否继续购物,如果客户端输入n则退出循环,结束购物。
  • 代码如下:
#include <stdio.h>
#include<string.h>

void consume()
{
	while (1)
	{
		int num = 0;
		int money[] = { 1,2,5,10,20,50,100 };
		int my_money_num[7];
		int size = sizeof(money) / 4;
		int my_size = sizeof(my_money_num) / 4;
		int product_price = 0;
		int i = 0;
		int consume_num[] = { 0,0,0,0,0,0,0 };
		char answer[2];

	
		printf("你已经开始购物!!!\n");
		printf("请输入商品价格:");
		scanf_s("%d", &product_price);
		printf("你的商品为:【%d】元\n", product_price);

		printf("请输入1元的张数:");
		scanf_s("%d", &my_money_num[i++]);

		printf("请输入2元的张数:");
		scanf_s("%d", &my_money_num[i++]);

		printf("请输入5元的张数:");
		scanf_s("%d", &my_money_num[i++]);

		printf("请输入10元的张数:");
		scanf_s("%d", &my_money_num[i++]);

		printf("请输入20元的张数:");
		scanf_s("%d", &my_money_num[i++]);

		printf("请输入50元的张数:");
		scanf_s("%d", &my_money_num[i++]);

		printf("请输入100元的张数:");
		scanf_s("%d", &my_money_num[i]);
		int my_money = 100 * my_money_num[6] + 50 * my_money_num[5] + 20 * my_money_num[4] + 10 * my_money_num[3] + 5 * my_money_num[2] + 2 * my_money_num[1] + my_money_num[0];
		printf("你有【%d】元\n", my_money);
		if (my_money >= product_price)
		{
			printf("开始扣钱。。。\n");

			while (1)
			{
				if ((product_price -= 100) >= 0 && (my_money_num[i]--) > 0)
				{
					consume_num[i]++;
					continue;
				}
				else
				{
					product_price += 100;
					break;
				}
			}
			i--;
			while (1)
			{
				if ((product_price -= 50) >= 0 && (my_money_num[i]--) > 0)
				{
					consume_num[i]++;
					continue;
				}
				else
				{
					product_price += 50;
					break;
				}
			}
			i--;
			while (1)
			{
				if ((product_price -= 20) >= 0 && (my_money_num[i]--) > 0)
				{
					consume_num[i]++;
					continue;
				}
				else
				{
					product_price += 20;
					break;
				}
			}
			i--;
			while (1)
			{
				if ((product_price -= 10) >= 0 && (my_money_num[i]--) > 0)
				{
					consume_num[i]++;
					continue;
				}
				else
				{
					product_price += 10;
					break;
				}
			}
			i--;
			while (1)
			{
				if ((product_price -= 5) >= 0 && (my_money_num[i]--) > 0)
				{
					consume_num[i]++;
					continue;
				}
				else
				{
					product_price += 5;
					break;
				}
			}
			i--;
			while (1)
			{
				if ((product_price -= 2) >= 0 && (my_money_num[i]--) > 0)
				{
					consume_num[i]++;
					continue;
				}
				else
				{
					product_price += 2;
					break;
				}
			}
			i--;
			while (1)
			{
				if ((product_price -= 1) >= 0 && (my_money_num[i]--) > 0)
				{
					consume_num[i]++;
					continue;
				}
				else
				{
					break;
				}
			}

			printf("你消耗了[%d]张100元!!!\n", consume_num[6]);
			printf("你消耗了[%d]张50元!!!\n", consume_num[5]);
			printf("你消耗了[%d]张20元!!!\n", consume_num[4]);
			printf("你消耗了[%d]张10元!!!\n", consume_num[3]);
			printf("你消耗了[%d]张5元!!!\n", consume_num[2]);
			printf("你消耗了[%d]张2元!!!\n", consume_num[1]);
			printf("你消耗了[%d]张1元!!!\n", consume_num[0]);

			int consume_money = 100 * consume_num[6] + 50 * consume_num[5] + 20 * consume_num[4] + 10 * consume_num[3] + 5 * consume_num[2] + 2 * consume_num[1] + consume_num[0];
			int surplus = my_money - consume_money;
			printf("你还剩【%d】元\n", surplus);

			printf("是否继续购物?(y/n)\n");
			scanf_s("%s", answer, 2);
			printf("answer = %s\n", answer);
			if (strcmp(answer, "n") == 0)
			{
				break;
			}
		}
		else
		{
			printf("你的钱不够!!!\n");
		}
	}
	printf("欢迎下次光临\n");

}
int main(int argc, char** argv) {

	consume();

	return 0;
}

本人大部分代码开放免费,用于交流学习,有bug时还望指出,请勿直接抄袭,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值