首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为啥把t+1换成t++就不行了

2012-08-27 
为什么把t+1换成t++就不行了#includestdio.h#includemath.hstatic int count 0,int X[8]int Place(i

为什么把t+1换成t++就不行了
#include<stdio.h>
#include<math.h>
static int count =0,int X[8];
int Place(int t);
void Show();
void BackTrack(int t);

int Place(int t)
{
  int k;
  for( k = 0; k < t; k++)
  {
if( X[k] == X[t] || abs(t - k) == abs(X[t] - X[k]) )
return 0;
  }
  return 1;
}

void Show()
{
count++;

printf("第%d种摆法: \n",count);

int i,j;
for( i = 0; i < 8; i++)
{
for(j = 0; j < 8; j++)
if(X[i] == j) printf("Q ");
else printf("* ");
printf("\n");
}
}

void BackTrack(int t)
{
if(t == 8) Show();
else
{
  int i;
for( i = 0; i < 8; i++)
{
X[t] = i;
if(Place(t)) 
BackTrack(t+1);
 
 
}
}
}

void main()
{
BackTrack(0);


}




[解决办法]
这个和你程序的逻辑有关.

C/C++ code
void BackTrack(int t){    if(t == 8) Show();    else    {          int i;        for( i = 0; i < 8; i++)        {            X[t] = i;            if(Place(t))                  BackTrack(t+1);        }    }}
[解决办法]
你用++t当循环一次后,t的值就改变了,而用t+1,t的值不会变
[解决办法]
16楼正解,t+1给函数传递的是t+1的结果,t的值不变。t++给函数传递的是t,然后t的值+1。++t给函数传递的是t+1,t的值+1
[解决办法]
t的值不能变。

你用++t当循环一次后,t的值就改变了,而用t+1,t的值不会变

[解决办法]
1) C里面好多问题是不好理解的,要寻找解决,对自己的代码有把握;
2) 比如优先级用括号来解决, ++i或i++ 用变量替换,如a = i + 1 (i++)或a = i; i++ (++i),这是比较笨的方法,但是很有用。类似的问题在C里是很多的,LZ可以总结出自己的方法。
3)优良的代码总是让人很好理解,难以理解的代码会失去维护的价值。

热点排行