运行后弹出标题为find source的对话框,让我找output.c怎么了解决
#include<stdio.h>
#include<stdlib.h>
char situation[4][200],oldplan[200],plan[5]={1<<4,1,2<<4,2,1<<4|1};
unsigned short times=1;void Solution(char b)
{
unsigned short oldtimes=times-1;
situation[0][times]=situation[0][oldtimes]-b*((plan[oldplan[times]]&0xF0)>>4);
situation[1][times]=situation[1][oldtimes]-b*(plan[oldplan[times]]&0xF);
situation[2][times]=situation[2][oldtimes]+b*((plan[oldplan[times]]&0xF0)>>4);
situation[3][times]=situation[3][oldtimes]+b*(plan[oldplan[times]]&0xF);
}
bool Repeat(char b)
{
for(unsigned short i=0;i<times;i++)
{
if(situation[0][times]==situation[0][i]&&
   situation[1][times]==situation[1][i]&&
   situation[2][times]==situation[2][i]&&
   situation[3][times]==situation[3][i]&&
   ((times&1)?1:-1)==b)
   return true;
   return false;
}
}
void main()
{
char b=1;
situation[0][0]=situation[1][0]=3;
situation[2][0]=situation[3][0]=oldplan[0]=0;do
{
Solution(b);
if ((situation[0][times]<situation[1][times]&&situation[0][times])||
   (situation[2][times]<situation[3][times]&&situation[2][times])||
   situation[0][times]<0||situation[1][times]<0||
   situation[2][times]<0||situation[3][times]<0||
   Repeat(b)==true)
{
   p:
   oldplan[times]++;
   if (oldplan[times]>4)
   {
    times--;
    b=-b;
    oldplan[times]=0;
    if (!times)
     break;
    goto p;
   }   continue;}
   oldplan[times]=0;
   b=-b;
   times++;
}
while (!(situation[0][times- 1]==0 && situation[1][times- 1]==0 &&
  situation[2][times- 1]==3 && situation[3][times- 1]==3));
for(unsigned short i=0;i<times;i++)
printf("%n %n\t %n %n\n",
    situation[0][times],
    situation[1][times],
    situation[2][times],
    situation[3][times]);
system("pause");

解决方案 »

  1.   

    这代码有什么用,调试起来按到手累,看到眼花,死循环do 

    Solution(b); 
    if ((situation[0][times] <situation[1][times]&&situation[0][times])|| 
      (situation[2][times] <situation[3][times]&&situation[2][times])|| 
      situation[0][times] <0||situation[1][times] <0|| 
      situation[2][times] <0||situation[3][times] <0|| 
      Repeat(b)==true) 

      p: 
      oldplan[times]++; 
      if (oldplan[times]>4) 
      { 
        times--; 
        b=-b; 
        oldplan[times]=0; 
        if (!times) 
        break; 
        goto p; 
      } 
      continue; 这里根本过不去~懶得调试看数值了
      

  2.   

    回答楼主的问题:1、你的这段代码所在文件就是叫output.c吗
    2、如果是,那就是你的VC工程设置有问题,让你选择一下output.c所在路径就可以了。
    3、如果不是,那可能就是你的工程使用了一些.lib库文件,并且关联一个叫output.c文件,
    刚才你又没有这个output.c文件,那就点取消好了,VC会用汇编语言方式继续调试,
    除了看不太明白汇编语言的真正含义,其它的没有影响。
      

  3.   


    printf("%n %n\t %n %n\n", 
        situation[0][times], 
        situation[1][times], 
        situation[2][times], 
        situation[3][times]); 这里是有问题的,situation[a][b]是char型的,而%n要求后面的参数是int*,参数不匹配当然错了
    需要改成
    printf("%u %u\t %u %u\n", 
       (int) situation[0][times], 
       (int) situation[1][times], 
       (int) situation[2][times], 
       (int) situation[3][times]); 注意:类型转换和格式化控制符都是必须的
      

  4.   

    VC调试出错时会自动定位到源代码上,因为你没有安装VC的源代码,所以找不到,取消即可。把错误定位到自己的源代码上,查看哪个变量或参数有问题。