以上情况出现在函数内
#include <iostream>
using namespace std;
int b[35][35],step=-1,ms;
int m,n,s1,s2,e1,e2,i,j;
char a[35][35];
void find(int x,int y)
{
step++;
if(b[x][y]>step||b[x][y]==0)
{
b[x][y]=step;
int ms;
把int ms改为ms=0就不对,为什么
ms=step;
if(a[x-1][y]!='X' && x!=1) find(x-1,y);
step=ms;
if(a[x][y+1]!='X' && y!=n) find(x,y+1);
step=ms;
if(a[x][y-1]!='X' && y!=1) find(x,y-1);
step=ms;
if(a[x+1][y]!='X' && x!=m) find(x+1,y);
step=ms;
}
else
return;
}
int main()
{
cin>>m>>n;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
cin>>s1>>s2>>e1>>e2;
find(s1,s2);
cout <<b[e1][e2];
return 0;
}
您看一下我补充的题目。谢谢
追答你这个是全局变量和局部变量的区别,如果你不在函数里面定义int ms的话,你对ms的所有操作是对全局变量的操作(包括赋值,及其他的操作),而且只要程序不结束,你的每次改变的数据,将保留在这个全局变量里面
如果你想在函数内部定义以及局部变量ms这样的话,这个ms只在函数里面起作用,而且,它随着函数的消失而消失,不会保存数据,并且这个局部变量屏蔽全局变量,全局变量起不到作用,
这个要看你想怎么用啊,你如果想保存数据,就用全局的饿,不想保留的话,用局部的,不过,为了防止混淆,你如果不想保留数据时,建议你换一个局部变量
你的注释那个地方我试了,换成ms=0是可以的,况且这种情况咱经常用,绝对没有语法错误,我是在vc6.0上运行的,要不你换个编译器试试
是没有语法错误,但是运行结果不一样
追答这就是你的程序其他地方或者算法设计有问题了,就不是这个问题了,你下去在调试调试,
不要怕调试,好的程序是调出来的不是写出来的
C++里int ms和ms=0有什么区别?
1,如果是在不同函数里面出现 说明那是全局变量和局部变量的区别了 可以推断出,你的int ms是在函数里面定义了一个局部变量 ms=0;是对全局变量的赋值 2,如果是在一个函数里面出现,会出现两种情况第一种是,int ms是定义局部变量,而ms=0 是给定义的这个变量赋值,第二种情况是,外面有一个同名...
c++中int和INT有什么区别?
int是一个数据类型, 而INT可以是宏, 标识符, typedef定义的数据类型, 类类型.但是它一般是用到和int有关的地方.
c语言中为什么int s=0和int s,然后s=0的结果不一样?
两个程序中的s行为不一样。在第一个程序定里,a递增时,s一直在叠加。在第二个程序里,a递增时,s会重新置0。所以,并不是int s=0;和int s; s=0;的问题,两者无差别。C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方...
c++语言中,函数声明,用int和void有什么区别?
用int 声明的函数返回值是int类型,void声明的函数没有返回值,我认为可以相当于pascal里的“过程“(procedure)。其实对函数的理解应该是:执行完函数之后将函数所在的位置用函数的返回值取代。没有返回值的函数的作用就是对传给函数的参数做出一些处理,所以pascal里才叫做procedure,但是在C++里就直接声...
在C++中 void main()与int main()有什么区别???
是有去区别的,int main()表示函数的返回值为int类型,而void main则表示的是空的类型,是不一样的
C语言中inti(1), sum(0)什么意思?
【1】int是C++语言中基本数据类型中的整型。【2】sum指的是返回某一单元格区域中的数、逻辑值及数字的文本表达式之和。【3】int i(1),sum(0);即int i=1,sum=0;意思是把字母i定义为整型常量,把i赋值为1。把具有“总和”意思的英文单词sum定义为整型常量,把sum赋值为0。【4】延伸一下:...
在C++中,int main和void main有什么区别??
main()是省略了返回值类型,C语言会默认认为成main的类型为int,在main()的函数体内要返回一个值,如return 0;而void main()的返回值是void类型,也就是说没有返回值。这样在main()的函数体内你就不用写return 0;或者return 1;之类的返回语句。在一个程序中,可以说你看不出两者的差别,因为...
unsigned和int有什么区别?
首先,一个为非负整数,一个为整数。unsigned只能取到大于等于0的整数。其次,两者取值范围不同。C和C++语言中基本的数据类型有:字符型(char),整形(short, int, long), 浮点型(float, double)同时字符型和整形还可以继续分为带符号的和不带符号的,默认情况下都是带符号的,如果想使用不带...
...函数Time()和Time( int=0, int=0, int=0)有什么区别么?
Time(int=0,int=0,int=0)则是接受了3个参数,只不过都有默认值,所以你在调用时可以省略0~3个参数 带默认参数的函数如果你没给他指定一个值,编译器会帮你自动把没赋值的参数设为原型声明里默认值,在这里都是0 比如有构造函数 Time( int a = 0, int b = 0, int c = 0 )对于下列...
c++中int 和int*有什么不同?
int是声明整型变量的关键字;int*是声明整型指针变量的关键字。比如:int a;就声明了一个整型变量,变量名是a。声明之后,你可以赋值货计算,如:a=8;a=a+2;而int*只能声明整型指针变量,如int*b;声明的b是一个指向整型变量的指针,它只能存放地址。如:b=&a;,b就指向了整型变量a。由于b只能...