C语言 计算选手的名次 详解

我是JaYLove0589。

本着程序员互相学习的原则,

且因自己深受此题困扰,对递归函数的使用不熟练,所以发下面代码。

望大家指正。

题目描述:

5位选手参加100米决赛,教练员让5人据实力预测比赛结果。

A选手说:B第二,我第三;

B选手说:我第二,E第四;

C选手说:我第一,D第二;

D选手说:C最后,我第三;

E选手说:我第四,A第一;

决赛结果公布后,每位选手的预测都只说对了一半(即一对一错)。计算每位选手比赛实际名次。

特别说明:不是电脑判断出解,直接输出结果不计分。
输入:

输入 1

输出:

输出选手的排名。(所有测试数据在后台,输出格式是 A B C D E,字符之间以空格分隔,最后一个没有空格)

以下是我的代码:

//
//  T3 计算选手的名次.c
//  c 191226
//
//  Copyright © 2019 JaYLove0589. All rights reserved.
//#include <stdio.h>int getRank(char *pplayer,const int QTY);
int judge(char *pplayer);int main(){scanf("1");const int QTY=5;//选手数量为5char player[QTY];//按排名的顺序存储的选手int find=getRank(player, QTY);//寻找是否有满足条件的选手排名if (find==1) {//若找到,输出选手排名for (int i=0; i<QTY; i++) {printf("%c",player[i]);if (i!=QTY-1) {printf(" ");}}} else {//若找不到printf("Not find");}printf("\n");return 0;
}int getRank(char *pplayer,const int QTY){//回溯法,若找到则继续找下一个排名的选手,若找不到则返回上一个选手char ch[5]={'A','B','C','D','E'};//5名选手:A、B、C、D、Estatic int count=0;//设置静态局部变量,count用于存储当前所查找的排名名次int flag=0;//flag用于判断选手是否重复for (int i1=0; i1<QTY; i1++) {//从选手A开始依次寻找for (int i=0; i<count; i++) {//判断该选手是否与前面排名内的选手重复if (pplayer[i]==ch[i1]) {flag=1;break;}}if (flag==1) {flag=0;continue;}pplayer[count]=ch[i1];//若找到不重复的选手,将选手存入当前排名count++;if (count==QTY) {//当找到5名选手时if (judge(pplayer)==1) {//判断是否满足条件return 1;} else {//不满足则返回倒数第二层循环count=count-2;return 0;}} else {if (getRank(pplayer, QTY)==1) {//进入下一层循环,寻找下一个排名的选手return 1;//如果已成功找到,后面的就不用做了,直接返回上一层循环}}}count--;//若找不到该排名的选手,则返回上一层循环return 0;
}int judge(char *pplayer){//写入各排名选手需要满足的条件if ((pplayer[1]=='B' && pplayer[2]!='A') || (pplayer[1]!='B' && pplayer[2]=='A')) {if ((pplayer[1]=='B' && pplayer[3]!='E') || (pplayer[1]!='B' && pplayer[3]=='E')) {if ((pplayer[0]=='C' && pplayer[1]!='D') || (pplayer[0]!='C' && pplayer[1]=='D')) {if ((pplayer[4]=='C' && pplayer[2]!='D') || (pplayer[4]!='C' && pplayer[2]=='D')) {if ( (pplayer[3]=='E' && pplayer[0]!='A') || (pplayer[3]!='E' && pplayer[0]=='A')) {return 1;}}}}}return 0;
}

ps:如果后期需要修改题目中的选手说话内容,则直接在judge()函数内修改即可。

ps:如果后期需要修改选手的数量,直接修改只读变量QTY的值以及getRank()函数内ch字符数组的大小及值即可。

-----------------分割线-----------------

如果发现我“太啰嗦”或代码“太垃圾”还请指出!!谢谢!!

求赞!比心心٩(๑>◡<๑)۶

以上。

