#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[30];//皇帝名号 char lover_name[30];//定义宠幸的名称 int lover_name_num=-1;//定义宠幸的编号 int choice,i;//定义选择 int temp;//定义临时值,来判断妃子是否存在 int num = 5; char names[6][10] = { "貂蝉","妲己","西施","阎玉环","不知火舞" }; char level[6][10] = { "贵人","妃子","贵妃","皇贵妃","皇后" }; int level_number[6] = { 1,1,0,0,0}; int lover[6] = { 100,100,100,100,100 }; printf("*********************************************\n"); printf("公元101011年,朝代胡。\n"); printf("请输入登基皇帝名号:"); scanf("%s", emperorname); printf("恭迎皇上[%s]上朝,有事请奏,无事退朝!\n",emperorname); while (1) { 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 1://增加功能,首先,判断后宫是否已满,再增加妃子名字,再增加妃子等级,再增加妃子好感度 if (num >= 6) { printf("皇上您后宫满了,住不下了!\n"); } else { printf("恭喜皇帝娶亲,请输入妃子名字:"); scanf("%s", names[num]); getchar(); level_number[num] = 0; lover[num] = 100; printf("娶亲成功><!\n"); num++; } break; case 2://修改功能 printf("万岁,请选择您今晚宠幸的妃子:"); scanf("%s", lover_name); temp = 0; for (i = 0; i <= num - 1; i++) { if (strcmp(lover_name, names[i]) != 0) { temp++; } } if(temp < num) { for (i = 0; i <= num - 1; i++) { if (strcmp(lover_name, names[i]) == 0) {//不可以用==比较,这样会直接比较字符串的地址,会有错 printf("%s已准备好了", names[i]); lover_name_num = i; level_number[lover_name_num] = level_number[lover_name_num] >= 4 ? 4 : level_number[lover_name_num] + 1; lover[lover_name_num] += 10; } else { lover[i] -= 10; } } } 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 = 0; i < num; i++) { printf("%-12s %s\t\t%d\n", names[i], level[level_number[i]], lover[i]); } printf("*********************************************\n"); } break; case 3://删除功能 printf("请输入您想打入冷宫的妃子名称:"); scanf("%s", lover_name); for (i = 0; i <= num - 1; i++) { if (strcmp(lover_name, names[i]) == 0) { printf("%s已收拾好行李,准备打入冷宫", names[i]); lover_name_num = i; } } if (lover_name_num==-1) { printf("%s没有此人,无人打入冷宫",&lover_name); } else { for (i = lover_name_num; i <= num - 1; i++) { strcpy(names[i], names[i + 1]); level_number[i]=level_number[i + 1]; lover[i] = lover[i + 1]; } num--; } break; case 4:// printf("*********************************************\n"); printf("------------------后宫名单-------------------\n"); printf("名字\t\t等级\t\t好感度\n"); for (i = 0; i < num; i++) { printf("%-12s %s\t\t%d\n", names[i], level[level_number[i]], lover[i]); } printf("*********************************************\n"); break; case 0: exit(0); break; } } return 0; }
看了老九的视频,看了他的关于数组的小案例,按他的想法自己敲了一次,没有引入背景音乐,因为发现老是引入不成功,不知道是我的音乐文件问题还是地址问题,反正背景音乐有没有都一样,通过这个小案例明白了一些C语言关于数组的增加,删除与修改,查看操作。
我写的小案例发现修改的确修改成功了,增加的发现很不灵活,要事先定义数组长度,应该可以添加动态数组的操作,比较灵活,如果运用动态数组的话,那么表应该都是空的,没有初始值,现在我还不知道有初始值的动态线性表怎么写。
删除我觉得其实就是弄了障眼法而已,没有正真意义上的删除,只是让他不显示而已,后期看看能不能运用指针彻底删除内存。
指针正在学,发现C语言关于指针的操作应该是比较难的地方,至少对于我来说,可能笔者比较笨吧……哈哈哈哈哈
原文:https://www.cnblogs.com/hmy-666/p/11930583.html