C语言-啤酒饮料问题

C语言的啤酒饮料问题


前言

作为一个物联在读生,C语言是我们必学的一科,今天分享的是“啤酒饮料问题”的想法与代码啊。然后有什么不对或者是可以改进的地方,欢迎提出与探讨呀。


一、题目要求

问题描述:啤酒每罐2.3元,饮料每瓶1.9元,小明买了若干饮料喝啤酒,总共花了82.3元,并且他买的啤酒的数量比饮料的少,请问他买了多少罐啤酒和多少瓶饮料。请输出所有可能的方案

二、作答步骤

1.思路

这是一个数学问题:
假设啤酒买x,饮料买y;x<y;两者所用的钱的总和为82.3元;并且已知了二者的单价。
我们可以得到一个二元一次方程:1.9y+2.3x=82.3。
输出xy的值。

我们可以看出来,只要xy中有一个值确定了,那么另一个就也可以得出来了。那么如何先确定其中的一个值就成为了现在的首要问题了。

我们可以先假定全买一种,另一种数量为0。
在这里题目要求啤酒的数量比饮料的少,那么我们可以先假定全买饮料:int l=82.3/ml; //定义全买饮料
此时购买的数量是买饮料的最大值,后面的方案的饮料的数量会比这少:for(int i=l;i>j;i--) //从全买饮料开始输出,但买的啤酒比饮料多时,退出用一个循环来依次递减饮料的数量;
确定啤酒的数量j=(82.3-ml*i)/mp;,但是因为我们确定啤酒数量的时候使用的是“商”,有可能会出现存在余数的情况,也就是说,钱没用完
计算出我们应该付的钱float k=ml*i+mp*j; //计算应花的钱
把计算得到的钱和82.3进行对比,确定求得数量是否正确,这里我们计算得出来的结果可能会和82.30有误差,例如得到82.299之类的,所以在这里用k>82.295&&k<82.305来允许误差的存在。

2.代码演示

代码如下:

#include<stdio.h>
int main()
{
	int i=0,j=0;	//定义啤酒和饮料数量;
	float mp=2.3,ml=1.9;	//定义单价
	int l=82.3/ml;		//定义全买饮料
	//printf("%d",l);
	for(int i=l;i>j;i--)		//从全买饮料开始输出,但买的啤酒比饮料多时,退出 
	{
		j=(82.3-ml*i)/mp;
		float k=ml*i+mp*j;		//计算应花的钱
		//printf("%lf\n",k);
		if(k>82.295&&k<82.305)
		{
			printf("啤酒买了%d瓶\n饮料买了%d瓶\n",j,i);
			printf("花费%.2lf元。\n\n",k);
		 } 
	 } 
	return 0; 
 } 

完结撒花
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

riccccccccc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值