【C语言】我解决了输入中文判断中文的问题!一个简单的扑克牌管理查询系统(CodeBlocks)

本文介绍了一个使用C语言编写的扑克牌管理查询系统,通过CodeBlocks实现。文章详细讲述了如何处理中文输入,利用strcmp函数进行字符串比较,以及系统各个功能的实现,包括读取文件、按颜色和花型分类、查找扑克牌位置和升序排列等。
摘要由CSDN通过智能技术生成

【C语言】我解决了输入中文判断中文的问题!一个简单的扑克牌管理查询系统(CodeBlocks)

PS:编程环境为Codeblocks

前言

老师又双叒叕不做人了!这次直接上升了一个小难度!
扑克牌的查找输入输出全要中文
历经千辛万苦,问老师、找大佬博客之后,我找到了一个神奇的函数——strcmp
strcmp可以对比字符串的大小,利用这个函数就可以做出比对中文字符串的操作。
比如:

if(strcmp("针不戳", "真不错") == 0)        /*比较字符串是否相等*/
        {
            printf("住在山里针不戳\n",WDNMD);
        }

不过要想使用strcmp,必须添加头文件:

#include <string.h>

只是举个小小的例子(),以下为正文


提示:程序仅供参考,如有错误欢迎指正

一、数据文件 “扑克牌.txt” 的处理

将扑克牌上的数据分为四个模块,分别为全称(allname)、颜色(color)、等级(lv)(黑桃>红桃>梅花>方块)、数字(num),方便电脑处理。

例如:红桃8
| 全称 | 颜色 | 等级 | 数字 |
| 红桃8| 红色 |  3   |   8  |

二、程序的编写

1.主程序菜单

在编写主程序菜单的时候想玩点花的,于是做了一个让用户二次运行程序时提示菜单简化的系统,虽然还没有办法直接在提示阶段直接读取用户输入的数字,但是也是有点进步:
PS:界面更花了,有点不容易看:(

/*问题:扑克牌信息存储和操作,具体如下:

(1)定义结构体,存储扑克牌的:颜色,花型,大小

(2)文件读取存储一副扑克牌

(3)输出显示扑克牌信息

(4)按颜色分类输出扑克牌信息

(5)按花型分类输出扑克牌信息

(6)输入一扑克牌(如:黑桃5),查找输出其所在下标位置。

(7)输入一下标位置,查找输出其对应的扑克牌信息。

(8)对扑克牌进行升序排列并输出,排序规则:黑桃>红桃>梅花>方块,同一花色内,按大小升序排列。

(9)设计主程序菜单,完成上述各算法的测试调用*/



/* ※@rain_HYS※ 编写,仅供参考学习交流还有交作业使用 */


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 54

struct poker    /*定义结构体存储成绩*/
{
   
    char allname[N];       /*扑克牌全称*/
    char color[N];         /*扑克牌花色*/
    int lv;                /*扑克牌等级(黑桃>红桃>梅花>方块)*/
    int num;               /*扑克牌数字*/
} pk[N];

void SavePoker();
void ColorPoker();
void FlowerPoker();
void FindPlacePoker();
void SearchPoker();
void LevelPoker();

int main(void)
{
   
    int allnum;                   /*主程序读取用户输入数字*/
    char allword;
    int rain = 1;
    printf("\n-------        BUA ※ 扑克牌信息查询系统 ※ rain_hys开发          -------\n"
           "\n-------                 该程序目前具有以下功能:                  -------\n"
           "\n-------          (1)文件读取存储一副扑克牌,并显示              -------\n"
           "\n-------             (2)按颜色分类输出扑克牌信息                 -------\n"
           "\n-------             (3)按花型分类输出扑克牌信息                 -------\n"
           "\n------- (4)输入一扑克牌(如:黑桃5),查找输出其所在下标位置    -------\n"
           "\n-------       (5)输入一行数,查找输出其对应的扑克牌信息         -------\n"
           "\n-------             (6)对扑克牌进行升序排列并输出               -------\n"                 /*程序菜单,后期可改*/
           "\n*******        PS:该程序所有需要输入的字母均不区分大小写         *******\n"
           "\n请输入想要运行的程序的数字编号:\n");
    scanf("%d",&allnum);
    switch(allnum)
    {
   
    case 1:
        SavePoker();            /*文件读取存储一副扑克牌,并显示*/
        break;
    case 2:
        ColorPoker();           /*按颜色分类输出扑克牌信息*/
        break;
    case 3:
        FlowerPoker();          /*按花型分类输出扑克牌信息*/
        break;
    case 4:
        FindPlacePoker();       /*输入扑克牌查找输出其所在下标位置*/
        break;
    case 5:
        SearchPoker();          /*输入行数查找输出其对应的扑克牌信息*/
        break;
    case 6:
        LevelPoker();           /*对扑克牌进行升序排列并输出*/
        break;
    case 813:
        printf("不会吧不会吧\n"
               "不会有人真的连扑克牌有啥都记不清吧\n");       /*彩蛋——egg*/
        break;
    default:
        printf("输入错误字符,请重新运行程序!\n");
        break;
    }

    do
    {
   
        printf("\n*******               程序已经结束或者可能遇到错误咯!                  *******\n"
               "*******          随意输入一个除N以外的字符来重新运行程序吧?            *******\n"
               "*******如果忘记了哪个数字对应哪个功能,可以输入S来查询程序都有哪些功能哦*******\n"
               "*******                   或者输入N来退出这个程序                       *******\n"
               "*******        再次提示:该程序所有需要输入的字母均不区分大小写         *******\n");                     /*用户交互,减少用户输入难度*/
        scanf("%s",&allword);
        if(allword != 'N' || allword != 'n')                            /*用户自由选择是否展示系统界面*/
        {
   
            if(allword == 's' || a
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值