#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#include <string.h>
#pragma comment(lib, "winmm.lib")
#define max 6;
void play() {
PlaySound(TEXT("E:\\C++andC\\program1\\Debug\\music\\begin1.mav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP); }
int main()
{
char emperorname[];//皇帝名号
char lover_name[];//定义宠幸的名称
int lover_name_num=-;//定义宠幸的编号
int choice,i;//定义选择
int temp;//定义临时值,来判断妃子是否存在
int num = ;
char names[][] = { "貂蝉","妲己","西施","阎玉环","不知火舞" };
char level[][] = { "贵人","妃子","贵妃","皇贵妃","皇后" };
int level_number[] = { ,,,,};
int lover[] = { ,,,, };
printf("*********************************************\n");
printf("公元101011年,朝代胡。\n");
printf("请输入登基皇帝名号:");
scanf("%s", emperorname);
printf("恭迎皇上[%s]上朝,有事请奏,无事退朝!\n",emperorname);
while ()
{
printf("************************主菜单******************\n");
printf("1.皇帝选妃子\t\t(增加功能)\n");
printf("2.皇帝翻牌\t\t(修改功能)\n");
printf("3.打入冷宫\t\t(删除功能)\n");
printf("4.皇帝后宫名单\n");
printf("0.退出\n");
printf("陛下请选择:");
scanf("%d", &choice);
switch (choice) {
case ://增加功能,首先,判断后宫是否已满,再增加妃子名字,再增加妃子等级,再增加妃子好感度 if (num >= ) {
printf("皇上您后宫满了,住不下了!\n");
}
else {
printf("恭喜皇帝娶亲,请输入妃子名字:");
scanf("%s", names[num]);
getchar();
level_number[num] = ;
lover[num] = ;
printf("娶亲成功><!\n");
num++;
}
break;
case ://修改功能
printf("万岁,请选择您今晚宠幸的妃子:");
scanf("%s", lover_name);
temp = ;
for (i = ; i <= num - ; i++) {
if (strcmp(lover_name, names[i]) != ) {
temp++;
}
}
if(temp < num) {
for (i = ; i <= num - ; i++) { if (strcmp(lover_name, names[i]) == ) {//不可以用==比较,这样会直接比较字符串的地址,会有错
printf("%s已准备好了", names[i]);
lover_name_num = i;
level_number[lover_name_num] = level_number[lover_name_num] >= ? : level_number[lover_name_num] + ;
lover[lover_name_num] += ;
}
else {
lover[i] -= ; }
}
} if (temp>= num) {
printf("您的后宫中没有此人!"); }
else {
printf("temp=%d", temp);
printf("宠幸的编号为:%d\n", lover_name_num);
printf("*********************************************\n");
printf("------------------后宫名单-------------------\n");
printf("名字\t\t等级\t\t好感度\n");
for (i = ; i < num; i++) { printf("%-12s %s\t\t%d\n", names[i], level[level_number[i]], lover[i]);
}
printf("*********************************************\n");
}
break;
case ://删除功能
printf("请输入您想打入冷宫的妃子名称:");
scanf("%s", lover_name);
for (i = ; i <= num - ; i++) {
if (strcmp(lover_name, names[i]) == )
{
printf("%s已收拾好行李,准备打入冷宫", names[i]);
lover_name_num = i;
}
}
if (lover_name_num==-) {
printf("%s没有此人,无人打入冷宫",&lover_name);
}
else
{
for (i = lover_name_num; i <= num - ; i++) {
strcpy(names[i], names[i + ]);
level_number[i]=level_number[i + ];
lover[i] = lover[i + ];
}
num--;
} break;
case ://
printf("*********************************************\n");
printf("------------------后宫名单-------------------\n");
printf("名字\t\t等级\t\t好感度\n");
for (i = ; i < num; i++) { printf("%-12s %s\t\t%d\n", names[i], level[level_number[i]], lover[i]);
}
printf("*********************************************\n");
break;
case :
exit();
break;
}
} return ;
}

看了老九的视频,看了他的关于数组的小案例,按他的想法自己敲了一次,没有引入背景音乐,因为发现老是引入不成功,不知道是我的音乐文件问题还是地址问题,反正背景音乐有没有都一样,通过这个小案例明白了一些C语言关于数组的增加,删除与修改,查看操作。

我写的小案例发现修改的确修改成功了,增加的发现很不灵活,要事先定义数组长度,应该可以添加动态数组的操作,比较灵活,如果运用动态数组的话,那么表应该都是空的,没有初始值,现在我还不知道有初始值的动态线性表怎么写。

删除我觉得其实就是弄了障眼法而已,没有正真意义上的删除,只是让他不显示而已,后期看看能不能运用指针彻底删除内存。

指针正在学,发现C语言关于指针的操作应该是比较难的地方,至少对于我来说,可能笔者比较笨吧……哈哈哈哈哈

关于C语言数组的小练习--笔记的更多相关文章

  1. C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

    1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...

  2. C语言数组

    在C语言中,对于三维或三维以上数组的使用并没有很好的支持,而且使用率也非常的低,后面会对三维数组做一些简单的分析,这篇文章主要以二维数组来探讨一些C语言中数组使用的相关概念和技巧. 1 一个var[i ...

  3. Go语言数组和切片的原理

    目录 数组 创建 访问和赋值 切片 结构 初始化 访问 追加 拷贝 总结 数组和切片是 Go 语言中常见的数据结构,很多刚刚使用 Go 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...

  4. C语言-数组篇

    C语言数组 一.数组的概念 用来存储一组数据的构造数据类型 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素. 二.数组的定义 格式: 类型 数组名[元素个数] ...

  5. C语言数组寻址

    C语言数组 数组的定义 数组是用来存放数据类型相同且逻辑意义相同的数据 数组的大小 数组的大小不能是变量,必须是常量或者常量表达式,常量表达式由编译器编译时自动求值. 也可以不指定数组大小,但必须对数 ...

  6. 基于php基础语言编写的小程序之计算器

    基于php基础语言编写的小程序之计算器 需求:在输入框中输入数字进行加.减.乘.除运算(html+php) 思路: 1首先要创建输入数字和运算符的输入框,数字用input的text属性,运算符用sel ...

  7. 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介

    [源码下载] 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介 作者:webabcd 介绍不可或缺 Windows Native 之 ...

  8. GO语言数组和切片实例详解

    本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...

  9. C语言 数组 列优先 实现

    C语言数组结构列优先顺序存储的实现 (GCC编译). 从行优先转换为列优先存储方式, 与行优先相比, 不同之处在于改变了数组维界基址的先后顺序, 从而改变了映像函数常量基址. /** * @brief ...

随机推荐

  1. SpringBoot 总结篇

            时至今日,SpringBoot 系列文章也算是告一段落,回想起当初立flag的情景,仿佛还历历在目.用一个月时间学完 SpringBoot 并整理成文章?又定一些异想天开计划,当时这样 ...

  2. 03_input type="number" 输入允许小数点后两位

    <input type="number" min="0" max="100" step="0.01"/> & ...

  3. 日志冲突解决方案(基于gradle)

    日志冲突解决方案 前提:我使用gradle管理项目 最近在项目中需要用curator客户端操作zookeeper,在maven仓库拉取的jar包导致日志冲突,会报以下的错误: 经常会有如上图2处红色框 ...

  4. 解决apt-get命令出现的安装源错误

    首先linux环境下打开网页,输入上网账号密码,确保已经联网 直接安装软件或库的时候,在管理员模式下,在终端输入:apt-get install A可以自动安装A 有时会出现下面的安装源错误 这是因为 ...

  5. Collections 工具类

    针对 List 集合的方法 排序 sort 如果集合元素为基本数据类型,采用快排:对于集合元素为引用类型,采用归并排序. //对指定 List 集合的元素按照自然排序 void sort(List&l ...

  6. Linux查看端口监听占用

    # 查看所有 netstat -ntlp # 过滤PORT8080 netstat -ntlp | grep 8080 -t # 仅显示tcp相关选项 -u # 仅显示udp相关选项 -n # 拒绝显 ...

  7. ReactNative: 将自定义的ReactNative组件制作成第三方库的详细流程(制作-->发布)

    一.简介 在讲本篇博文之前,需要你熟知怎么自定义ReactNative组件,然后才好学习将自定义的ReactNative组件制作成第三方库.本文中的自定义的ReactNative组件LoginMana ...

  8. 计算机基础——常用的Dos命令

    d:——切换指定硬盘分区 cd——切换目录,例如:cd D:\下载(使用此命令之前先使用 d: 命令) netstat -ano——查看所有端口号 netstat -a——查看开启了哪些端口 nets ...

  9. RabbitMQ入门(二)工作队列

      在文章RabbitMQ入门(一)之Hello World,我们编写程序通过指定的队列来发送和接受消息.在本文中,我们将会创建工作队列(Work Queue),通过多个workers来分配耗时任务. ...

  10. urllib基本用法(了解)

    一.urllib.urlopen 1.urlopen from urllib import request r = request.urlopen('http://www.baidu.com/') # ...