栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

X606C语言程序设计部分03

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

X606C语言程序设计部分03

X606C语言程序设计部分03
  • 数组强化练习2
  • 数组强化练习3
  • 二维数组的初始化
  • 二维数组的存储细节
  • 二维数组强化练习走迷宫游戏
    • 第1阶段:打印地图
    • 第2阶段:获取小人行走方位
    • 第3阶段:让小人单步行走
    • 完整代码

数组强化练习2

void printNotAppearNum(){
    // 1. 提示用户如何输入数据
    printf("请输入3个0-9的整数,以逗号隔开,以回车结束n");
    // 2. 定义变量保存用户输入的数据
    int a,b,c;
    // 3. 接收用户输入的数据
    scanf("%i,%i,%i",&a,&b,&c);
    // 4. 通过循环获得0-9中所有的数
    for (int i = 0; i < 10; i++) {
        // 5. 判断当前拿到的数是否输出过,没有出现就输出0
        if (i == a || i == b || i == c) {
            continue;
        }
        printf("%i",i);
    }
}
数组强化练习3
void sortInputNums() {
    // 1.提示用户输入数据
    printf("请输入5个0-9的数字,以回车结束n");
    // 2.定义变量保存用户输入的数据,并初始化tmp数组
    int inputVal;
    int tmp[10] = {0};
    // 3.接收用户输入的数据
    for (int i = 0; i < 5; i++) {
        scanf("%i",&inputVal);
        // 4.将用户输入的数据,作为数组的索引操作数组
        tmp[inputVal] = 1;
    }
    // 5.遍历数组,取出所有元素
    for (int j = 0; j < 10; j++) {
        // 6.判断当前元素有没有存取数据,有的话就取出
        if(tmp[j] == 1) {
            printf("%i",j);
        }
    }
}

修改后的代码

void sortInputNums() {
    // 1.提示用户输入数据
    printf("请输入5个0-9的数字,以回车结束n");
    // 2.定义变量保存用户输入的数据,并初始化tmp数组
    int inputVal;
    int tmp[10] = {0};
    // 3.接收用户输入的数据
    for (int i = 0; i < 5; i++) {
        scanf("%i",&inputVal);
        // 4.将用户输入的数据,作为数组的索引操作数组
        tmp[inputVal] = 1 + tmp[inputVal];
    }
    // 5.遍历数组,取出所有元素
    for (int j = 0; j < 10; j++) {
        // 6.判断当前元素有没有存取数据,有的话就取出
        // if(tmp[j] == 1) {
        //     printf("%i",j);
        // }
        for (int i = 0; i < tmp[j]; ++i) {
            printf("%i",j);
        }
    }
}
二维数组的初始化
	
    // 1.定义的时候初始化
    // 1.1.定义的时候完全初始化
    int nums[2][3] = {
            {1,2,3},{4,5,6}
    };
    // 1.2.定义的时候部分初始化
    int nums1[2][3] = {
            {5,6}
    };
    // 1.3.定义时初始化的注意点
    
    int num2[][3] = {
            {1,2,3},
            {4,5,6}
    };

    int num3[2][3] = {1,3,5,7,9,2};
二维数组的存储细节
	
    char str[2][3] = {
            {'a','b','c'},
            {'d','e','f'}
    };
    
    printf("%pn",&str);
    printf("%pn",&str[0]);
    printf("%pn",&str[0][0]);

二维数组强化练习走迷宫游戏

第1阶段:打印地图
void printMap(char map[6][6],int row,int col) {
    for (int i = 0; i < row; ++i) {
        for (int j = 0; j < col; ++j) {
            printf("%c",map[i][j]);
        }
        printf("n");
    }
}


int main() {

    // 1.定义二维数组保存地图
    char map[6][6] = {
            {'#','#','#','#','#','#'},
            {'#','P',' ','#',' ',' '},
            {'#',' ','#','#',' ','#'},
            {'#',' ',' ','#',' ','#'},
            {'#','#',' ',' ',' ','#'},
            {'#','#','#','#','#','#'},
    };
    // 技术亮点
    int row = sizeof(map) / sizeof(map[1]);
    int col = sizeof(map[1]);

    printMap(map,row,col);
    
    return 0;
}
第2阶段:获取小人行走方位
char getLowerCase(char ch) {
    // 判断是否是大写字母
    if (ch >= 'A' && ch <= 'Z') {
        return ch + ('a' - 'z');
    }
    return ch;
}


char getDirection() {
    // 3.提示用户输入数据
    printf("请输入w a s d其中1个字符,控制小人走出迷宫n");
    // 4.定义变量存储用户数据并接受用户输入数据
    char ch;
    scanf("%c",&ch);
    ch = getLowerCase(ch);
    return ch;
}

