全国计算机编程大赛复赛题的一个问题

joejoe1991 2007-03-31 04:24:58
在某次实弹射击训练中,班长将十个战士围成一圈发子弹。首先,班长给第一个战士10颗,第二个战士2颗,第三个战士8颗,第四个战士22颗,第五个战士16颗,第六个战士4颗,第七个战士10颗,第八个战士6颗,第九个战士14颗,第十个战士20颗。然后按如下方法将每个战士手中的子弹进行调整:所有的战士检查自己手中的子弹数,如果子弹数为奇数,则向班长再要一颗。然后每个战士再同时将自己手中的子弹分一半给下一个战士(第10 个战士将手中的子弹分一半给第1个战士)。问需要多少次调整后,每个战士手中的子弹数都相等?每人各有多少颗子弹?
要求输出每轮调整后各战士手中的子弹数。

我试了一下 写出的代码是这样的

#include <stdio.h>
void main()
{

int shuru[10][2]={{0,10},{1,2},{2,8},{3,22},{4,16},{5,4},{6,10},{7,6},{8,14},{9,20}};
int i=0,cishu=0,manzu='n';

for (i=0;i<=9;i++)

{
if (shuru[i][1]%2!=0)
shuru[i][1]++;

}


while(1)

{

for (i=1;i<=9;i++)

{

shuru[i][1]+=shuru[i-1][1]/2;


}

shuru[0][1]+=shuru[9][1]/2;

cishu++;

i=0;

while(i<=9)

{

if (shuru[i][1]==shuru[i+1][1])
{
shuru[i][1]=shuru[i+1][1];

i++;

if (i==9)
{
manzu=='y';
break;
}
}

else
break;
}

if (manzu=='y')
break;
}


printf("共交换了%d次!\n",cishu);
printf("每个人手里的字弹数都是%d\n",shuru[0][1]);




}

可是 。 就是不对 结果根本就输出不出来。 可能是第一个while死循环搞的。
语法没有问题 到底是哪里错了 谁能告诉偶一下 谢谢啦~!
...全文
391 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ggw007 2007-04-01
  • 打赏
  • 举报
回复
这么简单的题目,还全国大赛,晕倒了,我可不要参加这样子的大赛
zottff 2007-04-01
  • 打赏
  • 举报
回复
答案是17次,每人18颗子弹
zottff 2007-04-01
  • 打赏
  • 举报
回复
#include <stdio.h>
void main()
{
int shuru[10][2] = {{0,10},{1,2},{2,8},{3,22},{4,16},{5,4},{6,10},{7,6},{8,14},{9,20}};
int i=0,cishu=0,manzu='n';
int j, k;

while(1)
{
//检查是否为奇数
for (i=0; i< 10;i++)
{
if (shuru[i][1]%2!=0)
shuru[i][1]++;
}
//将上个人手中的子弹分一半给自己,并将自己的子弹分出去
for (i=0; i< 10; i++)
{
if(i > 0) j = k;
k = shuru[i][1];
if(i == 0)
shuru[i][1] = shuru[9][1]/2 + shuru[i][1] /2;
else
shuru[i][1] = j / 2 + shuru[i][1] /2;
}

cishu++;
printf("\n%d:", cishu);
for( i = 0; i < 10; i++)
{
printf("%d ", shuru[i][1]);
}

for( i = 1; i < 10; i++)
{
if (shuru[0][1] != shuru[i][1])
break;
}
if (i == 10 || cishu >= 100)
break;
}


printf("\n共交换了%d次!\n",cishu);
printf("每个人手里的字弹数都是%d\n",shuru[0][1]);
}
joejoe1991 2007-03-31
  • 打赏
  • 举报
回复
晕 没让你看他是不是有病呢。。。。。
菜牛 2007-03-31
  • 打赏
  • 举报
回复
这个班长有病,病得不轻。
joejoe1991 2007-03-31
  • 打赏
  • 举报
回复
汗 偶才学的 哪个帮忙改一下下 谢谢!!!!!!!!!!!!!!!!!!!
我觉得二维看着习惯一点
magicyang87 2007-03-31
  • 打赏
  • 举报
回复
同时将自己手中的子弹分一半给下一个战士
没注意到同时两个字吗?而且你的二维数组也没什么必要啊,一直都是在用一维
magicyang87 2007-03-31
  • 打赏
  • 举报
回复
答案是17对吧
Featured 2007-03-31
  • 打赏
  • 举报
回复
全国计算机编程大赛复赛是什么样的一个比赛

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