喝cola(可乐)问题 ,喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。

练习日志 ,02/20

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int money = 5;//钱
	int total = money;//总瓶数
	int empty = money;//空瓶数

	scanf("%d", &money);
	while (empty > 1)
	{
		total = total + empty / 2;
		empty = empty / 2 + empty % 2;
	}
	printf("%d", total);
	return 0;
}

逐行解释

1.用钱去买可乐,就会有5瓶,并且产生5个空瓶

2.while循环是因为当空瓶数还剩下一个时就停止循环。此时不足以换一瓶可乐

3.  empty / 2,意思是第一次买了5瓶,然后用两个空瓶换一瓶,兑换的瓶数再和总数相加,以此类推

4.empty / 2 兑换完并且喝完,产生了空瓶数。empty % 2,假设就是5个空瓶,余下1个不够兑换的空瓶,加上前的empty / 2 = 2 + 1 ,产生三个空瓶。

往后以次类推,然后在回到解释 2,直到结束

方法2:其实可以发现就是一个等差数列

int money = 5;//钱
int total = 0;//总瓶数
scanf("%d", &money);
if (money <= 0)
	printf("0");
else
	total = (money * 2) - 1;
printf("%d", total);

练习二:

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,

例如:2+22+222+2222+22222

	int a = 0;//需要计算的值
	int n = 0;//几次累加
	int sum = 0;
	int temp = 0;
	scanf("%d %d", &a, &n);
	for (int i = 0; i < n; i++)
	{
		temp = temp * 10 + a;//temp 第一次加3,第二次3*10+a第三次33*10 +3; //把每次计算的值放到temp,然后在累加
		sum += temp;
	}
	printf("%d", sum);

思路就是把通过全部相加给到临时变量然后累加

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值