☆215
2021-11-07 17:11
采纳率: 100%
浏览 59

点名游戏:输入一个学生群体的总数N,学生学号从1开始到N编号,从1开始点名,点到3的倍数、5的倍数的时候,跳过该名学生,求点名的次数。输入:一个正整数 N.如:10 输出:一个正整数,点名次数,如:5

点名游戏:输入一个学生群体的总数N,学生学号从1开始到N编号,老师从1开始点名,点到3的倍数、5的倍数的时候,跳过该名学生,求点名的次数。输入:一个正整数 N.如:10
输出:一个正整数,点名次数,如:5

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

  • 最佳回答

    代码如下:

    
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        int n,i,k;
        long long t = 0;
        int cnt = 0;
        int *p;
        scanf("%d",&n);
        p = (int*)malloc(sizeof(int)*(n+1));
        for(i=1;i<=n;i++)
            p[i] = 1;
        
        k=n;
        while(k != 1)
        {
            for(i=1;i<=n;i++)
            {
                if(p[i] == 1)
                {
                    t++;
                    if(t%3==0 || t%5==0)
                    {
                        p[i] = 0;
                        
                        k--;
                    }
                }
                
            }
            cnt++;
        }
        printf("%d",cnt+1);
        free(p);p = 0;
        return 0;
    }
    
    评论
    解决 无用
    打赏 举报