Emperor

数组

1、皇帝下旨选妃 (增加功能)
2、翻牌宠幸 (修改状态功能)
3、打入冷宫 (删除功能)
4、单独召见爱妃(查找功能)


#include <stdio.h>
#include <stdlib.h>
#include <string.h>//支持字符串操作#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")#define MAX 6
int main()
{//使用字符数组表示字符串int i, j, count = 5,temp;int a;char emperorName[50];   //皇帝的名号int choice ;                //皇帝的选择1—4之间int searchIndex = -1;   //用来存放查找到元素的下标char tempName[20] ;     //用来存放临时字符串变量char names[MAX][20] = {"貂蝉","杨玉环","不知火舞","西施","郭德纲"};//嫔妃的级别数组char levelNames[5][10] = {"贵人","嫔妃","贵妃","皇贵妃","皇后"};//[10]表示最多5个字//levels用来存放每位妃子的级别,每个数组元素对应每个妃子的当前级别int levels[MAX] = {1, 2, 0, 0, 4, -1};//loves数组中每个元素的对应每个妃子的好感度,初始情况,每个人的好感度都为100int loves[MAX] = {100, 100, 100, 100, 100, -99999};printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");printf("请输入当前登基的皇帝名号:");scanf("%s",emperorName);//录入字符串时,不需要&符号for (a = 0; a < 10; a++){   printf("当前为第%d次游戏\n",a + 1);//播放音乐PlaySound(TEXT("sounds\\苍山.wav"),NULL, SND_FILENAME  | SND_ASYNC |SND_LOOP);printf("皇帝%s驾临,有事上奏,无事退朝\n",emperorName);printf("1、皇帝下旨选妃:\t\t(增加功能)\n");printf("2、翻牌宠幸:    \t\t(修改状态功能)\n");printf("3、打入冷宫:    \t\t(删除功能)\n");printf("4、单独召见爱妃   \t\t(查找功能)\n");printf("陛下请选择:");scanf("%d",&choice);switch (choice){case 1:PlaySound(TEXT("sounds\\小城谣.wav"),NULL, SND_FILENAME  | SND_ASYNC |SND_LOOP);//printf("1、皇帝下旨选妃:\t\t(增加功能)\n");//1、增加前需要判断数组有没有空间//2、增加数组元素(names/loves/levels)if (count < MAX)//如果当前的妃子数量小于系统最大值{//执行添加操作printf("请输入娘娘名讳:");scanf("%s",names[count]);//将第count个元素的状态levels[count] = 0;//级别初始状态为0loves[count] = 100;//好感度初始状态为100count++;//添加完元素后,记得增加计数器}else{printf("陛下要注意龙体,后宫已经人满为患了");    }printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");break;case 2:PlaySound(TEXT("sounds\\断肠天涯.wav"),NULL, SND_FILENAME  | SND_ASYNC |SND_LOOP);//printf("2、翻牌宠幸:\t\t(修改状态功能)\n");//1、找到要宠幸的妃子的下表//2、修改这个妃子的状态 好感度+10,级别升1级如果最高级就不再升级//3、修改其他妃子的状态 好感度-10//4、需要解决的BUG:未支持姓名不存在的情况printf("陛下,请选择今晚侍奉的娘娘:");scanf("%s",tempName);//字符串的查找,strcmp,需要引入<string.h>//strcmp(tempName,"abc") == 0-两个字符串相等,1-前一个大于后一个,-1-前一个小于后一个for (i = 0; i < count; i++){if (strcmp(tempName,names[i]) == 0 )//比较字符串是否相等{//记录下要查找的下标searchIndex = i;break;}}if (-1 == searchIndex )//如果searchIndex的值为初值-1,表示没有找到{printf("陛下,没有叫此名字的娘娘\n");}else{for (i = 0; i < count; i++){if (strcmp(tempName,names[i]) == 0)//如果输入的姓名刚好等于数组中的某个名字{loves[i] += 10;//级别要注意,不能超过5级(0-4之间)levels[i] = levels[i] >=4 ? 4:levels[i] + 1;//?简写“:”意思为否则}else{loves[i] -= 10;}}printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");}break;case 3:PlaySound(TEXT("sounds\\花落.wav"),NULL, SND_FILENAME  | SND_ASYNC |SND_LOOP);//printf("3、打入冷宫:\t\t(删除功能)");//1、查找//2、后面一个赋给前面一个元素//3、总数--//4、修改其他妃子的状态,好感度加20printf("陛下,请选择要打入冷宫的娘娘:");scanf("%s",tempName);for (i = 0; i < count; i++){if (strcmp(tempName,names[i]) == 0 )//比较字符串是否相等{//记录下要查找的下标searchIndex = i;break;}}if (-1 == searchIndex )//如果searchIndex的值为初值-1,表示没有找到{printf("虚惊一场,无人被打入冷宫\n");}else{for (i = searchIndex; i < count - 1; i++){//names[i]= names[i + 1];因为是字符数组,C语言中不支持数组的直接赋值//我们需要使用strcpy函数实现数组的赋值,后续课程讲解strcpy(names[i], names[i + 1]);loves[i] = loves[i + 1];levels[i] = levels[i + 1];}count--;printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");}break;case 4:PlaySound(TEXT("sounds\\命定情缘.wav"),NULL, SND_FILENAME  | SND_ASYNC |SND_LOOP);//printf("4、单独召见爱妃\n");//1、查找//2、增加此妃子的好感度即可printf("陛下,请选择要单独召见的娘娘:");scanf("%s",tempName);for (i = 0; i < count; i++){if (strcmp(tempName,names[i]) == 0){searchIndex = i;//记录ibreak;}}if (searchIndex == -1)//没有找到{printf("陛下,没有你要召见的娘娘\n");}else{loves[searchIndex] += 10;printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");}break;default:printf("君无戏言,陛下请再次确认!\n");}printf("********************************************\n");}//最后打印妃子状态前,以级别进行排序,使用冒泡排序for (i = 0; i < count -1; i++){for (j = 0; j < count - i -1; j++){if (levels[j] < levels[j + 1]){//需要交换姓名级别好感度temp = levels[j];levels[j] = levels[j + 1];levels[j + 1] = temp;temp = loves[j];loves[j] = loves[j + 1];loves[j + 1] = temp;//注意字符串的交换strcpy(tempName,names[j]);strcpy(names[j],names[j + 1]);strcpy(names[j + 1],tempName);}}}printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");PlaySound(TEXT("sounds\\断肠天涯.wav"),NULL, SND_FILENAME  | SND_ASYNC |SND_LOOP);printf("游戏结束\n");return 0;
}

