为什么函数没有被调用?该怎么操作呢?

#include <iostream> 
#include <fstream>
using namespace std;
int lt[1001]={0},rt[1001]={0};
int visit(int p)
{
if (p==0) return 0;
int a=visit(lt[p]);
int b=visit(rt[p]);
if (a>b) return a+1;
if (b>a) return b+1;
}
int main()
{
ifstream cin("in.txt");
ofstream cout("out.txt");
int n,cn,d1,d2,i;
cin>>n;
for (i=1;i<n;i++)
{
cin>>cn>>d1>>d2;
lt[cn]=d1;
rt[cn]=d2;
}
cout<<visit(1);
cin.close();
cout.close();
}
在visit函数内部加入输出语句后,发现那个值根本没有输出……函数没有被调用,但是输出了16389这个值,为什么
我再强调一次,在函数第一行写了输出还是不行。附测试数据如下:
10
7 8 0
5 0 6
9 0 0
6 0 7
3 4 0
2 5 0
8 0 9
4 0 0
1 2 3 
刚才又去试了一下,删除了文件语句,直接手动输入,发现函数内部的东西还是打印出来了……为什么两种方式会不同? 
谢谢你这么热心……不过能不能不要匿名,百度Hi聊要好一点……
发现好像输入输出文件的作用域只在于主函数——现在附带问题出现了,怎么在调用的函数里面也使用文件输出? 

妈的,太诡异了,我把程序改成这样,然后把文件从c盘拷到d盘,就没问题了,而且答案正确!
#include <iostream> 
using namespace std;
int lt[1001]={0},rt[1001]={0};
int visit(int p)
{
if (p==0) return 0;
int a=visit(lt[p]);
int b=visit(rt[p]);
return (a>b?a:b)+1;
}
int main()
{
int n,cn,d1,d2,i;
cin>>n;
for (i=1;i<n;i++)
{
cin>>cn>>d1>>d2;
lt[cn]=d1;
rt[cn]=d2;
}
n=visit(1);
cout<<n;
cin>>n;
}

到底是怎么回事!

倚天杖
浏览 501回答 2
2回答

慕哥6287543

ifstream cin("in.txt");ofstream cout("out.txt");cin.close();cout.close();没有读取文件的话上面的可以删掉。函数被调用了,你可以在函数内部加一句:cout<<"ok"<<endl;当你看到ok的时候就知道,函数调用了。之所以显示一个随机的数字是因为,函数里所有的返回值都是有条件语句控制的,但是又都不满足,因此,并没有返回应有的值。
打开App,查看更多内容
随时随地看视频慕课网APP