题目内容
喝汽水问题
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)
数学思路
首先,我们用20元购买了20瓶汽水,现在有20个空瓶。
我们将这20个空瓶兑换成新的10瓶汽水。
然后,将这10个空瓶再次兑换成新的5瓶汽水,现在我们5有个空瓶。
我们再将这5个空瓶兑换成2瓶汽水,此时还剩一个空瓶。
我们将这2个空瓶结合兑换,得到1瓶新的汽水。
现在,我们有2个空瓶,我们在将这来个空瓶兑换成1瓶汽水
因此,到目前为止,我们总共获得了20+10+5+2+1+1=39瓶汽水。
所以,给了20元我们可以喝到39瓶汽水。
其中剩余空瓶子为:上次兑换后剩余不足以兑换新汽水的空瓶子 + 兑换后新喝的汽水瓶数。
代码:
#include<stdio.h>
int main() {
int money = 20;//一开始的钱数
int total = 0;//总共喝的汽水数
int s = 0;//空瓶数
total = money;//买的汽水数
s = total;//一开始空瓶数=汽水瓶数
while (s >= 2)
{
int new_total = s/2;//兑换的汽水瓶数
total += new_total;//更新汽水总数
s = s % 2 + new_total;//剩余的空瓶+新喝的汽水数
}
printf("%d ", total);
return 0;
}
输出菱形
用c语言,在屏幕上输出以下图案
方法:我们用两个大的for循环分别输出菱形的上半部分和下半部分。
根据图形分析,我们可以看出来在菱形的上半部分空格是逐行减少的,规律是row(总行数)- i(第i行),而*号是逐行增加的,规律是2*i(第i行)-1。
菱形的下半部分空格是逐行增加的,规律是空格数 = i(行数),而*号是逐行减少的,规律是 2*(row+1-i)-1。
代码:
#include<stdio.h>
int main() {
int row = 0;//打印的行数
scanf("%d", &row);
//row /= 2;
for (int i = 1; i <= row+1; i++) {//上半部分打印的行数
for (int j = 0; j <= row - i;j++) {//打印空格 多到少
printf(" ");
}
for (int j = 0; j <2*i-1; j++) {//打印* 少到多
printf("*");
}
printf("\n");
}
for (int i = 1; i <= row; i++) {//下半部分打印的行数
for (int j = 0; j < i; j++) {//空格少到多
printf(" ");
}
for (int j = 0; j < 2*(row+1-i)-1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
祝大家生活愉快。