逻辑错误和审题

博客内容讨论了一个关于幼儿园小朋友分糖果的游戏问题,其中涉及将糖果均匀分配给相邻小朋友的过程。文章指出原始代码存在逻辑错误,并提供了修正后的代码。修正点主要在于正确计算每个小朋友糖果数量的变化,以及确保先计算相邻小朋友的糖果数,再进行分配。最终,展示了正确代码如何避免这些错误并得出正确的结果。
摘要由CSDN通过智能技术生成

 题目 

某个幼儿园里,有 55 位小朋友编号依次为 1,2,3,4,51,2,3,4,5 他们按照自己的编号顺序围坐在一张圆桌旁。他们身上有若干糖果,现在他们玩一个分糖果游戏。从 11 号小朋友开始,将自己的糖果均分成 33 份(如果有多余的糖果,就自己立即吃掉),自己留一份,其余两份分给和他相邻的两个小朋友。接着 2,3,4,52,3,4,5 号小朋友也这样做。问一轮结束后,每个小朋友手上分别有多少糖果。

输入格式

一行,55 个用空格隔开的 int 范围内的正整数,分别是游戏开始时 1,2,3,4,51,2,3,4,5 号小朋友手里糖果的数量。

输出格式

22 行,第 11 行是用一个空格隔开的 55 个整数,表示一轮游戏结束后 1,2,3,4,51,2,3,4,5 号小朋友手里糖果的数量。第 22 行是一个整数,表示一轮游戏过程中吃掉的糖果的总数。

 下为逻辑错误代码

#include<stdio.h>
int main()
{
int a,b,c,d,e,sum;

scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
sum=a%3;
a=a/3;
b+=a/3;e=e+a/3;
sum=sum+b%3;
b=b/3;
c=c+b/3;a=a+b/3;
sum=sum+c%3;
c=c/3;
d=d+c/3;b=b+c/3;
sum=sum+d%3;
d=d/3;
e=e+d/3;c=c+d/3;
sum=sum+e%3;
e=e/3;
a=a+e/3;d=d+e/3;

printf("%d,%d,%d,%d,%d\n%d",a,b,c,d,e,sum);
return 0;
}

下为正确代码

#include<stdio.h>
int main()
{
long long a,b,c,d,e,sum;

scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&e);
sum=a%3;
b+=a/3;e=e+a/3;a=a/3;
sum=sum+b%3;
c=c+b/3;a=a+b/3;b=b/3;
sum=sum+c%3;
d=d+c/3;b=b+c/3;c=c/3;
sum=sum+d%3;
e=e+d/3;c=c+d/3;d=d/3;
sum=sum+e%3;
a=a+e/3;d=d+e/3;e=e/3;

printf("%lld %lld %lld %lld %lld\n%lld",a,b,c,d,e,sum);
return 0;
}

对于相邻小朋友手中糖果的数量要先算,否则先算自己手中的糖果会导致计算完后先赋值为分完谈糖果后手中糖果的数量。随后计算相邻小朋友手中的糖果是采用的分完后的值再次分为3份在与自己手中的糖果相加。吃掉的和也要放在第一位.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值