首页 > 编程语言 > 详细

关于C语言数组的小练习--笔记

时间:2019-11-25 22:10:58      阅读:89      评论:0      收藏:0      [点我收藏+]
#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语言关于指针的操作应该是比较难的地方,至少对于我来说,可能笔者比较笨吧……哈哈哈哈哈

关于C语言数组的小练习--笔记

原文:https://www.cnblogs.com/hmy-666/p/11930583.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!