go语言迷宫代码 go语言nil

Go语言基础语法(一)

本文介绍一些Go语言的基础语法。

创新互联专注于红古企业网站建设,响应式网站开发,商城开发。红古网站建设公司,为红古等地区提供建站服务。全流程定制网站开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

先来看一个简单的go语言代码:

go语言的注释方法:

代码执行结果:

下面来进一步介绍go的基础语法。

go语言中格式化输出可以使用 fmt 和 log 这两个标准库,

常用方法:

示例代码:

执行结果:

更多格式化方法可以访问中的fmt包。

log包实现了简单的日志服务,也提供了一些格式化输出的方法。

执行结果:

下面来介绍一下go的数据类型

下表列出了go语言的数据类型:

int、float、bool、string、数组和struct属于值类型,这些类型的变量直接指向存在内存中的值;slice、map、chan、pointer等是引用类型,存储的是一个地址,这个地址存储最终的值。

常量是在程序编译时就确定下来的值,程序运行时无法改变。

执行结果:

执行结果:

Go 语言的运算符主要包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符以及指针相关运算符。

算术运算符:

关系运算符:

逻辑运算符:

位运算符:

赋值运算符:

指针相关运算符:

下面介绍一下go语言中的if语句和switch语句。另外还有一种控制语句叫select语句,通常与通道联用,这里不做介绍。

if语法格式如下:

if ... else :

else if:

示例代码:

语法格式:

另外,添加 fallthrough 会强制执行后面的 case 语句,不管下一条case语句是否为true。

示例代码:

执行结果:

下面介绍几种循环语句:

执行结果:

执行结果:

也可以通过标记退出循环:

--THE END--

数据结构迷宫问题(c语言)

#includestdio.h

#includestring.h

#includestdlib.h

#includetime.h

int m,n,num,map[101][101],f[101][101],a[101],b[101],d[2][4]={0,-1,0,1,-1,0,1,0},ans,flag;

void maze()

{

int i,j;

time_t t;

srand(time(t));

for(i=0;im;i++)

for(j=0;jn;j++)

{

map[i][j]=rand()%2;

if(map[i][j])

num++;

}

if(numm*n/2)

{

for(i=0;im;i++)

for(j=0;jn;j++)

if(!map[i][j])

map[i][j]+=rand()%2;

}

map[0][0]=1;

map[m-1][n-1]=1;

}

void print()

{

int i,j;

for(i=0;im;i++)

for(j=0;jn;j++)

{

printf("%d ",map[i][j]);

if(j==n-1)puts("");

}

}

void dfs(int x,int y)

{

int i,tx,ty;

if(!flag)

return;

for(i=0;i4;i++)

{

tx=x+d[0][i];

ty=y+d[1][i];

if(!f[tx][ty]tx=0ty=0txmtynmap[tx][ty])

{

f[tx][ty]=1;

a[ans]=tx;

b[ans++]=ty;

if(tx+ty==0)

{

printf("(%d,%d)\n",m,n);

for(flag=i=0;ians;i++)

printf("(%d,%d)\n",a[i]+1,b[i]+1);

return;

}

dfs(tx,ty);

f[tx][ty]=0;

ans--;

}

}

}

int main()

{

while(scanf("%d%d",m,n),m+n)

{

memset(f,0,sizeof(f));

num=ans=0;

flag=1;

maze();

print();

dfs(m-1,n-1);

if(flag)

puts("There is no path");

}

return 0;

}

c语言的迷宫问题

//寻路_带权重_带障碍_最短_文件地图_不闪------wlfryq------//

#include stdio.h

#include stdlib.h

#include string.h

#include windows.h

typedef struct

{

int x;

int y;

} _PT;

_PT pt;

int row=0,col=0;

//设置CMD窗口光标位置

void setxy(int x, int y)

