#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. 「UVA1185」Big Number 解题报告

    UVA1185 Big Number In many applications very large integers numbers are required. Some of these appl ...

  2. Java工作流系统-父子流程的配置讲解

    父子流程 关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单  拖拽式表单 工作流系统 适配数据库: oralce,mysql ...

  3. 调试排错 - Java问题排查:Linux命令

    本文原创,更多内容可以参考: Java 全栈知识体系.如需转载请说明原处. Java 在线问题排查主要分两篇:本文是第一篇,通过linux常用命令排查.@pdai 文本操作 文本查找 - grep g ...

  4. 小小知识点(四十九)——SCMA

    SCMA的实现基于两步: 1.实现码本资源到物理频域资源映射的映射矩阵(matrix mapping): 2.实现二进制比特流到码本映射的复数域星座图(complex domain constella ...

  5. # "可插拔式"组件设计,领略组件开发的奥秘

    从一个 Confirm 组件开始,一步步写一个可插拔式的组件. 处理一个正常的支付流程(比如支付宝购买基金) 点击购买按钮 如果风险等级不匹配则:弹确认框(Confirm) 用户确认风险后:弹出支付方 ...

  6. 一起来立Flag吧!超炫的数据图表分析 2020 年 Java 技术趋势

    引言 2020 来了,第一批 00 后已经 20 岁了,95 后也到了晚婚的年龄,员外的头发也越来越少了,新的一年大家有立下了哪些 Flag ?小伙伴们别急着立 Flag,让员外帮你分析一下哪些技术正 ...

  7. 关于javaweb开发的环境搭建(一)Tomcat

    进行Tomcat的下载及环境配置 1.下载地址   http://tomcat.apache.org/ 2.下载的注意事项   下载的Tomcat版本要与自身电脑安装的java版本相匹配,下载时,点击 ...

  8. 【转】Java 正则表达式详解

    正则表达式30分钟入门教程 常用正则表达式 如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单. 如果你不熟悉这个术语,那么“正则表达式”(R ...

  9. STM32动态内存分配需要注意的地方

    STM32进行动态内存分配是需要注意动态内存分配大小不要超过.S文件中设置Heap Size大小 如图所示: 0x4000 :可以分配得最大字节是16384bytes 这个地方malloc的大小超过了 ...

  10. DateTime.Now

    // 2008年4月24日 System.DateTime.Now.ToString( " D " );// 2008-4-24 System.DateTime.Now.ToStr ...