问题 D: 扑克牌排序(结构体)

时间限制: 1 Sec  内存限制: 128 MB
提交: 666  解决: 284
[提交][状态][讨论版]

题目描述

自定义结构体表示一张扑克牌,包含类型——黑桃、红桃、梅花、方块、王;大小——2,3,4,5,6,7,8,9,10,J,Q,K,A,小王(用0表示)、大王(用1表示)。输入n,输入n张扑克牌信息,从大到小输出它们的排序结果。

假设扑克牌的排序规则是大王、小王为第一大、第二大,剩余52张扑克牌按照先花色后大小排序。

花色:黑桃>红桃>梅花>方块。

大小: A>K>Q>J>>10>9>...>2。

提示:百度sort函数、strstr函数使用。

输入

测试次数t

每组测试数据两行:

第一行:n,表示输入n张扑克牌

第二行:n张扑克牌信息,格式见样例

输出

对每组测试数据,输出从大到小的排序结果

样例输入

3

5

黑桃4 红桃10 梅花Q 方块K 黑桃A

10

大王 梅花10 红桃K 方块9 黑桃2 梅花A 方块Q 小王 黑桃8 黑桃J

5

红桃K 梅花K 黑桃K 方块K 小王

样例输出

黑桃A 黑桃4 红桃10 梅花Q 方块K

大王 小王 黑桃J 黑桃8 黑桃2 红桃K 梅花A 梅花10 方块Q 方块9

小王 黑桃K 红桃K 梅花K 方块K

代码如下:

#include <iostream>
#include <algorithm>//sort
//  Sort函数有三个参数:
//(1)第一个是要排序的数组的起始地址。
//(2)第二个是结束的地址(最后一位要排序的地址的下一地址)
//(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
#include<string.h>//strstr
//从字符串str1中查找是否有字符串str2, 如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回null。
using namespace std;
struct Poker{char flower[100];
};int getvalue(char str[]){int quan;if (strstr(str,"黑桃")) {quan=4;}if (strstr(str,"红桃")) {quan=3;}if (strstr(str,"梅花")) {quan=2;}if (strstr(str,"方块")) {quan=1;}int wei;if (strstr(str,"A")) {wei=14;}if (strstr(str,"K")) {wei=13;}if (strstr(str,"Q")) {wei=12;}if (strstr(str,"J")) {wei=11;}if (strstr(str,"10")) {wei=10;}if (strstr(str,"9")) {wei=9;}if (strstr(str,"8")) {wei=8;}if (strstr(str,"7")) {wei=7;}if (strstr(str,"6")) {wei=6;}if (strstr(str,"5")) {wei=5;}if (strstr(str,"4")) {wei=4;}if (strstr(str,"3")) {wei=3;}if (strstr(str,"2")) {wei=2;}
//    cout<<"输出"<<(quan+(wei-1)*4)<<endl;return (quan*14+wei);
}
int main() {int t;cin>>t;while (t--) {int test;cin>>test;Poker cod[test];for (int i = 0; i <test ; ++i) {cin>>cod[i].flower;}for (int i = 0; i <test ; ++i){if (strstr(cod[i].flower,"大王")!=NULL) {cout<<"大王"<<" ";}}for (int i = 0; i <test ; ++i){if (strstr(cod[i].flower,"小王")!=NULL) {cout<<"小王"<<" ";}}for (int i = 0; i <test ; ++i) {if (strstr(cod[i].flower,"大王")!=NULL||strstr(cod[i].flower,"小王")!=NULL) {continue;}for (int j = i+1; j <test ; ++j) {if (strstr(cod[j].flower,"大王")!=NULL||strstr(cod[j].flower,"小王")!=NULL) {continue;}if (getvalue(cod[i].flower)<getvalue(cod[j].flower)) {Poker temp;temp=cod[j];cod[j]=cod[i];cod[i]=temp;}}}for (int i = 0; i < test; ++i) {if (strstr(cod[i].flower,"大王")!=NULL||strstr(cod[i].flower,"小王")!=NULL) {continue;}cout<<cod[i].flower<<" ";}cout<<endl;}return 0;
}

