• C语言不可不敲系列:跳水比赛排名问题


    目录

    1题干:

    2解题思路:

    3代码:

    4运行结果:

    5总结:


    1题干:

    5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
    A选手说:B第二,我第三;
    B选手说:我第二,E第四;
    C选手说:我第一,D第二;
    D选手说:C最后,我第三;
    E选手说:我第四,A第一;
    比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

    2解题思路:

    首先我们不知道名次问题,这时候我们就可以利用循环来做题,也就是利用穷举法来一个一个的尝试,把所有结果都尝试一遍就能找到满足题干条件的答案.

    这个题我们可以对A,B,C,D,D都进行循环穷举,e的话可以用总名次(第一名+第二名+第三名+第四名+第五名等于15)去减去A,B,C,D的名次就可以知道E的名次,这个可以大大减少循环量.废话不多说,直接展示代码及其运行的结果.

    3代码:

    1. #include
    2. int main()
    3. {
    4. int a,b,c,d,e;//定义5个人
    5. for(a=1;a<=5;a++)//因为不确定5人的名次,所以要穷举法(循环),一个一个的尝试
    6. {
    7. for(b=1;b<=5;b++)
    8. {
    9. if(a==b) continue;//名次问题只能是一个人占一个位置,所以他们不可能相等
    10. for(c=1;c<=5;c++)
    11. {
    12. if(a==c||b==c) continue;//同理如上
    13. for(d=1;d<=5;d++)
    14. {
    15. if(a==d||b==d||c==d) continue;//同理如上
    16. e=15-a-b-c-d;//这里可以用做减法来判断e的名次减少一层循环,15是因为1到5名相加的结果
    17. if(a!=e&&b!=e&&c!=e&&d!=e)//同理如上
    18. if(1==(b==2)+(a==3)&&(b==2)+(e==4)==1&&(c==1)+(d==2)==1&&(c==5)+(d==3)==1&&1==(e==4)+(a==1))//题干说每人说的话只对一般
    19. printf("a是第%d名\nb是第%d名\nc是第%d名\nd是第%d名\ne是第%d名",a,b,c,d,e);//所以用关系判断句的结果来表示
    20. }
    21. }
    22. }
    23. }
    24. return 0;
    25. }

    拆解分析:

    <1>:首先对5人进行定义并开始循环,此时如果a==b就排除这种情况,因为名次问题一人只能占一个名次,一个名次也只能占一个人.

    1. #include
    2. int main()
    3. {
    4. int a,b,c,d,e;//定义5个人
    5. for(a=1;a<=5;a++)//因为不确定5人的名次,所以要穷举法(循环),一个一个的尝试
    6. {
    7. for(b=1;b<=5;b++)
    8. {
    9. if(a==b) continue;//名次问题只能是一个人占一个位置,所以他们不可能相等

    <2>接着往下进行循环.

    1. for(c=1;c<=5;c++)
    2. {
    3. if(a==c||b==c) continue;//同理如上
    4. for(d=1;d<=5;d++)
    5. {
    6. if(a==d||b==d||c==d) continue;//同理如上
    7. e=15-a-b-c-d;//这里可以用做减法来判断e的名次减少一层循环,15是因为1到5名相加的结果

    <3>这里是对题干条件的判断,利用关系表达式,因为题干说每人说的两句话只对一半,所以利用判断语句并令其==1即可.

    1. if(a!=e&&b!=e&&c!=e&&d!=e)//同理如上
    2. if(1==(b==2)+(a==3)&&(b==2)+(e==4)==1&&(c==1)+(d==2)==1&&(c==5)+(d==3)==1&&1==(e==4)+(a==1))//题干说每人说的话只对一般
    3. printf("a是第%d名\nb是第%d名\nc是第%d名\nd是第%d名\ne是第%d名",a,b,c,d,e);//所以用关系判断句的结果来表示
    4运行结果:

    5总结:

    人贵有恒,坚持练习一定有所进步.

    若想练习C语言的习题,可以去我主页逛一逛,比如说:

    【c趣编程】输入一个整数,判断其有几位-CSDN博客

    感谢各位的阅读,以上就是“C语言怎么解决跳水比赛排名问题”的内容了,经过本文的学习后,相信大家对C语言这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是CSDN杰克尼,小编将为大家推送更多相关知识点的文章,欢迎关注!

  • 相关阅读:
    AUTOSAR规范与ECU软件开发(实践篇)10、AUTOSAR技术展望
    安全典型配置(一)使用ACL限制FTP访问权限案例
    基础入门 - Spring Boot HelloWorld 第二节
    NumPy 均匀分布模拟及 Seaborn 可视化教程
    27岁想转行IT,还来得及吗?
    Istio实践(2)- 流量控制及服务间调用
    HCIA-R&S自用笔记(22)STP状态与计时器、STP拓扑变化、STP配置及实验
    VUE结合elementui实现分页器列表
    impala常用时间函数,date->string->timestamp互转
    如何绘制神经网络图,图嵌入 图神经网络
  • 原文地址:https://blog.csdn.net/mrjieke6/article/details/134428681