黑马程序员技术交流社区

标题: 10个人围一圈循环报数(1,2,3),报到3的人退出 [打印本页]

作者: aludiba    时间: 2015-7-6 00:03
标题: 10个人围一圈循环报数(1,2,3),报到3的人退出
问最后留下的是原来的几号

#include <stdio.h>
int main()
{
    int array[10],i,j=0,m=10,sum1=0,sum2=0,number;
    printf("input number:\n");
    for (i=0;i<10;i++)
    {
        scanf("%d",&array[i]);//往数组中输入不同的数表示不同的人
    }
    for (i=0;i<10;i++)
    {
        sum1+=i;//将原来的所有人的号码数相加求和
    }
    for (i=0;i<10;i++)
    {
       //报到3的人退出,数组中的该位元素设为0
        if(array[i]!=0)  j++;
        if(j==3)
        {
            j=0;
            array[i]=0;
            sum2+=i;//将退出的人号数相加
            m--;
        }
       //最后一个人报完,从头再来
        if(i==9) i=-1;
        if(m==1) break;//如果还剩一个人for循环结束
    }
    number=sum1-sum2;//两个和相减,就是最后一个人的号码
    printf("最后留下来的是原来的第%d号\n",number);
    return 0;
}
作者: 984326157    时间: 2015-7-6 01:37
这个题我基础测试的时候做过类似的
作者: unnamed    时间: 2015-7-6 08:10
这题方法不唯一,我是用结构体做的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2