{

COORD coord = {x, y};

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

//获取当前CMD当前光标所在位置

void getxy()

{

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

COORD coordScreen = {0, 0}; //光标位置

CONSOLE_SCREEN_BUFFER_INFO csbi;

if (GetConsoleScreenBufferInfo(hConsole, csbi))

{

pt.x=csbi.dwCursorPosition.X;

pt.y=csbi.dwCursorPosition.Y;

}

}

typedef struct

{

int x;

int y;

int type;

int v;

}PT;

PT **s=NULL,stack[50],start,end,c;

int pos=0;

void prt()

{

int i,j;

system("cls");

for(i=0;irow;i++)

{

for(j=0;jcol;j++)

{

if(s[i][j].type==1)

{

printf("■");

}

else if(i==end.x  j==end.y)

{

printf("★");

}

else if(i==c.x  j==c.y)

{

printf("◎");

}

else

{

printf("  ");

}

}

printf("\n");

}

Sleep(500);

}

void stack_in(PT a)

{

stack[pos++]=a;

}

PT stack_out()

{

int i;

PT t;

t=stack[0];

for(i=0;ipos-1;i++)

{

stack[i]=stack[i+1];

}

pos--;

return t;

}

void fun()

{

PT a;

int x,y,v;

while(1)

{

if(pos==0)

{

break;

}

a=stack_out();

x=a.x;

y=a.y;

if(x==start.x  y==start.y)

{

break;

}

v=s[x][y].v;

if(x-1=0  s[x-1][y].type==0  (s[x-1][y].v==-1 || s[x-1][y].vv+1))

{

s[x-1][y].v=v+1;

stack_in(s[x-1][y]);

}

if(x+1=row-1  s[x+1][y].type==0  (s[x+1][y].v==-1 || s[x-1][y].vv+1))

{

s[x+1][y].v=v+1;

stack_in(s[x+1][y]);

}

if(y-1=0  s[x][y-1].type==0  (s[x][y-1].v==-1 || s[x-1][y].vv+1))

{

s[x][y-1].v=v+1;

stack_in(s[x][y-1]);

}

if(y+1=col-1  s[x][y+1].type==0  (s[x][y+1].v==-1 || s[x-1][y].vv+1))

{

s[x][y+1].v=v+1;

stack_in(s[x][y+1]);

}

}

}

void go(int x, int y)

{

printf("\n按任意键开始\n");

getchar();

int v;

while(1)

{

if(x==end.x  y==end.y)

{

setxy(0,y+2);

printf("end....");

return;

}

v=s[x][y].v;

if(v==0)

{

return;

}

if(x-1=0  s[x-1][y].v==v-1)

{

c=s[x-1][y];

setxy(y*2,x);

x=x-1;

printf("  ");

setxy(y*2,x);

printf("◎");

Sleep(500);

continue;

}

else if(x+1=row-1  s[x+1][y].v==v-1)

{

c=s[x+1][y];

setxy(y*2,x);

x++;

printf("  ");

setxy(y*2,x);

printf("◎");

Sleep(500);

continue;

}

else if(y-1=0  s[x][y-1].v==v-1)

{

c=s[x][y-1];

setxy(y*2,x);

y--;

printf("  ");

setxy(y*2,x);

printf("◎");

Sleep(500);

continue;

}

else if(y+1=col-1  s[x][y+1].v==v-1)

{

c=s[x][y+1];

setxy(y*2,x);

y++;

printf("  ");

setxy(y*2,x);

printf("◎");

Sleep(500);

continue;

}

}

printf("\nreturn go\n");

system("pause");

}

void GetMapFromFile()

{

int i,j,x,y,len;

char ch[50]={'\0'};

FILE* fp=fopen("e:\\map1.txt","r");

if(fp==NULL)

{

printf("open file failed.\n");

return;

}

x=0;

while(!feof(fp))

{

fgets(ch,50,fp);

row++;

}

col=strlen(ch);

fseek(fp,0L,SEEK_SET);

while(!feof(fp))

{

fgets(ch,50,fp);

if(s==NULL)

{

len=strlen(ch);

for(i=len-1;i0;i--)

{

if(ch[i]!='0'  ch[i]!='1')

{

ch[i]='\0';

}

else

{

break;

}

}

len=strlen(ch);

s=(PT**)malloc(sizeof(PT*)*row);

for(j=0;jlen;j++)

{

*(s+j)=(PT*)malloc(sizeof(PT)*len);

}

}

y=0;

for(i=0;ilen;i++)

{

s[x][y].type=ch[i]-48;

s[x][y].x=x;

s[x][y].y=y;

s[x][y].v=-1;

y++;

}

x++;

}

start=s[row-2][1];

end=s[row-2][len-2];

fclose(fp);

}

int main()

{

GetMapFromFile();

int i,j;

int x,y;

x=end.x;

y=end.y;

s[x][y].v=0;

stack_in(end);

fun();

c=start;

prt();

go(start.x,start.y);

return 0;

}


文章名称:go语言迷宫代码 go语言nil
浏览路径:http://myzitong.com/article/dojigee.html