二维数组、字符串、循环的处理

小游戏:
1、字符串的比较

	#include <string.h>
		if(strcmp(char1,char2) == 0)//两个字符串相等
		strcpy(char1,char2) ;//char2赋值给char1两字符串交换

2、二维数组的循环输出

#include <stdio.h>
int main()
{
    int arr[5][2] = {{1,2},{3,4},{5,6},{7,8},{9,10}};
    int i,j;    //
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 2; j++)
        {
            printf("arr[%d][%d]:%d\n",i,j,arr[i][j]);
        }
    }
    return 0;
}

3、二维数位的删除与增加

#include <stdio.h>
#include <stdlib.h>
#include <string.h>//支持字符串操作
#include <unistd.h>
#define MAX 6//系统要求的最大贵妃数
int main()
{
	int ii;//终止while(1)
	int i;//定义循环变量
	int chose;
	int temptree;
	int tempDlete;
	int day = 0;
	int tempcount1 = 0;
	int tempcount2 = 0;
	int tempcount3 = 0;//判断好感度小于60的妃子数
	int count = 5;//定义妃子的个数
	int searchIndex = -1;//用来存放查找到元素的下表
//定义贵妃二维数组
	char tempName[20];//用来存放临时字符串数组
	char tempName1[20];//用来存放打入冷宫的娘娘名字
	char tempName2[20];//小树林娘娘的姓名
	char name[8];//存放用户输入的名字,一个汉子两个字符,最多四个汉子
	char names[MAX][8] = {"西施","貂蝉","王昭君","杨玉环","赵飞燕"};
	char levelNames[5][8] = {"素人","贵人","贵妃","皇贵妃","皇后"};
	char emperorName[50];//皇帝的名号
	int level[MAX] = {0,0,0,0,0,-1};//用来存放每个妃子的等级,-1表示未启用
	int loves[MAX] = {100,100,100,100,100,-1};
//用来存放每个妃子的韩感度,-1表示未启用
	printf("*******************************\n");
	printf("*******************************\n");
	printf("请输入当前等级的皇帝名号:\n");
	scanf("%s",emperorName);// 录入字符串不需要&
	printf("*******************************\n");
//打印面板
while(1)
{
	day += 1;
	printf("*******************************\n");
	printf("*******************************\n");
	printf("第%d天\n",day);
	printf("                               \n");
	for(i = 0;i < count;i++)
	{
		if(loves[i] < 60)
		{tempcount3++;}
	}
	if(tempcount3 >= 3)//三个妃子数好感度小于60就起义
	{
		printf("后宫失火,皇上你被罢免了!\n");
		tempcount3 = 0;
		break;
	}
	else
	{
	tempcount3 = 0;
	printf("测试代码:查看当前嫔妃的状态\n");
	printf("%-12s级别\t好感度\n","姓名");
	for(i = 0;i < count;i++)
		{
			printf("%-12s%s\t%d\n",names[i], levelNames[level[i]] ,loves[i]);
		}
//	printf("第%d天\n",i + 1);
	printf("*******************************\n");
	printf("1、%s下令选妃!\t(增加)\n",emperorName);
	printf("2、翻牌宠幸\t(修改状态)\n");
	printf("3、打入冷宫\t(删除)\n");
	printf("4、朕的爱妃呢\t(查找)\n");
	//	pritf("第%d天,皇上你选择哪一个:\n",i + 1);
	//	scanf("%d",&chose);
	printf("*******************************\n");
	printf("%s你选择哪一个:\n",emperorName);
	scanf("%d",&chose);
	printf("*******************************\n");
	switch(chose)//一共有4种选择
	{
	case 1:
			//选妃状态,name[][]增加一个字符串,类似于num[]插入一个元素
			//增加数组前要判断有没有空间
			//增加数组元素
		{
			if(count < MAX)
			{
				printf("%s皇上下旨选妃啦!\n",emperorName);
				printf("%s,你选择的妃子是:\n",emperorName);
				scanf("%s",names[count]);//录入字符串不需要&
				//将第count元素的状态
				level[count] = 0;//级别初始为0
				loves[count] = 100;//好感度初始为100
				count++;//添加完元素后计数器+1
			}
			else 
			{	
				printf("%s,后宫已经人满为患了!\n",emperorName);
			}
			break;
		}
	case 2://翻牌宠幸,修改状态//level[i]中i+1,其余的-1
		{ //宠幸的妃子好感度+10,其余的好感度-10 
			printf("%s,您要宠幸哪位娘娘:\n",emperorName); 
			scanf("%s",tempName);
			//字符串的查找strcmp,需要引入一个头文件<string.h>
			//if(strcmp(tempName,"abc") == 0)表示两个相等
			//+1前一个大于后一个   -1前一个小于后一个
			for(i = 0;i < count;i++)
			{
				if(strcmp(tempName,names[i]) == 0)
				tempcount1++;//如果所输入的值在名单目录之中tempcount1 > 0
			}
			if(tempcount1 > 0)//所输入的名字在后宫,然后进行后续操作
			{
				for(i = 0;i < count;i++)
				{
					if(strcmp(tempName,names[i]) == 0)
					{
						loves[i] += 10;//好感度+10
						//级别不能超过5级(0-4之间)
						//*********
						level[i] = level[i] >= 4 ? 4 : level[i] + 1;
					}
					else 
					{
						loves[i] -= 10;//其余妃子好感度-10
					}
				}
				tempcount1 = 0;//标志是否存在的量清零
			}
			else// 所输入的名字不在后宫!
			{
				printf("所输入的名字不在后宫之中!\n");
			}
			break;
		}
	case 3://打入冷宫(删除)
		//1、查找
		//2、后面一个数给前面一个数
		//3、总数--
		{
			printf("请输入要打入冷宫的娘娘:");
			scanf("%s",tempName1);
			//
			for(i = 0;i < count;i++)
         {
            if(strcmp(tempName1,names[i]) == 0)
            {
				   tempcount1++;//如果所输入的值在名单目录之中tempcount1 > 0
					tempDlete = i;//储存要删除的娘娘下标值 
         	}
			}
			if(tempcount1 > 0)
			{	
				tempcount1 = 0;
				//开始删除元素
				for(i = tempDlete;i < count - 1;i++)
				{
				//	names[i] = names[i + 1];//C语言中不支持字符转数组的直接赋值	
			 	//需要使用strcpy函数实现数组的赋值
					strcpy(names[i],names[i + 1]);
					loves[i] = loves[i +1];
					loves[i] -= 10;//其余娘娘姐妹情深,想皇上求情,好感度-10
					level[i] = level[i + 1];
				}
				count--;//妃子数-1
			}
			else 
			{
				printf("该娘娘已经被打入冷宫了\n");
			}
			break;	
		}
	case 4://朕的爱妃呢(查找)
		//1、查找
		//2、增加好感度
		//3、可以使用数组设计诗歌,使用随机数的方式表现皇帝的文采
		{
			printf("%s,您想和哪位娘娘进小树林啊:\n",emperorName);
			scanf("%s",tempName2);
			for(i = 0;i < count;i++)				
			{
				if(strcmp(tempName2,names[i]) == 0)
				{
					tempcount2++;
					temptree = i;//小树林序号
				}
			}
			if(tempcount2 > 0)
			{
				loves[temptree] += 10;	
				tempcount2 = 0;
			}
			else
			{	
				printf("查无此人!\n");
			}
		}
	default:
		{
			break;
		}
	}
	}
	printf("                               \n");
	sleep(1);
	printf("                               \n");
   sleep(1);

}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值