- 数组强化练习2
- 数组强化练习3
- 二维数组的初始化
- 二维数组的存储细节
- 二维数组强化练习走迷宫游戏
- 第1阶段:打印地图
- 第2阶段:获取小人行走方位
- 第3阶段:让小人单步行走
- 完整代码
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");
}
}