问题 D: 扑克牌排序(结构体)相关推荐

  1. 蓝桥杯 成绩排序——结构体

    蓝桥杯 成绩排序--结构体 问题描述 给出n个学生的成绩,将这些学生按成绩排序, 排序规则,优先考虑数学成绩,高的在前:数学相同,英语高的在前:数学英语都相同,语文高的在前:三门都相同,学号小的在前 ...

  2. golang 结构体 slice 排序

    go语言的slice()不仅仅可以对int类型的数组进行排序,还可以对struct类型的数组进行排序 排序函数如下 1. Slice() 不稳定排序 2. SliceStable() 稳定排序 3.  ...

  3. vector 结构体排序_指下码上横戈行——排序

    常见的排序算法有冒泡排序,选择排序,堆排序,快速排序这几种,但十三写博客的目的是为了提高自己的编程解题能力,故在这里介绍如何能快速解决那些涉及到排序的编程问题,首先针对这些问题C++ STL库中已经有 ...

  4. 结构体排序+sort()

    目录 1.结构体定义 2.sort排序 1.sort()函数的头文件和用法举例 2.sort()函数的参数说明 两个参数 三个参数 3.结构体排序 1.结构体定义 结构体(struct)是由一系列具有 ...

  5. C语言结构体和结构体排序

    结构体 结构体是一种构造数据类型 (构造数据类型包括:数组类型.结构体类型.共用体类型) 定义:把不同的数据组合成一个整体. 结构体的一般形式 struct [结构体名称]//struct是关键字 { ...

  6. C++结构体排序,优先队列,运算符重载

    文章目录 基本数据类型排序 结构体排序 比较函数 重载结构体运算符 优先队列 另外一种方法 优先队列基本知识 基本数据类型排序 #include <algorithm> #include ...

  7. C++阶段01笔记汇总【C++软件安装、C++初识、数据类型、运算符、程序流程结构、数组、函数、指针、结构体】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 C++课程安排 1 C++初识 1.1 第一个C++程序 1.1.1 创建项目 1.1.2 创建文件 1.1.3 编写代码 1. ...

  8. C++阶段01笔记08【结构体(基本概念、定义与使用、数组、指针、嵌套、const使用)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 8 结构体 8.1 结构体基本概念 8.2 结构体定义和使用 示例 8.3 结构体数组 示例 8.4 结构体指针 示例 8.5 ...

  9. 使用qsort函数实现结构体

    #include<stdo.h> #include<stdlib.h> //库里面的qsort()函数 //解释: //void qsort(void* base, //bas ...

  10. C语言结构体和共同体

    文章目录 结构体 用typedef说明一个新类型 结构体类型数据的定义和成员的引用 概述 结构体的定义和使用 结构体数组 结构体排序 结构体赋值 结构体嵌套结构体 共用体(联合体) 结构体 用type ...

最新文章

  1. c memcpy 与 strcpy 区别
  2. JZOJ 4366. 【GDKOI2016】项链
  3. android 一个activity定时更新另一个activity的UI
  4. java实现人脸识别源码【含测试效果图】——实体类(Users)
  5. script标签属性用type还是language?
  6. c# 相对路径的一些文献
  7. FreeSWITCH的TLS加密
  8. ajax中return取不到值的问题
  9. tomcat--because there was insufficient free space available after evicting expired cache entries
  10. java开关语句_Java中嵌套开关语句的替代方法
  11. 中文乱码问题:JSP页面的显示问题,获取中文参数值问题
  12. Python基础教程,Python入门教程(非常详细)
  13. 云南国税网上办税无法打印发票的解决办法
  14. Learning Sites
  15. 基于分类分级的医疗临床数据合规共享与安全防护建设实践
  16. 用H5新特性canvas绘制一个钟表
  17. 韦东山freeRTOS系列教程之【第十章】软件定时器(software timer)
  18. 将windows里的内容直接复制粘贴到ubuntu,提高效率
  19. 平板插上显示无服务器,教你一招,让ipad变成免费的外置显示器!
  20. Threejs入门教程

热门文章

  1. 热对流方程加速的OpenMP实现
  2. Myeclipse --The type java.lang.CharSequence cannot be resolved. It is indirectly referenced ---
  3. 数据结构与算法——前缀、中缀、后缀表达式
  4. 前缀表达式(C语言)
  5. c语言时钟程序整点报时,单片机开发的(带整点报时、音乐闹钟)电子时钟(一)...
  6. 系统地和机壳GND间电容与电阻的作用
  7. 关于keil的一些基础知识(持续更新)
  8. 主成分分析碎石图_科学网—主成分分析之R篇 - 林元震的博文
  9. 中国碎石设备市场趋势报告、技术动态创新及市场预测
  10. Flutter 网络请求框架dio使用详解