牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2017-06-16 投稿人: 浏览次数:412

小游戏:
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
",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("*******************************
");
    printf("*******************************
");
    printf("请输入当前等级的皇帝名号:
");
    scanf("%s",emperorName);// 录入字符串不需要&
    printf("*******************************
");
//打印面板
while(1)
{
    day += 1;
    printf("*******************************
");
    printf("*******************************
");
    printf("第%d天
",day);
    printf("                               
");
    for(i = 0;i < count;i++)
    {
        if(loves[i] < 60)
        {tempcount3++;}
    }
    if(tempcount3 >= 3)//三个妃子数好感度小于60就起义
    {
        printf("后宫失火,皇上你被罢免了!
");
        tempcount3 = 0;
        break;
    }
    else
    {
    tempcount3 = 0;
    printf("测试代码:查看当前嫔妃的状态
");
    printf("%-12s级别	好感度
","姓名");
    for(i = 0;i < count;i++)
        {
            printf("%-12s%s	%d
",names[i], levelNames[level[i]] ,loves[i]);
        }
//  printf("第%d天
",i + 1);
    printf("*******************************
");
    printf("1、%s下令选妃!	(增加)
",emperorName);
    printf("2、翻牌宠幸	(修改状态)
");
    printf("3、打入冷宫	(删除)
");
    printf("4、朕的爱妃呢	(查找)
");
    //  pritf("第%d天,皇上你选择哪一个:
",i + 1);
    //  scanf("%d",&chose);
    printf("*******************************
");
    printf("%s你选择哪一个:
",emperorName);
    scanf("%d",&chose);
    printf("*******************************
");
    switch(chose)//一共有4种选择
    {
    case 1:
            //选妃状态,name[][]增加一个字符串,类似于num[]插入一个元素
            //增加数组前要判断有没有空间
            //增加数组元素
        {
            if(count < MAX)
            {
                printf("%s皇上下旨选妃啦!
",emperorName);
                printf("%s,你选择的妃子是:
",emperorName);
                scanf("%s",names[count]);//录入字符串不需要&
                //将第count元素的状态
                level[count] = 0;//级别初始为0
                loves[count] = 100;//好感度初始为100
                count++;//添加完元素后计数器+1
            }
            else 
            {   
                printf("%s,后宫已经人满为患了!
",emperorName);
            }
            break;
        }
    case 2://翻牌宠幸,修改状态//level[i]中i+1,其余的-1
        { //宠幸的妃子好感度+10,其余的好感度-10 
            printf("%s,您要宠幸哪位娘娘:
",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("所输入的名字不在后宫之中!
");
            }
            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("该娘娘已经被打入冷宫了
");
            }
            break;  
        }
    case 4://朕的爱妃呢(查找)
        //1、查找
        //2、增加好感度
        //3、可以使用数组设计诗歌,使用随机数的方式表现皇帝的文采
        {
            printf("%s,您想和哪位娘娘进小树林啊:
",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("查无此人!
");
            }
        }
    default:
        {
            break;
        }
    }
    }
    printf("                               
");
    sleep(1);
    printf("                               
");
   sleep(1);

}
    return 0;
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。