目录
一:先理清思路
先将五个小朋友定义为a b c d e,现在他们手上分别有8 9 10 11 12个糖果。第一步将a的分为3份,每份2个,剩下2个,吃掉,自己留一份,另外两份分给相邻的两个人,就是b 和 e,此时a手中就只有一份的数量就是2,b的就是2+9就是11个,e的就是12+2就是14个。后面就按照之前的一直分下去。
二:实现代码
方法一:按照上面的思路一步步解决
这个方法比较简单,直接按照思路一步步写下来就行。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a, b, c, d, e;
int suma, sumb,sumc,sumd,sume;
int suma1, sumb1, sumc1, sumd1, sume1;
scanf("%d%d%d%d%d", &a, &b, &c, &d, &e);
suma = a / 3;
suma1 = a % 3;
b += suma;
e += suma;
sumb = b / 3;
sumb1 = b % 3;
c += sumb;
a = (suma += sumb);
sumc = c / 3;
sumc1 = c % 3;
d += sumc;
b = (sumb + sumc);
sumd = d / 3;
sumd1 = d % 3;
e += sumd;
c = (sumc + sumd);
sume = e / 3;
sume1 = e % 3;
a = (a + sume);
d = (sumd + sume);
e = sume;
printf("%d %d %d %d %d \n%d ", a, b, c, d, e, (suma1 + sumb1 + sumc1 + sumd1 + sume1));
return 0;
}
①先定义五个变量a b c d e
②定义五个变量来记录五个人等分为3分每份是多少个。
③定义五个变量来记录每个人吃了多少糖果。
④输入最开始每个人手中的糖果数。
⑤a手中的糖果数suma就是 a / 3,吃掉的糖果数就是 a % 3,然后将3份中的两份分给相邻的两个人。
⑥后面就按照上面的步骤走到e。
⑦最后将一轮过后每个人手中的糖果数和吃掉的糖果数输出到屏幕上即可。
因为创建的变量太多,这个方式有点繁琐,我想着能不能用循环来解决呢?
第一步:肯定要创建一个x来记录每份糖果的数量,y来记录吃掉糖果的数量,z来记录一共吃掉多少个糖果,创建一个数组arr[5],然后用for循环将五个数输入到数组中。
第二步:用for循环来将每个人中每份糖果的分为3份,多余的吃掉。
第三步:自己(arr[i])留一份,另外两份分给相邻的两个人(arr[i-1]、arr[i+1])。
第四步:因为可能出现越界,所以我们要进行判断i-1>=0、i+1<=4。当i-1小于零时,就是说a的左边没有人,我们直接用e来代表。同理i+1大于4时说明e的右边没人,用a来代替。
第五步:将每个人吃掉的糖果加起来。
第六步:用for循环将此时数组中每个人手中的糖果数和一共吃掉多少个糖果打印出来。
方法二:利用循环该如何解决
①创建变量x、y、z和数组arr[5]。
②用for循环将五个数输入到数组中。(输入时arr[i]前面记得取地址。)
③用循环来计算每个人的糖果分为3份是多少,余多少,分给另外两个人之后自己升多少,
其中还要判断合法性。
④将每个人吃掉的糖果数加起来
⑤利用循环把最后每个人手里剩的糖果和一共吃掉多少糖果打印出来。
利用循环解决的方法就完了。