当前位置: 代码迷 >> 综合 >> 后宫选妃
  详细解决方案

后宫选妃

热度:2   发布时间:2024-01-31 02:52:21.0

#include <stdio.h>
#include <stdlib.h>
#define MAX 6//系统要求的最大妃子的数量
#include <string.h>
int main()
{
//皇帝选妃系统
char wifesnames[MAX][20] = {"貂蝉","杨玉环","西施","王昭君","如花"};//目前宫中的几个妃子,做多只能有6个妃子
char levelsnames[MAX][20] = {"贵人","嫔妃","贵妃","皇贵妃","皇后"};//宫中妃子的等级
int level[MAX] = {0,1,2,3,4};//每个等级对应的下标
int loves[MAX] = {100,100,100,100,100};//初始的好感度
int count = 5;//目前为打入冷宫妃子的总数
int i;//循环变量
int choice;
char names[20];//临时的名字数组
int deleteIndex = -1;
printf("在遥远的朝代,有一个昏庸无道的皇帝,每日不理朝政,贪图享乐,就有了接下来的故事:\n");
printf("**************************************************************\n");
printf("将妃子列成表:\n");
printf("姓名\t等级\t好感度\n");
for(i = 0;i < count;i++)
{
printf("%s\t%s\t%d\n",wifesnames[i],levelsnames[level[i]],loves[i]);
}
printf("**************************************************************\n");

    printf("请陛下选择:\n");
scanf("%d",&choice);
switch(choice)
{
case 1://选妃
//思路:增加一个妃子,好感度和等级初始化,但是其余的妃子好感度下降。妃子总数++注:妃子的总数不能超过MAX
if(count < MAX)
{
printf("请输入妃子的姓名:\n");
scanf("%s",names);//字符串赋值时候不需要&
strcpy(wifesnames[count],names);//涉及到数组中字符串的赋值使用strcpy
level[count] = 0;//初始化等级
loves[count] = 100;//初始化好感度
}
else
{
printf("大王身体重要啊,不能老吃药!\n");
}
for(i = 0;i < count;i++)
{
loves[i] -=10;//所有妃子好感度降低10
}
count++;//新增加了妃子数组长度++
break;
case 2://翻牌宠幸
//思路:查找妃子,找到后妃子等级和好感度上升,其他妃子好感度下降。
printf("请输入你要宠幸妃子的名字:\n");
scanf("%s",names);
for(i = 0;i < count;i++)
{
//判断妃子是否在后宫中使用strcmp
if(strcmp(wifesnames[i],names) == 0)
{
loves[i] += 10;
//判断好感度是否超过范围0-4,使用三木运算符
level[i] = level[i] >=4 ? 4 : level[i] + 1;
}
else
{
loves[i] -=10;//所有妃子好感度降低10
}
}
break;
case 3://打入冷宫
//思路:查找,删除
printf("请输入要删除的妃子姓名:\n");
scanf("%s",names);
for(i = 0;i < count;i++)
{
if(strcmp(wifesnames[i],names) == 0)
{
deleteIndex = i;
break;
}
}
if(-1 == deleteIndex)
{
printf("今晚嗨起来!");
}
else
{
for(i = deleteIndex;i < count - 1;i++)
{
strcpy(wifesnames[i],wifesnames[i + 1]);
loves[i] += 10;
}
count--;
}
break;
default:
printf("陛下请您重新确认!\n");
}
printf("**************************************************************\n");
printf("将妃子列成表:\n");
printf("%-12s\t等级\t好感度\n","姓名");
for(i = 0;i < count;i++)
{
printf("%-12s\t%s\t%d\n",wifesnames[i],levelsnames[level[i]],loves[i]);
}
printf("**************************************************************\n");
return 0;
}

理了一遍逻辑,还有些生疏,每天理一理敲一遍。

  相关解决方案