关于C语言数组的小练习--笔记
#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语言数组的小练习--笔记的更多相关文章
- C语言数组:C语言数组定义、二维数组、动态数组、字符串数组
1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...
- C语言数组
在C语言中,对于三维或三维以上数组的使用并没有很好的支持,而且使用率也非常的低,后面会对三维数组做一些简单的分析,这篇文章主要以二维数组来探讨一些C语言中数组使用的相关概念和技巧. 1 一个var[i ...
- Go语言数组和切片的原理
目录 数组 创建 访问和赋值 切片 结构 初始化 访问 追加 拷贝 总结 数组和切片是 Go 语言中常见的数据结构,很多刚刚使用 Go 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...
- C语言-数组篇
C语言数组 一.数组的概念 用来存储一组数据的构造数据类型 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素. 二.数组的定义 格式: 类型 数组名[元素个数] ...
- C语言数组寻址
C语言数组 数组的定义 数组是用来存放数据类型相同且逻辑意义相同的数据 数组的大小 数组的大小不能是变量,必须是常量或者常量表达式,常量表达式由编译器编译时自动求值. 也可以不指定数组大小,但必须对数 ...
- 基于php基础语言编写的小程序之计算器
基于php基础语言编写的小程序之计算器 需求:在输入框中输入数字进行加.减.乘.除运算(html+php) 思路: 1首先要创建输入数字和运算符的输入框,数字用input的text属性,运算符用sel ...
- 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介
[源码下载] 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介 作者:webabcd 介绍不可或缺 Windows Native 之 ...
- GO语言数组和切片实例详解
本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...
- C语言 数组 列优先 实现
C语言数组结构列优先顺序存储的实现 (GCC编译). 从行优先转换为列优先存储方式, 与行优先相比, 不同之处在于改变了数组维界基址的先后顺序, 从而改变了映像函数常量基址. /** * @brief ...
随机推荐
- 「CH2601」 电路维修 解题报告
CH2601 电路维修 描述 Ha'nyu是来自异世界的魔女,她在漫无目的地四处漂流的时候,遇到了善良的少女Rika,从而被收留在地球上.Rika的家里有一辆飞行车.有一天飞行车的电路板突然出现了故障 ...
- git命令的基本使用流程
git命令的基本使用流程 前提:已经基本熟悉git的常用命令 1.提交项目 首先,在对项目进行完善后,如果想要将项目更新到github或是阿里code上去,先要使用 git add -A 这一命令的作 ...
- SpringCloud入门系列0-Nacos的安装与配置
背景 工作有一些年头了,自从19年初彻底转了java(这又是另一篇心酸的故事),突然感觉自己荒废了好几年(不是说.net不好,而是回顾自己这几年做的很多东西都浮于表面,有时候弄成很忙的样子,回头看看自 ...
- mybatis两种方式
// 1.传统的使用 statementId方式 //获取详情 sysApiDocumentMode = template.selectOne("oaApiDocument.getProje ...
- bash的默认组合键
组合键 组合按键 执行结果 Ctrl+C 终止目前的命令 Ctrl+D 输入结束(EOF),例如邮件结束的时候 Ctrl+M 就是Enter啦! Ctrl+S 暂停屏幕输出 Ctrl+Q 恢复屏幕输出 ...
- 【Java基础总结】IO流
字节流 1. InputStream 字节输入流 代码演示 InputStream in = System.in; System.out.println("int read(byte b) ...
- 【转】Java实现折半查找(二分查找)的递归和非递归算法
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wintys.blog.51cto.com/425414/94051 Java二分 ...
- 【转】推荐给初级Java程序员的3本进阶书
ImportNew 注: 原作者在这篇文章中介绍3本不错的技术书籍.作者认为这些书籍对新手或者学生而言尤其有帮助.通过一些基础性的教程入门后,我们可以使用Java做基础性的编程.然而,当我们需要从初级 ...
- 恕我直言,牛逼哄哄的MongoDB你可能只会30%
MongoDB闪亮登场 自我介绍 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ...
- APICloud开发者进阶之路 |iOS修改entitlements文件
本文出自APICloud官方论坛, 感谢论坛版主 技术咨询-Kenny 的分享. 一.概述iOS原生开发中若要实现某些特殊功能,如使用HealthKit.实现Universal Links等.需要 ...