int main() {
    

    // 1.定义二维数组保存地图
    char map[6][6] = {
            {'#','#','#','#','#','#'},
            {'#','P',' ','#',' ',' '},
            {'#',' ','#','#',' ','#'},
            {'#',' ',' ','#',' ','#'},
            {'#','#',' ',' ',' ','#'},
            {'#','#','#','#','#','#'},
    };
    // 技术亮点
    int row = sizeof(map) / sizeof(map[1]);
    int col = sizeof(map[1]);

    // 2.打印地图
    printMap(map,row,col);

    // 3.获取行走的方向
    char ch = getDirection();
}
第3阶段:让小人单步行走
void personMove(char ch, char map[6][6]) {
    // 4.2.判断用户输入的方向
    switch (ch) {
        case 'w':
            if (map[p_row - 1][p_col] != '#') {
                map[p_row][p_col] = ' ';
                map[p_row - 1][p_col] = 'P';
                // 4.3.修改小人现有的位置
                map[p_row - 1][p_col] = 'P';
            }
            break;
        case 'a':
            if (map[p_row][p_col - 1] != '#') {
                map[p_row][p_col] = ' ';
                map[p_row][p_col - 1] = 'P';
                // 4.3.修改小人现有的位置
                map[p_row][p_col - 1] = 'P';
            }
            break;
        case 's':
            if (map[p_row + 1][p_col] != '#') {
                map[p_row][p_col] = ' ';
                map[p_row + 1][p_col] = 'P';
                // 4.3.修改小人现有的位置
                map[p_row + 1][p_col] = 'P';
            }
            break;
        case 'd':
            if (map[p_row][p_col + 1] != '#') {
                map[p_row][p_col] = ' ';
                map[p_row][p_col + 1] = 'P';
                // 4.3.修改小人现有的位置
                map[p_row][p_col + 1] = 'P';
            }
            break;
        default:
            printf("请输入正确的方向n");
    }
    printMap(map, 6,6);
}
完整代码
// 4.1.获取小人当前的位置
int p_row = 1;
int p_col = 1;
// 出口位置
int end_row = 1;
int end_col = 5;


void printMap(char map[6][6], int row, int col) {
    // 清空屏幕
    system("cls");
    for (int i = 0; i < row; ++i) {
        for (int j = 0; j < col; ++j) {
            printf("%c", map[i][j]);
        }
        printf("n");
    }
}


char getDirection() {
    // 3.提示用户输入数据
    printf("请输入w a s d其中1个字符,控制小人走出迷宫n");
    // 4.定义变量存储用户数据并接受用户输入数据
    char ch;
    scanf("%c", &ch);
    // 清空缓冲区
    setbuf(stdin,NULL);
    return ch;
}

void personMove(char ch,char map[6][6]);

int main() {
    

    // 1.定义二维数组保存地图
    char map[6][6] = {
            {'#', '#', '#', '#', '#', '#'},
            {'#', 'P', ' ', '#', ' ', ' '},
            {'#', ' ', '#', '#', ' ', '#'},
            {'#', ' ', ' ', '#', ' ', '#'},
            {'#', '#', ' ', ' ', ' ', '#'},
            {'#', '#', '#', '#', '#', '#'},
    };
    // 技术亮点
    int row = sizeof(map) / sizeof(map[1]);
    int col = sizeof(map[1]);

    printMap(map, row, col);

    do{
        // 3.获取行走的方向
        char ch = getDirection();
        // 4.让小人动起来
        personMove(ch,map);
        // 2.打印地图
        printMap(map, row, col);
        // 判断有没有到出口
        if (p_col == end_col && p_row == end_row) {
            break;
        }
    }while(1);

    printf("您已经走出迷宫");
    return 0;
}


void personMove(char ch, char map[6][6]) {
    // 4.2.判断用户输入的方向
    switch (ch) {
        case 'w':
            if (map[p_row - 1][p_col] != '#') {
                map[p_row][p_col] = ' ';
                map[p_row - 1][p_col] = 'P';
                // 4.3.修改小人现有的位置
                map[p_row - 1][p_col] = 'P';
                // 修改现有位置的坐标
                p_row = p_row - 1;
            }
            break;
        case 'a':
            if (map[p_row][p_col - 1] != '#') {
                map[p_row][p_col] = ' ';
                map[p_row][p_col - 1] = 'P';
                // 4.3.修改小人现有的位置
                map[p_row][p_col - 1] = 'P';
                p_col = p_col - 1;
            }
            break;
        case 's':
            if (map[p_row + 1][p_col] != '#') {
                map[p_row][p_col] = ' ';
                map[p_row + 1][p_col] = 'P';
                // 4.3.修改小人现有的位置
                map[p_row + 1][p_col] = 'P';
                p_row = p_row + 1;
            }
            break;
        case 'd':
            if (map[p_row][p_col + 1] != '#') {
                map[p_row][p_col] = ' ';
                map[p_row][p_col + 1] = 'P';
                // 4.3.修改小人现有的位置
                map[p_row][p_col + 1] = 'P';
                p_col = p_col + 1;
            }
            break;
        default:
            printf("请输入正确的方向n");
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656373.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号