#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. Kubernetes资源与对象简述

    资料 k8s基本对象概念 背景 资源和对象   Kubernetes 中的所有内容都被抽象为"资源",如 Pod.Service.Node 等都是资源."对象" ...

  2. js判断各种类型

    js的六种基本类型:Object,Boolean,Number,String,Undefined,Null; Object中又有:Function,Array,Date... 如何判断数据类型? Ob ...

  3. Sql Server学习笔记

    1.指定路径创建数据库 create database student on--创建库的时候必须写 ( name=student, filename='E:\database\student.mdf' ...

  4. SpringBoot 2.x 开发案例之 Shiro 整合 Redis

    前言 前段时间做了一个图床的小项目,安全框架使用的是Shiro.为了使用户7x24小时访问,决定把项目由单机升级为集群部署架构.但是安全框架shiro只有单机存储的SessionDao,尽管Shrio ...

  5. CF825G Tree Queries

    [题意] 一棵树有 n个节点,初始均为白色,有两种操作: 1. 1 x 代表把结点 x 设置为黑色 2. 2 x 代表查询 x 到树上任意一个黑色结点的简单路径上的编号最小的结点的编号 输入 t 和 ...

  6. php部署后错误排查流程

    未使用框架的php程序不可用时,没有框架提供的调试信息,因此要按照请求的整个生命周期来调试程序, 具体错误依次排查网络,服务器,环境,代码的步骤层层深入,最终定位到错误的发生点. 1 访问程序部署的服 ...

  7. 分享一款基于aui框架的图文发布界面

    本文出自APICloud官方论坛, 感谢论坛版主 川哥哥 的分享. 分享一款基于aui框架的图文发布界面,可以添加多张图可以删除,类似qq空间发布说说,没做服务器后端,只演示前端操作.需要用到UIMe ...

  8. Python工具类(二)—— 操作时间相关

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ __title__ = '操作时间的工具类' "" ...

  9. Oracle RAC服务器重启故障排查

    Oracle Real Application Clusters(Oracle RAC),相对于Oracle单实例来说部署安装和维护都增加了难度,尤其在日常的维护和故障处理过程中,各种日志的查看更加重 ...

  10. Scrapy解析器xpath

    一.使用xpath 不在scrapy框架中通过response from scrapy.http import HtmlResponse HtmlResponse->TextResponse-& ...