网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月26日漏签0天
c语言吧 关注:801,827贴子:4,375,633
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 0回复贴,共1页
<<返回c语言吧
>0< 加载中...

班长分子弹问题解析

  • 只看楼主
  • 收藏

  • 回复
  • Adolph_Hsing
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在某次实弹射击训练中,班长将十个战士围成一圈发子弹,首先,班长给第一个战士10颗,第二个战士2颗,第三个战士8颗,第四个战士22颗,第五个战士16颗,第六个战士4颗,第七个战士10颗,第八个战士6颗,第九个战士14颗,第十个战士20颗,然后按如下方法将每个战士手中的子弹进行调整,所有的战士检查自己手中的子弹数,如果子弹数为奇数,则向班长再要一颗,然后每个战士再同时将自己手中的子弹分一半给下一个战士(第10个战士将手中的子弹分一半给第一个战士)。问需要多少次调整后,每个战士手中的子弹数都相等 ?每个人各有多少颗子弹?
#include <stdio.h>
void issingle(int *); /*对子弹数量是奇数的处理*/
int isequal(int *); /*判断所有战士的子弹数量是否相等*/
void display(int *,int); /*打印*/
void distribute(int *); /*战士之间进行子弹调整*/
int main(void)
{
int counts[10]={10,2,8,22,16,4,10,6,14,20};
int i;
int times=1;
display(counts,times);
while(!isequal(counts))
{
issingle(counts);
distribute(counts);
display(counts,times++);
}
}
void issingle(int *counts)
{
int i;
for(i=0;i<10;i++)
{
if(counts[i]%2!=0)
{
counts[i]++;
}
}
}
int isequal(int *counts)
{
int i;
int temp=counts[0];
for(i=1;i<10;i++)
{
if(temp!=counts[i])
{
return 0;
}
}
return 1;
}
void display(int *counts,int times)
{
int i;
printf("第%d次:\t",times);
for(i=0;i<10;i++)
{
printf("%3d",counts[i]);
}
printf("\n");
}
void distribute(int *counts)
{
int i,next,temp;
temp=counts[9]/2;
for(i=0;i<10;i++)
{
next=counts[i]/2;
counts[i]/=2;
counts[i]+=temp;
temp=next;
}
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示