MyFirstDemo_(项目示例)皇帝Emperor相关推荐

  1. Spring MVC 搭建web项目示例

    转载自:Bird鸟人 的博文<Spring MVC 搭建web项目示例> https://blog.csdn.net/wcc27857285/article/details/8174903 ...

  2. vue项目示例代码git_您应该了解的5个Git命令以及代码示例

    vue项目示例代码git I've used Git for some years now, and I still find myself googling how to do some basic ...

  3. element 项目 示例_Java ArrayDeque element()方法与示例

    element 项目 示例 ArrayDeque类element()方法 (ArrayDeque Class element() method) element() Method is availab ...

  4. jnlp文件服务器数据提取,jnlp 项目示例

    jnlp项目示例 1-创建一个可执行jar 2-为jar添加签名 3-编写 jnlp 文件 4-发布前三步的文件到服务器 5-测试执行 问题 浏览器输入Url只下载不执行 & 双击.jnlp ...

  5. 基于qiankun搭建ng-alain15微前端项目示例实践

    基础环境 实践日期:2023-03-04 ng versionAngular CLI: 15.2.1 Node: 18.14.2 Package Manager: npm 9.5.0 OS: win3 ...

  6. Vue入门之Web端CURD前端项目示例

    Vue入门之Web端CURD前端项目示例 随着vue.js越来越火,很多不太懂前端的小伙伴想要入坑.而入坑最好的办法就是上手实际操作,因此本文将重点放在实际操作上,对理论不做过多解释,不明白的地方小伙 ...

  7. yh-app(基于vue和uni-app的前端项目示例)

    yh-app 简介 yh-app是一个高度模仿手机端樱花动漫的前端项目,旨在提供一个通俗易懂.简洁明了的前端项目示例,帮助开发者熟悉例如vue.css以及uni这类比较常见的技术在实际项目开发中的使用 ...

  8. asp.net core系列 59 Ocelot 构建基础项目示例

    一.入门概述 从这篇开始探讨Ocelot,Ocelot是一个.NET API网关,仅适用于.NET Core,用于.NET面向微服务/服务的架构中.当客户端(web站点.ios. app 等)访问we ...

  9. NANUI能否运行在linux,Nanui 项目示例

    最近接到一个项目 是关于构建一套 电脑端会员管理系统    但考虑到个人比较喜欢写Web    便首选Nanui构建项目. 中间遇到一些坑  但都已解决 ,便提供给大家参考.希望能帮助到大家-_- 项 ...

最新文章

  1. 分享Css3设计---纯Css实现超酷的iphone玻璃气泡效果
  2. 腾讯新预训练模型LP-BERT
  3. 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果
  4. 使用Idea从github上获取项目
  5. 项目使用encode_Spring Cloud Security:Oauth2使用入门
  6. Pipenv管理Python虚拟环境
  7. 机器学习基础—Kaggle泰坦尼克预测(完整分析)
  8. 音视频开发(33)----麦克风阵列入门(一)
  9. Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
  10. Linux基础命令1
  11. visio作图的一系列坑
  12. HGHAC已保留的连接位置为执行非复制请求的超级用户预留
  13. [渝粤教育] 江西财经大学 中国会计准则(全英文) 参考 资料
  14. Android APP升级时解析程序包时出现问题
  15. 大内密探HMM(转)
  16. android移除fragment,Fragment 的创建、替换与移除
  17. 交通违章查询接口代码示例
  18. 【TCP专题】TCP连接建立
  19. # [解构如何运用的解构--报错 throw new TypeError(‘Router.use() requires a middleware function but got a ‘ + gett
  20. 迷宫求解【穷举求解法】

热门文章

  1. 前后端分离后台管理项目(springboot+mybatis+vue)
  2. python爬虫 之 完整代码
  3. python 数组字典定义_使用python数组字典
  4. Windows CE在嵌入式工业中的应用思考
  5. input获取焦点 原生js_原生js的input事件
  6. 疫情一代普通大学生的四年感悟,四年大学带给了我什么
  7. Java三大框架 介绍
  8. vue环境搭建与项目配置
  9. pythonpath_环境变量:PYTHONPATH
  10. Unity 基础 之 实现枚举(enum/Enum)遍历的三种简单方法(foreach/for)