关于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 ...
随机推荐
- JS进阶——this绑定了谁?
一.this的意义 二.寻找this绑定对象 经常听到这么一句话,找this只需要看谁是调用方.当函数被调用时会记录函数调用调用方式.传参包括this等各种属性.有时候this绑定对象情况太抽象,找到 ...
- 【C++】几个简单课本例题
// // main.cpp // 2_1 // // Created by T.P on 2018/2/28. // Copyright © 2018年 T.P. All rights reserv ...
- JSONP Hijackin攻击详解
JSONP Hijackin的中文意思是JSON劫持,而能产生JSON数据劫持的原因在于前端被跨站攻击了.跨站=跨域,跨域从字面上理解的话,就是指超出了范围.领域.继续追问一下,那超出了什么范围?原来 ...
- 「Vijos 1285」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法药水
佳佳的魔法药水 背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水--怎么样才能得到0号药水呢?你要知道佳佳的家境也 ...
- list的基本方法
数据类型列表 列表的创建 使用[ ]创建列表,元素之间使用逗号隔开, list()创建列表 列表添加新的元素 list.append() 在list末尾增加一个元素 list.insert(n, &q ...
- C# 根据链接提取div内容
安装NuGet包 HtmlAgilityPack var wc = new WebClient(); wc.Encoding = Encoding.GetEncoding("UTF-8 ...
- bootstrapValidator JS修改内容无法验证
需求: form表单输入中有坐标,坐标可以输入也可以从地图中获取,验证插件使用的是 bootstrapValidator 问题: 当输入错误的值时会触发验证,有错误提示.当在地图上选择坐标,通过js修 ...
- wepy怎么在生命周期中调用methods方法
很简单: 比如在 onLoad () { imgRemove(e) { this.methods.onRemove(e) } } 在methods中就可以直接调用属于它的方法, ...
- Ambari下安装oozieUI界面无法访问问题
前言: 其他集群管理工具安装oozie和手动编译安装oozie,关于oozie的UI界面无法访问的问题,大致和该方法类似. 找到下面4步骤里的视图显示的目录,有一个ext-2.2软链指向的路径 lrw ...
- Java 设置Word页边距、页面大小、页面方向、页面边框
本文将通过Java示例介绍如何设置Word页边距(包括上.下.左.右).页面大小(可设置Letter/A3/A4/A5/A6/B4/B5/B6/Envelop DL/Half Letter/Lette ...