#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这个值,为什么我再强调一次,在函数第一行写了输出还是不行。附测试数据如下:107 8 05 0 69 0 06 0 73 4 02 5 08 0 94 0 01 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;}到底是怎么回事!
2 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
ifstream cin("in.txt");
ofstream cout("out.txt");
cin.close();
cout.close();
没有读取文件的话上面的可以删掉。
函数被调用了,你可以在函数内部加一句:cout<<"ok"<<endl;当你看到ok的时候就知道,函数调用了。
之所以显示一个随机的数字是因为,函数里所有的返回值都是有条件语句控制的,但是又都不满足,因此,并没有返回应有的值。
- 2 回答
- 0 关注
- 500 浏览
添加回答
举报
0/150
提交
取消