数组的推箱子应用()艰难的进程

2020.9.28数组:

1.一维数组

2.二维数组

3.多维数组

数组===》

数据结构:就是帮助我们更好的管理和使用数据!!!

变量 数组 结构体 链表 队列 栈 堆 hash 树图。。。

变量:存储一个数据(数据是有数据类型的)

int x = 40; x=45

表示50个人的体重

int x,x1,x2,x3...x//50个变量去存储50个数据

数组可以解决这个麻烦的问题

数组:帮助我们存储一组相同类型的数据'

1.定义 类型名 变量名【数字】 中括号的数据表示当前能够存储的数据个数

数组在内存中是一段连续的空间,每个元素的类型是一样的

一维数组的初始化:

#include<stdio.h>
int main(){
   //int x[5]//数组的名字叫做x 这个数组可以帮助我们存储5个int类型的数据
       int x[5]={10,20,30,40,50};//第一种
   printf("%d\n",x[0]);//最普通的数组的初始化(把数组中的数据拿出来)
   printf("%d\n",x[1]);
   printf("%d\n",x[2]);
   printf("%d\n",x[3]);
   printf("%d\n",x[4]);
   
   
   
   int x[5]={10,20,30};
   printf("%d\n",x[0]);//10
   printf("%d\n",x[1]);//20
   printf("%d\n",x[2]);//30
   printf("%d\n",x[3]);//0
   printf("%d\n",!x[4]);//1
   
   
   
   
   return 0
}

几何

点 变量 int x;

线 一维数组 int x[5]

面 二维数组 int date4 ={{5,10,20}{20,5,5}{30,10,20}{50,20,60}}

              //列0  1   2  //行
int date[4][5] ={{5 ,10,20}//0
                {20,5 ,5 }//1
                {30,10,20}//2
                {50,20,60}}//3
//数字60在3行2列
printf("%d\n',date[2][3]);

二维数组的定义与使用

int array[2][3];//定义了一个二维数组,有两个array

二维数组初始化

int a[3][4]={{1,2,3,4,}{5,6,7,8,}{9,10,11,12}}
              //列0  1   2  //行
int date[4][5] ={{5 ,10,20}//0
                {20,5 ,5 }//1
                {30,10,20}//2
                {50,20,60}}//3
//计算第二列的所有值的和
int SUM = 0,i;
for(i=0;i<4;i++){
   sum += date{[i][2];
}
   printf("Sun=%d\n",sum);
   
   
//计算斜线
  int sum = 0,i,m;
for (i = 0; i < 3; i++){
for (m = 0; m < 3; m++) {
if (m == i){
sum += date[i][m];
}
}
}
printf("sum=%d\n", sum);
return 0;
}

   
   

 

#include<stdio.h>//全方格简易代码
int main(){
int map[6][5] = { 0 };
int i, m;
for (i = 0; i < 6; i++){
for (m = 0; m < 5; m++){
if (!map[i][m]){
printf("■");
}
}
printf("\n");
}
return 0;
}

地图PIUS

#include<stdio.h>
int main(){
int map[6][6] = {
{1, 1, 1, 1, 1, 1,},
{2, 4, 2, 2, 3, 1,},
{1, 2, 3, 2, 2, 1,},
{1, 2, 3, 3, 2, 1,},
{1, 2, 3, 2, 2, 1,},
{1, 1, 1, 1, 2, 1,}
};
int i, m;
for (i = 0; i < 6; i++){
for (m = 0; m < 6; m++){
switch (map[i][m]){
case 1:printf("█");break;
case 2:printf(" ");break;
case 3:printf("〒");break;
case 4:printf("囧");break;
}
}
printf("\n");
}
return 0;
}

地图确定人物位置

for(dy=0;dy<6;dy++){//行
   int flag=0;//标记
   for(dx=0;dx<5;dx++){//列
       if(map[dy][dx]==4){//找到人物位置
           flag=1;
       break;//退出小循环
  }
}
if(flag)break;//退出大循环
}
printf("%d,%d\n,dy,dx");//就是人物的坐标位置

地图控制人物的走动

...
#include<conio.h>
...
   while (1){
switch (_getch()){
case'w':
map[dy][dx] = 2;
dy = dy - 1;
map[dy][dx] = 4; break;
case's':
map[dy][dx] = 2;
dy = dy + 1;
map[dy][dx] = 4;
break;
case'a':
map[dy][dx] = 2;
dx = dx - 1;
map[dy][dx] = 4; break;
case'd':
map[dy][dx] = 2;
dx = dx + 1;
map[dy][dx] = 4; break;
}
for (i = 0; i < 6; i++){
for (m = 0; m < 6; m++){
switch (map[i][m]){
case 1:printf("█"); break;
case 2:printf(" "); break;
case 3:printf("〒"); break;
case 4:printf("囧"); break;
}
}
printf("\n");
}
}
return 0;
}

(但有个缺陷就是遇到墙壁或树就会把他们变成空地)

改良版:

#include<stdio.h>
#include<conio.h>
int main(){
int map[6][6] = {
{1, 1, 1, 1, 1, 1,},
{2, 4, 2, 2, 3, 1,},
{1, 2, 3, 2, 2, 1,},
{1, 2, 3, 3, 2, 1,},
{1, 2, 3, 2, 2, 1,},
{1, 1, 1, 1, 2, 1,}
};
int i, m;
for (i = 0; i < 6; i++){
for (m = 0; m < 6; m++){
switch (map[i][m]){
case 1:printf("█");break;
case 2:printf(" ");break;
case 3:printf("〒");break;
case 4:printf("囧");break;
}
}
printf("\n");
}
int dy ,dx;
for (dy = 0; dy<6; dy++){//行
int flag = 0;//标记
for (dx = 0; dx<6; dx++){//列
if (map[dy][dx] == 4){//找到人物位置
flag = 1;
break;//退出小循环
}
}
if (flag)break;//退出大循环
}
printf("%d,%d\n,dy,dx");//就是人物的坐标位置
while (1){
switch (_getch()){
case'w':
map[dy][dx] = 2;
dy = dy - 1;
if (map[dy][dx] ==1||map[dy][dx]==3){
dy = dy + 1 ;
printf("no way\n");
}
map[dy][dx] = 4;
break;
case's':
map[dy][dx] = 2;
dy = dy + 1;
if (map[dy][dx] == 1 || map[dy][dx] == 3){
dy = dy - 1;
printf("no way\n");
}
map[dy][dx] = 4;
   break;
case'a':
map[dy][dx] = 2;
dx = dx - 1;
if (map[dy][dx] == 1 || map[dy][dx] == 3){
dx = dx + 1;
printf("no way\n");
}
map[dy][dx] = 4;
break;
case'd':
map[dy][dx] = 2;
dx = dx + 1;
if (map[dy][dx] == 1 || map[dy][dx] == 3){
dx = dx - 1;
printf("no way\n");
}
map[dy][dx] = 4;
break;
}
for (i = 0; i < 6; i++){
for (m = 0; m < 6; m++){
switch (map[i][m]){
case 1:printf("█"); break;
case 2:printf(" "); break;
case 3:printf("〒"); break;
case 4:printf("囧"); break;
}
}
printf("\n");
}
}
return 0;
}

完美!

posted @ 2020-09-28 17:12  你得不到的枣子哥  阅读(45)  评论(0)    收藏  举报