C语言 计算选手的名次 详解相关推荐

  1. 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...

    <大学C语言期末考试练习题(带详解答案)>由会员分享,可在线阅读,更多相关<大学C语言期末考试练习题(带详解答案)(55页珍藏版)>请在金锄头文库上搜索. 1.一. 单项选择题 ...

  2. c语言 read 文件字节没超过数组大小时会怎样_剑指信奥 | C 语言之信奥试题详解(四)...

    趣乐博思剑指信奥系列 ❝ 趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案.开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试题分析与详 ...

  3. R语言机器学习之caret包详解(一)

    R语言机器学习caret包trainControl函数详解 R语言机器学习之caret包详解(一) 简介 数据预处理 各种数据变换 近零方差变量 创建虚拟变量 重抽样技术 k折交叉验证 留一交叉验证 ...

  4. c语言while将字符循环,C语言 while语句的用法详解

    在C语言中,共有三大常用的程序结构: 顺序结构:代码从前往后执行,没有任何"拐弯抹角": 选择结构:也叫分支结构,重点要掌握 if else.switch 以及条件运算符: 循环结 ...

  5. 【C语言】扫雷小游戏详解

    [C语言]扫雷小游戏详解 前言: 还记得大明湖畔的夏雨荷,电脑课上的扫雷吗? ---------------------------是 他 吗--------------------------- 没 ...

  6. 784-C语言rand和srand用法详解

    C语言rand和srand用法详解 在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 <stdlib.h> 头 ...

  7. R语言可视化绘图基础知识详解

    R语言可视化绘图基础知识详解 图形参数:字体.坐标.颜色.标签等: 图像符号和线条: 文本属性: 图像尺寸及边界: 坐标轴.图例自定义等: 图像的组合: #install.packages(c(&qu ...

  8. php函数find的用法,c语言find函数的用法详解

    c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...

  9. python ks值计算_利用Python计算KS的实例详解

    在金融领域中,我们的y值和预测得到的违约概率刚好是两个分布未知的两个分布.好的信用风控模型一般从准确性.稳定性和可解释性来评估模型.sOf免费资源网 一般来说.好人样本的分布同坏人样本的分布应该是有很 ...

最新文章

  1. 让你的PHP更安全之PHP.ini
  2. oracle+创建序列自增,oracle序列详解和建立自增主键
  3. SQL 注入式攻击的本质
  4. 用户细分_基于购买历史的用户细分
  5. linux基础文件管理软硬链接
  6. 大数据-----软件开发模型(详细讲解)
  7. oracle 10g学习之分组函数
  8. json里面的list数据取不出来_sql盲注的困局:利用DNSlog快速导出数据
  9. 无锁并发的CAS为何如此优秀?
  10. 数值分析:插值与拟合
  11. 2019美赛B题PSO算法
  12. python爬虫微博24小时热搜_GitHub - Writeup007/weibo_Hot_Search: 微博爬虫:每天定时爬取微博热搜榜的内容,留下互联网人的记忆。...
  13. APP的原型制作流程
  14. CSS实现简单的3D旋转魔方
  15. PID控制器及其参数整定
  16. 致远互联发布的智慧协同新一代企业管理平台,新在哪里?
  17. epson l201 l200清零软件 中文版 l111 l101清零软件 L350 L353 清零软件
  18. Truck History POJ - 1789 最小生成树Prim
  19. 黑马程序员--IO总结(含2个设计模式)
  20. can not be named yunan because its located directly under the workspace root

热门文章

  1. nCode:GlyphWorks案例教程一
  2. Redis解决老项目集群Session共享案例与回顾
  3. 自然语音处理(NLP)系列(五)——详解智能问答系统
  4. 用Multisim对LC正弦波振荡器进行仿真
  5. Ceph入门到精通-rados bench性能基准测试
  6. 几种常用的加解密的方法
  7. 【2.Delphi语法基础】2.Object Pascal数据类型
  8. 查询oracle授权信息,oracle授权查询
  9. 人脸识别调研报告2021
  10. 系统架构设计(3)-可扩展性