• 【C语言程序设计】谁家孩子跑得最慢?


    张、王、李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得 9 分,跑第二得 8 分,依次类推。比赛结果显示各家的总分相同,且这些孩子没有同时到达终点的,也没有一家的两个或三个孩子获得相连的名次。已知获第一名的是李家的孩子,获第二名的是王家的孩子。获得最后一名的是谁家的孩子?

     

    算法思想

    按题目的条件,共有 1+2+3+…+9=45 分,每家孩子的得分应为 15 分。

    根据题意可知,获第一名的是李家的孩子,获第二名的是王家的孩子,则可推出:获第三名的一定是张家的孩子。

    由“这些孩子没有同时到达终点的”可知:名次不能并列,由“没有一家的两个或三个孩子获得相连的名次”可知:第四名不能是张家的孩子。

     

    程序代码

    #include <stdio.h>
    
    int score[4][4];
    
    int main()
    
    {
    
        int i,j,k,who;
    
        score[1][1]=7;
    
        score[2][1]=8;
    
        score[3][1]=9;
    
        for(i=4;i<6;i++)
    
            for(j=4;j<7;j++)
    
                for(k=4;i!=j&&k<7;k++)
    
                    if(k!=i&&k!=j&&15-i-score[1][1]!=15-j-score[2][1]
    
                                &&15-i-score[1][1]!=15-k-score[3][1]
    
                                &&15-j-score[2][1]!=15-k-score[3][1])
    
                    {
    
                        score[1][2]=i;score[1][3]=15-i-7;
    
                        score[2][2]=j;score[2][3]=15-j-8;
    
                        score[3][2]=k;score[3][3]=15-k-9;
    
                    }
    
                    for(who=0,i=1;i<=3;i++,printf("
    "))
    
                        for(j=1;j<=3;j++)
    
                        {
    
                            printf("%d",score[i][j]);
    
                            if(score[i][j]==1)
    
                                who=i;
    
                        }
    
                        if(who==1)
    
                            printf("最后一名是张家孩子
    ");
    
                        else if(who==2)
    
                            printf("最后一名是王家孩子
    ");
    
                        else
    
                            printf("最后一名是李家孩子
    ");
    
                        return 0;
    
    }

    调试运行结果

    根据算法思想,通过程序的运行得到结果如下所示:

    753

    861

    942

    最后一名是王家孩子

    总结

    本实例主要运用了二维数组的引用和循环的嵌套。二维数组元素的引用形式为“数组名[下标1][下标2]”。例如“a[1][2]”其下标是可以大于或者等于 0 的整型常量、整型变量或者整型表达式。

    引用二维数组元素时,下标不要越界,也就是说下标值需要从 0 开始,但不要超过行、列的范围。


     

    最后,不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

    【值得关注】我的 C/C++编程学习交流俱乐部【点击进入】

    问题答疑,学习交流,技术探讨,还有超多编程资源大全,零基础的视频也超棒~

  • 相关阅读:
    dp周训练 状态压缩
    计算几何 点对处理 #345 (Div. 2) C. Watchmen
    Codeforces Round #303 (Div. 2) D. Queue 水题贪心
    TTTTTTTTTTTTT 树的直径 Codeforces Beta Round #14 (Div. 2) D. Two Paths
    TTTTTTTTTTTTT CF Good Bye 2015 C- New Year and Domino(CF611C) 二维前缀
    巨蟒python全栈开发数据库前端8:jQuery框架2
    计时器练习
    onload事件,解决不能在head写代码
    js引入方式的弹框方法2
    pycharm中格式标准化代码
  • 原文地址:https://www.cnblogs.com/huya-edu/p/14435811.html
Copyright © 2020-2023  润新知