tony


私信TA

用户名:a779610882

访问量:17745

签 名:

废物一个。

等  级
排  名 301
经  验 3405
参赛次数 1
文章发表 21
年  龄 20
在职情况 学生
学  校 大连交通大学
专  业 高达的制作和编辑

  自我简介:

别看了反正也没人看

题目分析

     一圈人说的就是一个循环抽象来说就是一圈循环要T了多少个成员,不妨把T掉的人变为0这样最后输出不为0的

即可

代码

#include<stdio.h>
main()
{

    int i,a[100],j,k=0;//定义人员数量
    int quit=0;//退出人数
    scanf("%d",&i);//参与人数
    for(j=0;j<=i;j++)//给成员编号
    {
        a[j]=j;

    }
        j=0;
    while(quit<i-1)//剩最后一个人时退出
    {

        if(a[j]!=0)k++;//过滤退出的玩家,剩下的玩家喊口号
        if(k==3){a[j]=0,quit++;k=0;}//当有玩家喊道3时退出
        j++;//下一个人
       if(j==i)j=0;//检测一圈是否结束
    }
    for(j=0;j<i;j++)//筛选出在场的玩家
    {
        if(a[j]!=0){printf("%d",a[j]);}
    }


}

ps 这是基础运用和一些逻辑的混合 对于入门的人来说有点挑战  但是  没挑战也没啥意思。。。。。。。。。。。。。。

 

0.0分

0 人评分

  评论区

#include<stdio.h>
main()
{
 
    int i,a[100],j,k=0;
    int quit=0;
    scanf("%d",&i);
    for(j=0;j<i;j++)
    {
        a[j]=j+1;
 
    }
        j=0;
    while(quit<i-1)
    {
 
        if(a[j]!=0)k++;
        if(k==3){a[j]=0,quit++;k=0;}
        j++;
       if(j==i)j=0;
    }
    for(j=0;j<i;j++)
    {
        if(a[j]!=0){printf("%d",a[j]);}
    }
}
稍微修改了一下 这个才是对的
2018-12-10 21:42:40 | |
没有结果输出?
2018-05-19 15:45:53 | |
把赋值改成
a[j]=j+1;
这样人数才正确
楼上评论还是错的。。。
2018-04-28 15:04:23 | |
# include <iostream>
using namespace std;
 
int main()
{
    int i, s = 0;
    int M, N;
 
    cout << "input the number M and N:" << endl;
    cin >> M >> N;
 
    for (i = 2; i <= M; i++)
    {
        s = (s + N) % i;
    }
 
    cout << "the number is:" << s + 1 << endl;
}//某种恐怖的东西,楼主的方法,在不是数3个人而是很多时,时间可能超限
2017-12-01 22:01:02 | |
写的挺好的
2017-12-01 21:04:40 | |
为什么要用a[100],题目没给人数上限啊
2017-11-19 23:57:19 | |
写得挺好,
建议把赋值改成a[j] = j;
这样人数才正确,
2017-06-12 20:27:03 | |
  • «
  • 1
  • »