美文网首页C语言小程序
C语言小程序之没事跑跑步

C语言小程序之没事跑跑步

作者: 蟋蟀蝈蝈蛐蛐 | 来源:发表于2017-12-13 17:22 被阅读0次

    题目

    有N个人参加100米短跑比赛, 跑道为8条。程序的任务是按照尽量使每组的人数相差最少的原则分组。

    例如:
    N=8时,分成1组:8人即可。
    N=9时,分成2组:一组5人,一组4人。
    N=25时,分4组:7、6、6、6。

    请编程计算分组数字, 要求从键盘输入一个正整数(1~100之间, 不必考虑输入错误的情况)表示参赛的人数。
    程序输出每个组的人数, 从大到小顺序输出, 每个数字一行。


    分析

    根据举的例子不难分析, 当人数超过8时分两组, 超过16时分三组, 超过24时分四组。。。
    分组数应该是和人数除以8的结果有关。

    确定分组数之后, 按照每组人数相差最少来分组,5 4, 7 6 6, 大概可以看出来个所以然(* ̄m ̄)

    分组数

    当人数被8整除时, 分组数为n/8
    当人数不被8整除时, 分组数为n/8+1
    即:

    // 计算分组数
    int zu = num/arr+(num%arr!=0);
    

    上吧for!

    #include <stdio.h>
    
    int main()
    {
        // 人数 跑道数
        int num, arr = 8;
        scanf("%d", &num);
        
        // 计算分组数
        int zu = num/arr+(num%arr!=0);
        
        // 计算每组人数
        int shu = num/zu;
        
        // 输出每组人数
        for(int i=0; i<zu; i++)
        {
            // 前几组人数+1
            if(i<num%zu)
                 printf("%d\n", shu+1);
             else
                 printf("%d\n", shu);
        }
    }
    

    解析zzz

    重点在最后输出的for/if里, 根据规则:

    • 当人数是8的倍数时, 每组人数是n/zu是毋庸置疑的
    • 当人数不是8的倍数是, 前几组人数是n/zu+1, 后几组人数是n/zu

    结果ing

    C语言小程序之没事跑跑步

    相关文章

      网友评论

        本文标题:C语言小程序之没事跑跑步

        本文链接:https://www.haomeiwen.com/subject/qrdzixtx.html